У нас есть служба шифрования, которую мы открыли по сети. tcp. В большинстве случаев сервис используется для шифрования / дешифрования строк. Однако время от времени нам необходимо шифровать большие документы (pdf, JPG, bmp и т. д.).
Каковы наилучшие настройки конечной точки для подобного сценария? Должен ли я принимать / возвращать поток? Я много читал об этом, но никто не дает указаний, что делать, если большой файл встречается нечасто.





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