我有一个应用程序一遍又一遍地重用相同的WCF通道.我通过工厂对象保留静态引用.我想知道这是好的实践还是我应该打开x频道并通过这些频道循环所有服务呼叫而不是使用单一频道?
如果仅使用1个通道,这些服务调用是否会排队,或者当我使用x通道时会发生同样的情况吗?
Dar*_*rov 11
您应该为所有请求使用单个通道工厂,但应为每个请求构建不同的通道.切勿重复使用频道 它们创建起来并不昂贵,也不是线程安全的.创建的成本是渠道工厂.它是线程安全的,可以重复使用.当然,如果通道工厂进入故障状态,您可能需要重新打开它.
@Darin Dimitrov
重用相同的代理 在许多情况下,您可能希望重用相同的代理.这具有最佳性能.当您使用安全功能时尤其如此,因为初始安全协商可能会产生高成本.
代理等于渠道.如果您查看此博文,您可以看到以下代码段:
ISimpleContract proxy = factory.CreateChannel();
((IClientChannel)proxy).Open();
Run Code Online (Sandbox Code Playgroud)
此外,如果您计划使用会话,则不希望为每个请求建立新会话(通过每次创建新的通道/代理).