私は、指定されたオブジェクトのプロパティ(例えば「要求」など)に従って異なる外部Webサービスを呼び出すWebサービスを設計しています。これらのWebサービスへの参照は、Visual Studio 2008の「Web参照の追加」メニューから追加されます。これは、承知しているように、System.ServiceModel.ChannelBase<ISomeInterface>
から継承する各エンドポイントのプロキシクラスを作成します(ISomeInterface
は特定のサービスのWSDL )。静的クラスでのWCFプロキシのカプセル化
質問は、たとえば、すべてのプロキシの内部リストを含む単一のServiceManager
(たとえば)静的クラスにこれらのすべてのプロキシをカプセル化したいと思います。そのため、一方では所定のサービスは、メインアプリケーションの周囲に散在する代わりにServiceManager
を通過することができ、一方、新たなプロキシクラスへの参照を単純に追加することによって、後に追加され得る新しいサービスをServiceManager
に知らせることができる。
私は
public static class ServiceManager
{
#region Properties
public static Dictionary<string, TProxy> ServiceList { get; private set; }
#endregion
}
ようServiceManager
をdesingingについて考えたが、私は別のプロキシのすべてがServiceManager.ServiceList["ServiceName"]
を使用して呼び出すことができるように、私はによってTProxy
を交換する必要があるかわかりません。誰もがこれで私を助けることができますか?
'ClientBase'は、プロキシのために良いベースのインタフェースである' ICommunicationObject'を実装します。しかし、プロキシはシングルトンではなく、過渡的なオブジェクトです。 – Randolpho
確かに。 ServiceManagerをシングルトンにすることができます。プロキシがFaulted状態になったら、それを再インスタンス化する必要があることを理解してください。 –
かなり。また、 'IDisposable'も実装していますが、実際には' using'ステートメントを使用するべきではありません。想像してみてください...ディスソップ可能なシングルトン。 – Randolpho