Как обработать большие загрузки файла через WCF?

Я изучаю использование WCF для проекта, который потребовал бы способности к людям загрузить большие файлы (64MB-1GB) на мой сервер. Как я обработал бы это с WCF, возможно со способностью возобновить загрузки.

Для обработки более многочисленной клиентской базы я хотел проверить JSON через WCF. Как это влияло бы на загрузку файла? Это может быть сделано от JSON, или они должны были бы переключиться на REST для части загрузки?

16
задан esac 20 December 2009 в 06:29
поделиться

3 ответа

Если вы хотите загрузить большие файлы, вам определенно нужно посмотреть в Режим потоковой передачи WCF.

В основном, вы можете изменить режим передачи на вашей привязке; по умолчанию он буферизован, т.е. все сообщение должно быть буферизировано на отправителе, сериализовано, а затем передано как единое целое.

С помощью Streaming вы можете определить либо одностороннее (только для закачек, только для скачивания), либо двунаправленное потоковое вещание. Это делается путем установки режима transferMode вашей привязки на StreamedRequest, StreamedResponse, или просто Streamed.

<bindings>
   <basicHttpBinding>
      <binding name="HttpStreaming" 
               maxReceivedMessageSize="2000000"
               transferMode="StreamedRequest"/>
   </basicHttpBinding>
</bindings>

Тогда у Вас должен быть сервисный договор, который либо получает параметр типа Stream (для загрузки), либо возвращает значение типа Stream (для загрузки).

[ServiceContract]
public interface IFileUpload
{
    [OperationContract]
    bool UploadFile(Stream stream);
}

Это должно сработать!

.
19
ответ дан 30 November 2019 в 22:17
поделиться

Вы можете использовать webHttpBinding с потоковой передачей TransferMode и одним параметром Stream или ответом Stream (при необходимости) для загрузки / загрузки больших файлов, но вам придется отправлять любые метаданные запроса через URL-адреса и / или заголовки, если только вы не собираетесь разрабатывать собственное обрамление в Stream. Однако вам придется создать собственный клиент, отличный от HTML (например, Silverlight, Flash и т. Д.), Поскольку браузеры не поддерживают произвольный доступ к локальным файлам, а обычная загрузка файла будет представлять собой сообщение формы, а не JSON.

0
ответ дан 30 November 2019 в 22:17
поделиться

MTOM оптимизирован для обработки больших двоичных данных.

1
ответ дан 30 November 2019 в 22:17
поделиться
Другие вопросы по тегам:

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