Bagaimana cara menyambungkan ke gRPC C ++ InProcessChannel bukan dari C ++?

Dec 21 2020

Saya mencoba gRPC sebagai alternatif JNI dan idenya adalah agar layanan gRPC di sisi C ++ dan klien terhubung di sisi Java / Android. Untuk mendapatkan kinerja terbaik, saya lebih suka menggunakan saluran dalam proses (terbuka untuk saran Anda).

Bagaimana cara menyambungkan ke server gRPC C ++ InProcessChannel()? Masalahnya adalah bahwa saya perlu untuk lulus suatu nameuntuk Jawa InProcessServerBuilder.

Dalam tes C ++ gRPC (misalnya di sini ) saya tidak dapat menemukannya disetel dan itu membuat saya berpikir hanya InProcessChanneldapat digunakan dalam C ++ murni (baik server dan klien dalam C ++). Apakah masih mungkin untuk layanan C ++ dan klien Java?

PS. Saya bisa melakukannya untuk Java-server + Java-client.

PPS. Saya telah menemukan beberapa contoh QnA serupa . di sini tetapi saya bertanya-tanya apakah masih ada cara untuk membuatnya bekerja sama (mungkin dengan beberapa saluran pihak ketiga impl). Bisakah itu bekerja melalui Soket Domain Unix?

Jawaban

3 EricAnderson Dec 22 2020 at 06:14

Transpor "dalam proses" C ++ dan Java tidak diberi nama dengan tepat untuk kasus beberapa bahasa berada dalam proses yang sama. Pengangkutan dalam proses hanya bekerja dalam setiap bahasa; transpor dalam proses C ++ dan Java tidak dapat berinteraksi.

Anda harus menggunakan klien / server HTTP / 2 normal.

Meskipun sesuatu yang Anda inginkan mungkin ada, mungkin sebagai transportasi "memori bersama", ini adalah pekerjaan yang sangat besar dan akan melihat penggunaan yang relatif sedikit untuk beban pemeliharaan.

1 4ntoine Dec 22 2020 at 20:24

Saya telah menerima jawaban Eric Anderson sebagai benar. Namun mungkin berguna untuk mengetahui bagaimana saya membuatnya bekerja dengan Soket Domain Unix.

Saya harus menambal netty untuk Android dan menggunakannya . Perhatikan beberapa catatan izin khusus Android .