WCF客户端对象中包含哪些状态?

时间:2010-07-16 20:58:57

标签: silverlight wcf

就像标题所说的那样,我很想知道WCF客户端代理对象中包含什么状态 - 我是否应该随意新增大量的这些并且不关心?或者他们是更重量级的我不应该如此骑士创造它们?

1 个答案:

答案 0 :(得分:3)

并不是真的 - 通信渠道的链接,它的状态 - 就是它。 WCF往往是非常无状态的,所以你的客户端和服务器都不会真正挂起很多状态。

客户端代理生成的成本分为两部分:

  • 首先,需要创建一个ChannelFactory<T>T是您的服务合同,例如IMyService)。这部分是相当重量级的,所以如果可以,请缓存渠道工厂

  • 第二,频道工厂用于创建实际频道 - 这是一个非常简单的操作,你不应该费心去缓存它。

如果您在Visual Studio中使用了Add Service Reference功能,或者在命令行中使用了svcutil.exe,那么通常会得到一个(YourService)Client类 - 这基本上封装了这两个步骤你。

如果您感觉有优化的冲动,请查看这个两步流程,看看您是否可以使它工作,如果缓存工厂(从而限制工厂实例化的数量)对您有所帮助。