私は C# で 2 つのアプリケーションを作成しています (一方向のみ)。2 つのアプリは常に同じマシン上で実行されるため、WCF と名前付きパイプを使用し、WCF サービスを自己ホストすることが論理的な選択のように思えました。
InstanceContextModeを使用して、サービス インスタンスがセッションごと、呼び出しごとにインスタンス化されるか、またはインスタンスが 1 つだけ存在する必要があるかを構成できることを理解しています。私の場合は、1 つのインスタンスが必要です。これは、2 つのアプリだけを実行するためです。つまり、1 つのクライアントと 1 つのサーバーが存在します。
しかし、ここで私は立ち往生しています。私のクライアントがサービスを呼び出すとき、私はこのようにしています:
var myServiceFactory = new ChannelFactory<IMyService>(
new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyService"));
IMyService myService = myServiceFactory.CreateChannel();
myService.DoStuff();
サーバー上に新しいサーバー オブジェクト インスタンスを作成したくありません。代わりに、サーバー上で既に構築されている (唯一の) IMyService インスタンスをmyServiceが指すようにしたいと考えています。現時点では、2 番目の IMyService インスタンスが構築されます。
つまり、クライアントが最初に呼び出しを行ったときではなく、(サーバーの起動時に) サーバーによってサーバー オブジェクトが構築されるようにしたいということです。
誰でもこれを行う方法を説明できますか? 私が理解していることから、.NET Remoting はこれを非常に簡単にし、WCF はおそらく Remoting を置き換えたので、簡単な方法があるに違いありません...そうですか?