C ++からではなくgRPCC ++ InProcessChannelに接続するにはどうすればよいですか?
私はJNIの代替手段としてgRPCを試していますが、そのアイデアは、C ++側でgRPCサービスを使用し、Java / Android側でクライアントを接続することです。可能な限り最高のパフォーマンスを得るには、インプロセスチャネルを使用することをお勧めします(提案を受け付けます)。
どうすればC ++ gRPCサーバーに接続できますInProcessChannel()か?問題は、私はする必要があるということです渡すname
JavaのためにInProcessServerBuilder
。
C ++ gRPCテスト(例:ここ)では、セットが見つからずInProcessChannel
、純粋なC ++でのみ使用できると思います(サーバーとクライアントの両方がC ++で使用されています)。C ++サービスとJavaクライアントでまだ可能ですか?
PS。Javaサーバー+ Javaクライアントでそれを行うことができました。
PPS。私はいくつかの同様のQnAを見つけました。ここでは、それを一緒に機能させる方法がまだあるのだろうかと思います(おそらくいくつかのサードパーティチャネルの実装で)。Unixドメインソケットで動作しますか?
回答
C ++およびJavaの「インプロセス」トランスポートは、複数の言語が同じプロセスにある場合に適切な名前が付けられていませんでした。インプロセストランスポートは、個々の言語内でのみ機能します。C ++とJavaのインプロセストランスポートは相互作用できません。
通常のHTTP / 2クライアント/サーバーを使用する必要があります。
「共有メモリ」トランスポートのように、必要なものが存在する可能性はありますが、それはかなりの量の作業であり、メンテナンスの負担が比較的少ないと考えられます。
私はエリックのアンダーソンの答えを正しいものとして受け入れました。しかし、私がそれを作った方法を知っておくと便利かもしれません作業のUNIXドメインソケットで。
Android用にパッチ を当てnetty
て使用する必要がありました。Android固有の許可に関する注意事項に注意してください。