我应该在需要时使用客户端代理还是在开始时打开它们?

时间:2011-01-25 22:27:48

标签: .net wcf

我有一个WCF客户端应用程序,它由大约5个代理组成,这些代理在应用程序的整个生命周期中都建立了自己的连接。客户端运行的持续时间不长(少于1分钟)。

我最初只是在需要时调用代理上的方法,这似乎减轻了我必须调用“proxy.Open()”。我想代理只是在第一次方法调用后自动打开。

现在我想知道在调用方法之前我是否应该明确地在代理上调用“proxy.Open()”?另外,我应该在客户端应用程序的开头打开所有这些,特别是因为运行时间不到1分钟?有最好的做法吗?我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

当您的代理将在多个线程中使用时,显式调用Open是优选的,如此article中所述。

答案 1 :(得分:0)

打开连接很便宜,因此每次创建代理都不会导致严重的性能问题。

如果您的异常处理不是100%防弹,则一些例外可能会使您的代理处于故障状态。如果您为所有呼叫保留一个代理,则必须在每次呼叫之前检查它是否仍然有效。在这种情况下,为每个调用创建新代理可以帮助您。

注意:修复异常处理仍然是TODO。

另一方面,如果您的异常处理是健壮的并且基于FaultException,那么保留一个代理应该没问题。