Передача больших файлов в службу WCF - PullRequest
6 голосов
/ 05 сентября 2008

У нас есть сервис шифрования, который мы показали через net.tcp. Большую часть времени служба используется для шифрования / дешифрования строк. Однако время от времени нам необходимо шифровать большие документы (pdf, jpg, bmp и т. Д.).

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

Ответы [ 2 ]

4 голосов
/ 07 сентября 2008

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

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

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

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

1 голос
/ 05 сентября 2008

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

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