考虑以下情况:
有一个托管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();
}
答案 0 :(得分:0)
我更愿意做以下事情:
proxy = newServiceReference1.ServiceDataContractTestClient();
try
{
proxy.MetodThrowsException();
proxy.Close();
}
catch
{
proxy.Abort();
throw; // Or handle exception
}
这不关心服务器连接是否已丢失,并且当proxy.MetodThrowsException()破坏服务器时不会抛出CommunicationObjectFaultedException。
如果您发现它降低了可读性,请将其包装在单独的方法中。