我们有一个通过 net.tcp 公开的加密服务。大多数时候,该服务用于加密/解密字符串。然而,我们时不时地需要加密大型文档(pdf、jpg、bmp 等)。

对于这样的场景,最佳端点设置是什么?我应该接受/返回流吗?我读过很多相关内容,但没有人指导大文件不经常出现时该怎么做。

有帮助吗?

解决方案

MSDN 描述 如何通过 WCF 启用流式传输 相当好。

请注意,如果客户端和服务器之间的链接需要加密,那么您需要“推出自己的”加密机制。默认 net.tcp 加密需要 X.509 证书,该证书不适用于流,因为这种加密需要一次性处理整个消息而不是字节流。

反过来,这意味着您将无法使用默认的 WCF 安全机制对客户端进行身份验证,因为身份验证需要加密。据我所知,唯一的解决方法是在客户端和服务器上实现您自己的自定义行为扩展来处理身份验证。

关于如何添加自定义行为扩展的一个非常好的参考是 这里:该文档还介绍了如何提供自定义配置(我认为目前 MSDN 文档中没有讨论过这些内容)。

其他提示

您可以遵循的一种模式是使用一个异步服务来处理共享文件系统位置上的文件:

  1. 将要加密的文件放在共享位置
  2. 调用服务并告诉它加密文件,传递文件的位置和名称以及客户端上回调服务的地址
  3. 该服务将加密文件并将加密的副本放置在共享位置(与放置未加密的位置相同或不同,无关紧要)
  4. 该服务将回调客户端,给出加密文件的名称和位置
  5. 客户端可以检索加密文件
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top