一部のクライアントにサービスを提供すると同時に、他のリモート サービスと通信するアプリケーションを実装する必要があります。つまり、このアプリケーションはクライアントのサーバーである必要がありますが、リモート サービスのクライアントでもある必要があります。リモート サービスとの通信とクライアントとの通信の両方で、コールバックを使用して NetTcpBinding を使用する必要があります。
- リモート サービスに要求を送信し、コールバックで応答を受信する必要があります。
- クライアントからリクエストを受信し、コールバックを使用してクライアントにレスポンスを送信する必要があります。
これら 2 種類の通信は別々のスレッドで開発する必要がありますが、共有データに同時にアクセス (読み取りと書き込み) する必要があります。リモート サービス。
アプリケーションの 2 つの側面を 2 つの別々のスレッドで実装し、1 つ以上のシングルトン オブジェクトを使用して、クライアントまたはリモート サービスから受信した共通データを共有できます。Queue<T>
シングルトン オブジェクトとして共有を使用できます (T
はリモート サービスまたはクライアントから受信したデータのタイプです)。同様に、リモート サービスからデータを受信すると、それらを同じキューに入れます。最後に、キューに入れられたデータが読み取られます。一部のデータはリモート サービスに送信され、他のデータはクライアントに送信されます。
Queue<T>
共有オブジェクトが必要だと思います。ServiceHost
次に、クライアントのインスタンスを作成するスレッドが必要です。そして
ServiceHost
、リモート サービスのプロキシをインスタンス化する別のスレッド。- それが正しいか?それとも、よりシンプルで効率的な OOP ソリューションはありますか?
- キュー内のデータのリダイレクトを処理する方法は? 理論的には、(リモート サービスまたはクライアントから) 受信したデータはすぐに処理されてリダイレクトされる可能性がありますが、問題は、サーバー側 (クライアントからデータを受信する側) がデータの一部をリダイレクトするためにクライアント側を使用する可能性があることです。ただし、クライアント側は他のリモート サービスからのデータの受信でビジー状態になっている可能性があります。
インターネットで入手できる完全な例を教えていただけますか?