单个WCF信道性能与多个信道

时间:2011-09-02 09:01:31

标签: c# wcf

我有一个应用程序一遍又一遍地重用相同的WCF频道。我通过工厂对象保留静态引用。我想知道这是不是很好,或者我应该打开x频道并通过这些频道循环所有服务电话而不是使用单一频道?

如果只使用1个频道,这些服务调用是否会排队?或者当我使用x频道时会发生同样的情况吗?

2 个答案:

答案 0 :(得分:11)

您应该为所有请求使用单个通道工厂,但应为每个请求构建不同的通道。切勿重复使用频道它们创建起来并不昂贵,也不是线程安全的。创建的成本是渠道工厂。它是线程安全的,可以重复使用。当然,如果通道工厂进入故障状态,您可能需要重新打开它。

答案 1 :(得分:6)

@Darin Dimitrov

  

重复使用相同的代理   在许多情况下,您可能希望重用相同的代理。这具有最佳性能。当您使用安全功能时尤其如此,因为初始安全协商可能会产生很高的成本。

代理等于渠道。如果您查看this blog post,则可以看到以下代码段:

ISimpleContract proxy = factory.CreateChannel();
((IClientChannel)proxy).Open();

此外,如果您计划使用会话,则不希望为每个请求建立新会话(通过每次创建新的频道/代理)。