将大文件传递给WCF服务

6
我们有一个加密服务,已经通过net.tcp公开。大多数情况下,该服务用于加密/解密字符串。然而,偶尔会有加密大型文档(pdf,JPG,bmp等)的需求。
在这种情况下,最佳的端点设置是什么?我应该接受/返回一个流吗?我已经阅读了很多相关资料,但没有人给出指导,说明在大文件不经常出现时该怎么做。
2个回答

4

MSDN非常详细地描述了如何启用WCF上的流式传输

请注意,如果客户端和服务器之间的链接需要加密,则需要"自己编写"加密机制。默认的net.tcp加密需要X.509证书,这对于流而言不起作用,因为这种加密需要一次性处理整个消息而不是字节流。

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

关于如何添加自定义行为扩展,有一个非常好的参考在这里:该文档还介绍了如何提供自定义配置(我认为此时MSDN文档中没有讨论这个问题)。


1
一种可以遵循的模式是在共享文件系统位置上使用异步服务处理文件:
  1. 将要加密的文件放置在共享位置上
  2. 调用服务并告诉它加密文件,同时传递文件的位置和名称,以及客户端上回调服务的地址
  3. 服务会对文件进行加密,并将加密副本放置在共享位置(与未加密文件放置的位置相同或不同都无所谓)
  4. 服务会回调给客户端,提供加密文件的名称和位置
  5. 客户端可以获取加密文件

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接