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
インターフェイスを実装することを意味します。したがって、このインターフェイスをここに実装しても害はありません。
ありがとう!