使用Message安全性推荐的WCF客户端通道生命周期

时间:2013-04-16 03:24:06

标签: wcf wshttpbinding

在使用Message安全性时,我对WCF客户端通道的生命周期有疑问,但首先,关于我公司的设置和指南的一些注意事项:

  • 我们的客户端 - 服务器应用程序仅供Intranet使用
  • 我们的客户是WPF应用程序
  • 我们公司的WCF使用指南是:
    • 使用wsHttpBinding
    • 使用邮件安全
    • Service InstanceMode:PerCall
    • Service ConcurrencyMode:Multiple

这是我第一次在Intranet设置上使用邮件安全性。以下是我通常使用客户端通道来限制客户端和服务器上保留的资源量以及简单地保持简单的方法:

  1. 实例化+开放频道(使用ChannelFactory)
  2. 进行WCF通话
  3. 尽快关闭/处理频道
  4. 在使用Fiddler 2监控此策略时,我注意到由于Message Security,单个WCF呼叫最终导致5次往返我的服务

    • 3次握手初次往返
    • 实际WCF呼叫的往返1次
    • 1次关闭会话的调用(因为我使用的是PerCall,我假设这更像是IIS级别的安全会话)。

    如果我要关闭Message Security,正如人们所预料的那样,一个WCF结束了...单次往返。

    截至目前,我必须使用Message Security,因为这是我们的指南。考虑到这一点并且知道我们从每个客户端WPF应用程序进行数百个WCF调用会话,您是否会建议打开客户端通道并保持打开以便重复使用而不是每次都处理它?

1 个答案:

答案 0 :(得分:1)

我建议不要先抢先关闭功能,直到你知道它们是已知问题为止。预先优化是不必要的工作。在您发现客户遇到滞后问题之前,我不担心邮件的安全性。在这一点上,尝试一些事情:保持客户开放时间的方法之一;二,尝试将请求分组在一起而不关闭消息安全性;三,考虑缓存,如果可以的话;四,如果消息安全是最后的罪魁祸首,那么尝试不同的方法。我不会只是关闭一些东西,因为我看到了更多的网络流量,直到我知道这是我可以做的绝对最后一件事来提高性能。