Wie kann ich eine Verbindung zu gRPC C ++ InProcessChannel herstellen, nicht über C ++?
Ich versuche gRPC als JNI-Alternative und die Idee ist, einen gRPC-Dienst auf C ++ - Seite und einen Client auf Java / Android-Seite zu haben. Um die bestmögliche Leistung zu erzielen, würde ich lieber den In-Process-Kanal verwenden (offen für Ihre Vorschläge).
Wie kann ich eine Verbindung zum C ++ gRPC-Server herstellen InProcessChannel()? Das Problem ist , dass ich brauchen passieren eine name
für Java InProcessServerBuilder
.
In C ++ gRPC-Tests (z. B. hier ) kann ich nicht feststellen, dass es festgelegt ist, und ich denke, InProcessChannel
dass es nur in reinem C ++ verwendet werden kann (sowohl Server als auch Client sind in C ++). Ist es für C ++ - Dienst und Java-Client noch möglich?
PS. Ich konnte es für Java-Server + Java-Client tun.
PPS. Ich habe ein paar ähnliche QnAs gefunden, z. hier, aber ich frage mich, ob es noch eine Möglichkeit gibt, es zusammenzubringen (wahrscheinlich mit einem Drittanbieter-Kanalimplement). Kann es über Unix Domain Sockets funktionieren?
Antworten
Die "In-Process" -Transporte von C ++ und Java wurden für Fälle, in denen sich mehrere Sprachen im selben Prozess befinden, nicht entsprechend benannt. Die In-Process-Transporte funktionieren nur in jeder einzelnen Sprache. Die C ++ - und Java-In-Process-Transporte können nicht interagieren.
Sie sollten den normalen HTTP / 2-Client / Server verwenden.
Während so etwas wie das, was Sie wollen, existieren könnte, wie vielleicht ein "Shared Memory" -Transport, ist es eine erhebliche Menge an Arbeit und würde relativ wenig Verwendung für die Wartungslast sehen.
Ich habe Erics Anderson-Antwort als richtig akzeptiert. Allerdings könnte es nützlich sein zu wissen , wie ich es gemacht Arbeiten mit Unix Domain Sockets.
Ich musste für Android patchen netty
und es verwenden . Zahlen Sie Ihre Aufmerksamkeit auf einige Android-spezifische Erlaubnis Notizen .