2008-09-05 139 views
6

我们有一个我们通过net.tcp暴露的加密服务。大多数情况下,该服务用于加密/解密字符串。然而,我们现在需要加密大型文档(pdf,jpg,bmp等)。将大文件传递给WCF服务

像这样的场景的最佳端点设置是什么?我应该接受/返回流吗?我已经阅读了很多这方面的内容,但是没有人会指导大文件不经常出现时该怎么做。你可以遵循

回答

4

MSDN介绍how to enable streaming over WCF相当好。

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

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

关于如何添加自定义行为扩展的一个非常好的参考是here:这也记录了如何提供自定义配置(我认为此时不会在MSDN文档中的任何地方讨论过)。

1

一种模式是有一个异步服务,在文件工作在一个共享的文件系统位置:

  1. 放置在文件上的共享位置进行加密
  2. 呼叫服务,并告诉它加密文件,传递文件的位置和名称以及客户端回调服务的地址
  3. 该服务将加密文件并将加密副本放置在共享位置(与未加密被放置或不同,无所谓)
  4. 服务将回调到客户端,使加密文件
  5. 的名称和位置,客户端可以检索加密文件