单个WCF通道性能vs多个通道

本文关键字:通道 vs 性能 WCF 单个 | 更新日期: 2023-09-27 18:07:23

我有一个应用程序,它一遍又一遍地重用相同的WCF通道。我通过工厂对象保持静态引用。我想知道这是否是一种好的做法,或者我应该打开x个通道并在这些通道上轮询所有服务调用,而不是使用单个通道?

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

单个WCF通道性能vs多个通道

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

@Darin Dimitrov

重用相同的代理在许多情况下,您可能希望重用相同的代理。这个性能最好。当您使用安全特性时尤其如此,因为初始安全协商的成本可能很高。

proxy = channel。如果您查看这篇博客文章,您可以看到以下代码片段:

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

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