1
在我们的WCF项目中,我们使用singleton pattern
来获取客户端代理。在Singleton上实现IDisposable是否正确
基本上因为 -
- 后所需的任何功能增强,客户对象添加
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
接口。所以我认为在这里实现这个接口没有任何坏处。
谢谢!
我可能是错的,但我没有看到你关闭连接好像你尝试引用/创建新的连接,而不是关闭原来的 –
那么,是你的IDisposable的实现? –
@TonyHopkinson在此处添加代码。 – Abhijeet