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