2

Linuxホスト上の1つのアプリケーションが、VM内のWin7x64上のアプリケーションからプロシージャを呼び出すようにします。ソケットを使用する必要があるため、LinuxホストでVMを実行することは重要ではないと思います。この計画にどのようにアプローチしますか?インターネット上にそのためのライブラリはありますか?

編集:

さて、私はそれらすべてを見てみました。XMLRPCはSOAPの一種の前身のようです。Prototbufは、大きなオブジェクトの簡単なシリアル化に重点を置いているように思えます。だから私の決断はSOAPにかかっています。しかし今、私は使いやすいc++バインディングを探しています。私はapacheaxis2マニュアルの数ページを読みましたが、それ以外は使い勝手が良く、とにかくCで読みました。

私の特定のケースでの別の質問は次のとおりです。呼び出されたプロシージャの署名を知っているので、テキスト形式で呼び出して応答するプロシージャを識別するために、いくつかのテキスト番号とパラメータを送信する方が簡単ではありませんか?

Edit2: SOAPは単なる標準であり、RPCは好奇心が強いので(IP上の関数ポインターのようなものを想像してください:D)、それらすべてが解決策ではありません。しかし、ZeroMQは確かに進歩です。

4

3 に答える 3

2

RPCには魔法はありません。ZeroMQとGoogleprotobufの組み合わせを見てみることをお勧めします。ZeroMQは、非常に使いやすいメッセージングシステム(通信レイヤー)です。REQ/REPパターンを使用します。Google protobufは、メッセージの記述とシリアル化/逆シリアル化に使用されます。どちらのライブラリもクロスプラットフォームであり、クロス言語(ruby、python、c ++など)ですらあります。

于 2012-11-05T18:04:57.773 に答える
1

SOAPを見たことがありますか?それには長所と短所がありますが、あなたのニーズを満たすかもしれません。

WindowsボックスがVMであるという事実は、それが稼働していれば違いはありません。選択したシステムがサーバーを通常の論理的に分離したソケットとして扱う限り、ソリューションは柔軟なままです。

于 2012-11-05T17:53:19.087 に答える
1

適切な代替手段の1つは、HTTP上で実行されるXMLRPCです。少なくとも、SOAPよりも簡単です。私はこれをJava-Python通信に使用しましたが、当時はそれほど多くのコードではありませんでしたが、推奨するC ++ライブラリがわからないため、http://en.wikipedia.org/wiki/XML-とだけ言います。 RPCとそのC++セクション。

編集後の質問の編集:非常に単純な解決策として、プレーンHTTPを使用し、リクエストパスを関数にマッピングし、GETまたはPOSTでパラメーターを指定します。できるだけ簡単にHTTP応答データの戻り値:数値または文字列のプレーンテキスト、より複雑な戻り値の場合、バイナリの互換性を確保できる場合はバイナリブロブ(同じCPU、同じワードサイズ、プレーン構造、コンパイラ構造体パッキングオプションを使用する場合)必要)、またはjsonとして(またはXMLですが、SOAP / XMLRPCを再発明し始めています...)。

于 2012-11-05T18:10:28.823 に答える