NetTcpBindingを使用してデュプレックスWCFサービスを作成している最中です。アーキテクチャに関する質問に遭遇しました。答えはわかっていると思いますが、間違っていることを願っています。
私たちのサービスはステートフルであり、NetTcpBindingwithを選択しましたPerSession
InstanceContextMode
。さまざまな理由から、これは私たちが必要としているものです。大きなインターフェイス(操作の大きなブロックが多くのクライアントに適用されない場合)を、操作が論理的にグループ化された複数の小さなインターフェイスに分割しようとしています。単一のサービス実装ですべてのコントラクトを実装するのは簡単ですが、複数のサービスコントラクトで単一のチャネル(または、私の要件では、単一のセッション)を共有できるかどうかはわかりません。これを機能させるには、間違いなくそれができる必要があります。
もちろん、すべてを1つのコントラクトに含めてFaultException
、無効な操作が実行されたときにsをスローすることもできますが、これらを分割して、適用できないコントラクトのエンドポイントを追加することさえできないようにしたいと思います。私が探しているものは可能ですか?
TL; DRバージョン:
私はこれを行うことができる必要があります:
[ServiceContract]
public interface IServiceA
{
[OperationContract]
void Foo();
}
[ServiceContract]
public interface IServiceB
{
[OperationContract]
void Bar();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service : IServiceA, IServiceB
{
...
}
また、クライアントからサービスへの1つのセッションを確立できますが、との両方IServiceA
を使用しIServiceB
ます。