Передача больших файлов в службу WCF

У нас есть служба шифрования, которую мы раскрываем по сети. TCP. В большинстве случаев сервис используется для шифрования/дешифрования строк. Однако время от времени нам нужно шифровать большие документы (pdf, JPG, bmp и т. д.).

Каковы наилучшие настройки конечной точки для такого сценария? Должен ли я принять/вернуть поток? Я много читал об этом, но никто не дает указаний, что делать, когда большой файл встречается нечасто.


person Esteban Araya    schedule 05.09.2008    source источник


Ответы (2)


MSDN довольно хорошо описывает как включить потоковую передачу через WCF.

Обратите внимание: если связь между клиентом и сервером должна быть зашифрована, вам нужно будет «свернуть свой собственный» механизм шифрования. Шифрование net.tcp по умолчанию требует сертификатов X.509, которые не будут работать с потоками, поскольку этот тип шифрования должен работать со всем сообщением за один раз, а не с потоком байтов.

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

Действительно хорошее руководство по добавлению настраиваемых расширений поведения находится здесь: это также документирует, как предоставить пользовательскую конфигурацию (что-то, что, я думаю, нигде не обсуждается в документах MSDN в настоящее время).

person Jeremy McGee    schedule 06.09.2008

Один шаблон, которому вы могли бы следовать, — иметь асинхронную службу, которая работает с файлами в общей файловой системе:

  1. Поместите файл для шифрования в общедоступное место
  2. Вызовите службу и скажите ей зашифровать файл, передав расположение и имя файла, а также адрес службы обратного вызова на клиенте.
  3. Служба зашифрует файл и разместит зашифрованную копию в общем месте (там же, где была размещена незашифрованная информация, или в другом, не имеет значения).
  4. Служба перезванивала клиенту, сообщая имя и местонахождение зашифрованного файла.
  5. Клиент может получить зашифрованный файл
person Guy Starbuck    schedule 05.09.2008