WCF客户端,是否参考?

时间:2013-10-17 13:58:47

标签: c# .net wcf

考虑以下情况:

有一个托管WCF服务的Windows服务。

WCF服务在客户端和位于物理上不同的计算机上的AppFabric服务器之间提供接口。它撤回对象,对其进行计算并返回最佳对象。

20-30个客户端可以同时连接到该服务,而不是那么多。

什么会更好,每次在服务上完成查询时创建一个实例,或者将客户端对象作为成员并调用函数。创建一个实例,尝试使用try finally阻止我不喜欢但是客户端连接怎么样,有什么缺点?主机是否可以重新启动并且客户端仍可正常工作?通常/首选的方法是什么?

try
{
  PreOrderService.PreorderServiceClient proxy = new   PreOrderService.PreorderServiceClient("netTcpPreorderService");

  List<PreOrder> preOrders = proxy.FindWallet(preOrder.WalletId);
}
finally
{
  if (proxy.State != CommunicationState.Faulted)
    proxy.Close();
}

1 个答案:

答案 0 :(得分:0)

我更愿意做以下事情:

proxy = newServiceReference1.ServiceDataContractTestClient(); 
try
{ 
    proxy.MetodThrowsException();
    proxy.Close(); 
} 
catch
{ 
    proxy.Abort(); 
    throw; // Or handle exception
}

这不关心服务器连接是否已丢失,并且当proxy.MetodThrowsException()破坏服务器时不会抛出CommunicationObjectFaultedException。

如果您发现它降低了可读性,请将其包装在单独的方法中。