在我们的 WCF 项目中,我们singleton pattern
用于获取客户端代理。
基本上是因为——
- 以后需要的任何增强,在添加
Binding
或的客户端对象上Endpoint
,都需要最少的更改。 - 我们不会同时调用多个服务。
为了确保connection is closed
在每次服务调用后正确,我们计划IDisposable
在单例中实现如下 -
public class ClientSingleton : IDisposable
{
static Service1Client client;
private ClientSingleton()
{
client = new Service1Client();
}
public Service1Client getInstance()
{
if (client != null)
return client;
else
{
client = new Service1Client();
return client;
}
}
public void Dispose()
{
client.Close();
}
}
这是否违反单例Design-Pattern
原则?任何改善这一点的建议都会有所帮助。
编辑:
考虑using block
按如下方式处理客户端对象 -
using (Service1Client client = new Service1Client())
{
client.Operation1();
}
这意味着 WCF 代理实现IDisposable
接口。所以我认为在这里实现这个接口没有任何害处。
谢谢!