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

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

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

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

@Darin Dimitrov

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

代理等于渠道。 如果您查看此博文 ,您可以看到以下代码段:

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

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