0

同じ wcf サービス インスタンスを使用する 2 つのアプリケーションがあります。これら 2 つのアプリケーションは常にペアで開始されるため、これら 2 つの 2 番目、3 番目、または 4 番目のインスタンスを持つことができます。これは、4 つのインスタンス ペアすべてに共通のエンドポイント アドレスを使用して、たとえば Windows サービス、IIS、またはコンソール アプリによってホストされている 1 つの wcf サービスを用意する必要があるということですか? または、個々のペアが 2 つのアプリケーションのいずれかで独自のホストと自己ホストを持つように、エンドポイント アドレスを動的にハードコーディングした場合、それは各ペアが独自のサービスにアクセスできることを意味しますか?

おそらくこれをベンチトップでテストできますが、経験のある人がそれを理解しようとするだけで、コーディング時間をかなり節約できると思います。

更新(明確にするため):

この質問の理由は、私が取り組んでいる特定の状況によるものです。シナリオは、2 つのアプリケーションに、私が開発している 1 つのクライアント exe と、私が制御できないサードパーティの exe が含まれているというものです。サードパーティの exe がロードできる dll を開発できます。私のサードパーティ アプリ dll とクライアント exe の間で、WCF サービスはプロセス空間をブリッジして、2 つがトランザクション情報を通信できるようにすることを目的としています。これにより、クライアント exe がサードパーティの exe とそれが管理するファイルを制御できるようになります。

4

1 に答える 1

1

これは、一部は回答であり、一部は長いコメントです。:)

WCF サービスを考える 1 つの方法は、2 つの別個のアプリケーション間でメッセージをやり取りすることです。非常に一般的なレベルでは、ステートフル サービスを作成する正当な理由はたくさんありますが、一般的にステートレスの方がよいと考えられています。これは、呼び出すたびに、実行するために必要なすべての情報を渡すことを意味し、サービスは以前に実行されたことを記憶する必要はありません。

個別のインスタンスについて心配しているという事実は、サービスに状態があることを示唆しています。複数のエンドポイントがあなたの状況に適しているとは思いません。

アプリケーション「ペア」が起動したときに最初にできることは、サービスから一意の ID を要求することです。その時点から、サービスへのすべてのメッセージにこの ID が含まれ、サービスはそれに応じてメッセージを処理します。サービス アプリケーションが状態を維持している場合、この ID をキーとして使用して、呼び出しを処理するためにアクセスする情報を識別します。

この時点で、ほとんどの WCF システムが設計されているように、1 つのサーバー上に 1 つのサービス アプリケーションと複数のクライアント アプリケーションを配置することになります。

更新されました。「WCF: Instance Management Per-Call and Per-Session」をグーグルで検索する必要があると思います。クライアントは、クライアントから接続を開き、それを開いたままにしておくことができるはずです。WCF は、サーバー上に新しいインスタンスを自動的に作成します。つまり、「アプリケーション ペア ID」は必要ありませんが、セッションを開いたままにしておく必要があります。

于 2013-09-27T18:08:28.920 に答える