2

通信する必要のあるアプリケーションが2つあります。両方のアプリケーションが同じコンピューター上にあるため、名前付きパイプを使用して通信しています。

私の質問は、送信されるデータについてです。私のオプションは何ですか?次の可能性は実現可能ですか?

  • 2つのアプリケーション間でバイトを送信
  • CStructを送信する
  • いくつかのプロトコルバッファオブジェクトを送信します

他に何かアイデアがあれば、私はオープンです。私の目的は、非常に迅速に実装できるものを用意することです。

4

3 に答える 3

3

非常に高いパフォーマンスが必要な場合を除いて、ThriftProtocolBufferなどの標準的なクロスランゲージサービス通信言語を使用します。

これにより、ある日別の言語で3番目のアプリケーションと通信する必要がある場合、または各サービスを別のマシンで実行することにした場合でも、問題なく拡張できます。

于 2012-08-08T13:05:16.150 に答える
1

(あなたが)実装するのが本当に速いですか、それとも操作が本当に速いですか?

前者の場合-Webサービスを使用すると、gsoapまたはWCFを使用すると、呼び出すことができるシンプルなインターフェイスになります。

後者の場合は、おそらく共有メモリが必要です。生データをそこに入れて、他のプロセスがそれを読み取れるようにします。転送するデータがたくさんある場合は、これが最適な方法です。少量の場合は、名前付きパイプ(またはソケット、常に優れていて使いやすく、複数のマシンにはるかに簡単に移行できるソケット)を介して直接送信できます。

転送するデータを解釈するには、C#オブジェクトを送信しようとするのを忘れて、C ++側に同じオブジェクトとして読み込ませるので、生データを処理する必要があります。これは、ある形式でデータをシリアル化することを意味します(バイナリ形式もうまく機能し、たとえばXMLにシリアル化するよりもはるかに高速になります)。反対側はこれを読み込んで、独自のデータ構造にシリアル化を解除できます。

于 2012-08-08T13:10:32.073 に答える
1

1つのオプション:トランスポートにはzeromqを使用し、通信言語としてprotobuf、thrift、さらにはjsonを使用します。Zeromqは本当に速いです。

于 2012-08-08T16:17:18.737 に答える