2013-05-10 4 views
11

これも可能ですか?gSoapを使用した非ブロッキングRPC呼び出し

私は知っている、私はone-way asynchronous communicationを作ることができますが、私は双方向にしたい。言い換えれば

Asynchronous, acknowledged, point-to-point connection using gSoapに関連here(3 RDオプション)

を説明したように、私は、request/response patternについて尋ねたが、 -blockingだ - 私はしたいのですが(n)ack sの非同期、あまりに

+0

WSClientは、WCLientがSOAPRequestをSOAPResponce(双方向)で受信できるかどうか(片方向)を受け取ったときに、常にWSServerと通信するイニシアティブを持っています。しかし、この動作はサービス記述(WSDL)で定義されています。 – nms

+0

@nms - 本当ですが、これは私が求めていることではありません。私の編集内容を確認してください。 –

+0

見てください:http://twistedmatrix.com/documents/current/historic/ipc10paper.htmlおよびhttp://stackoverflow.com/questions/5374968/is-network-event-based-programming-really-better 私はこれがあなたの後であると思います。 – Stolas

答えて

0

私はそれが基本的な使用法では不可能だと思うが、それを作るために 唯一の方法は、二つの方法が応答「コールの結果」

0経由で

しかし、あなたはthatsのは、あなたが原因
2]建築家の再あなたのAPIので、NAT /ファイアウォールなどのインターネット上で行うことができない場合]ちょっとしたトリック 1を使用してクライアント側で別のSERVER2を作成し、サーバー からそのサーバー2を呼び出すか、する場合がありますそのクライアントは、最初に応答したサーバに基づいてサーバを再び呼び出す。

+1

ええ、それは私が考えることができる唯一の解決策です。これは機能しますが、それでもブロックされます。したがって、これを避けるには、新しいスレッドを開始する必要があります。それが私が避けようとしていることです。 –

0

両方の側にclient - serverを持つことができます。たとえば、システム1とシステム2にクライアント・サーバーを持つことができます(サーバーとして受信者を指定し、サーバーとして受信者を指定します)。 sys1クライアントからsys2サーバーに非同期メッセージを送信します。 sys1からメッセージを受信すると、sys2クライアントからsys1サーバーに非同期応答を送信できます。これは、非同期双方向通信を行う方法です。

+0

はい、いいえ。はい、私はこれを行うことができるようです、私はこれについて考えました。そして、 "いいえ" - 私は、同じTCP **(または何が移送であろうと)接続に**応答を出すことを望んでいる(あなたが示唆しているのは、双方向の2つの接続を作成するだろう) –

0

あなたが回答してリクエストを関連付ける方法が必要です。通常のRPCでは、タイムラインによって関連付けられます。応答は、別の応答が発生する前に応答に続きます。

一般的な解決策は、要求と共に鍵を送信することです。返信は同じキーを参照します。これを行うと、双方向ノンブロッキングRPCは2つの一方向ノンブロッキングRPC接続の特殊なケースになります。このキーは、一般にrequest-idやnoinceのようなものです。

関連する問題