我一直了解到,从未使用使用调用WCF服务这样最佳实践来调用WCF服务
using (Service.YourClientProxy client = new Service.YourClientProxy())
{
var time = client.Time();
}
所以我总是用这个来调用服务
YourClientProxy clientProxy = new YourClientProxy();
try
{
.. use your service
clientProxy.Close();
}
catch(FaultException)
{
clientProxy.Abort();
}
catch(CommunicationException)
{
clientProxy.Abort();
}
catch (TimeoutException)
{
clientProxy.Abort();
}
时声明
我一直在阅读我的计算器,我已阅读此文章here Service.cs类取自stackoverflow
我想知道这是否是一个很好的习惯来调用WCF服务,这是否真的关闭了服务?
public static class Service<TChannel>
{
public static ChannelFactory<TChannel> ChannelFactory = new ChannelFactory<TChannel>("*");
public static TReturn Use<TReturn>(Func<TChannel, TReturn> codeBlock)
{
var proxy = (IClientChannel)ChannelFactory.CreateChannel();
var success = false;
try
{
var result = codeBlock((TChannel)proxy);
proxy.Close();
success = true;
return result;
}
finally
{
if (!success)
{
proxy.Abort();
}
}
}
}
从这样的客户端调用服务。
var time = Service<Service.YourServiceChannel>.Use(resultAsync =>
{
return resultAsync.TimeAsync();
});
我做了一个参考,并阅读了这篇文章,但我不清楚最佳做法。我也在问,我提到的代码示例是否确实关闭了连接。 – user3046164