Что лучший способ состоит в том, чтобы возвратить большие блоки двоичных данных от веб-сервиса?

JIT является одним аспектом CLR.

Конкретно это - часть, ответственная за изменение CIL/MSIL (после этого названный IL) произведенный компилятором языка оригинала (csc.exe для Microsoft c#, например) в собственный компонент машинного кода текущего процессора (и архитектура, которую это представляет в текущем процессе, например, 32/64bit). Если рассматриваемый блок был ngen'd тогда, процесс JIT является абсолютно ненужным, и CLR выполнит этот код очень хорошо без него.

, Прежде чем метод используется, который еще не был преобразован из промежуточного представления, это - обязанность JIT преобразовать его.
Точно то, когда JIT умрет, является конкретной реализацией, и подлежащей изменению. Однако мандаты дизайна CLR, что JIT происходит прежде соответствующие нормы, выполняются, JVM по контрасту была бы свободна интерпретировать код некоторое время, в то время как отдельный поток создает представление машинного кода.
'нормальный' CLR использует подход тупика перед JIT , где методами JIT, скомпилированный только, поскольку они используются. Это включает наличие начального тупика собственного метода быть косвенностью, чтобы сообщить, что JIT для компиляции метода тогда изменяет первоначальный вызов для пропуска мимо начального тупика. Текущий компактный выпуск вместо этого компилирует все методы на типе, когда он загружается.

Для обращения к добавлению Дженериков.

Это было последним существенным изменением к спецификации IL и JIT с точки зрения его семантики в противоположность его внутренним деталям реализации.

Несколько новых инструкций IL были добавлены, и больше возможностей метаданных было предоставлено для того, чтобы оснастить типы и участников. Ограничения были добавлены на уровне IL также.

, Когда JIT компилирует метод, который имеет универсальные аргументы (или явно или неявно посредством содержания класса) это может настроить различные пути выполнения кода (команды машинного кода) для каждого используемого типа. На практике JIT использует общую реализацию для всех ссылочных типов, так как переменные для них покажут ту же семантику и займут то же место (IntPtr. Размер).

Каждый тип значения генерирует определенный код для него, имея дело с уменьшенным / увеличенный размер переменных на стеке/"куче" является основной причиной этого. Также путем испускания ограниченного кода операции перед вызовами метода много вызовов на не ссылочные типы не должны упаковывать значение для вызова метода (эта оптимизация используется в не универсальные случаи также). Это также позволяет значению по умолчанию поведение быть правильно обработанным и для сравнений с пустым указателем, который не будет разделен как никакая операция в секунду (всегда ложь), когда не тип значения Nullable используется.

, Если попытка предпринята времени выполнения для создания экземпляра универсального типа через отражение тогда, параметры типа будут проверены временем выполнения, чтобы гарантировать, чтобы они передали любые ограничения. Это непосредственно не влияет на JIT, если это не используется в системе типов (вряд ли хотя возможный).

7
задан Epaga 1 October 2009 в 13:55
поделиться

2 ответа

The article "Downloading a Binary File from a Web Service using Axis2 and SOAP with Attachments" describes exactly the solution I was looking for. Big chunks of data are added as attachment to the SOAP response of the webservice using "SOAP with Attachments" (SwA).

I can use a javax.activation.DataSource which provides an InputStream and I do not have to hold the whole file in memory.

3
ответ дан 7 December 2019 в 01:23
поделиться

Instead of returning the data, can you return a temporary URL pointing to this big result saved as a temporary file ? Or can you return your file as a series of smaller results ?

7
ответ дан 7 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: