Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Передача и получение файлов


Автор: Compositum 5.5.2016, 10:29
WCF, .NET 4.6.1

Доброго времени суток. Изучаю WCF. Написал простую службу и клиента. Служба получает файл, обрабатывает его и возвращает обратно результат обработки. Файл передаю и возвращаю в виде массива байтов:

Код

/// <summary>
/// DWG file resaving.
/// </summary>
/// <param name="source">The byte array of the source DWG file.</param>
/// <param name="dwgVersion">DWG file target version (enum).</param>
/// <returns>The result (the byte array) of DWG file resaving.</returns>
[OperationContract]
byte[] SaveAs(byte[] source, DwgVersion dwgVersion);


Тестировал на локальной машинке и в доменной сети - пока работает без проблем.

Вопрос: насколько рационально передавать файлы сервису и получать их обратно в виде простого массива байтов? Есть ли какие-то подводные камни у такого способа и если есть, то какие общепринятые альтернативы (контейнеры для передачи файлов), которые обычно используются в подобных ситуациях?

Спасибо.

Автор: mihryak 12.5.2016, 18:16
Подводным камнем может стать размер файлов. В какой-то степени может помочь увеличение wcf-квот в конфигурации сервиса и клиента, но, если по-правильному, то https://msdn.microsoft.com/ru-ru/library/ms733742%28v=vs.110%29.aspx будет более правильным решением.

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)