Como se conectar a gRPC C ++ InProcessChannel não a partir de C ++?
Estou tentando o gRPC como alternativa JNI e a ideia é ter o serviço gRPC no lado C ++ e o cliente conectado no lado Java / Android. Para ter o melhor desempenho possível, prefiro usar o canal em processo (aberto às suas sugestões).
Como posso me conectar ao servidor gRPC C ++ com InProcessChannel()? O problema é que preciso passar um name
para Java InProcessServerBuilder
.
Em testes C ++ gRPC (por exemplo, aqui ), não consigo encontrar sua configuração e isso me faz pensar que InProcessChannel
pode ser usado apenas em C ++ puro (tanto o servidor quanto o cliente estão em C ++). Ainda é possível para o serviço C ++ e o cliente Java?
PS. Consegui fazer isso para servidor Java + cliente Java.
PPS. Eu encontrei alguns QnAs semelhantes, por exemplo. aqui, mas eu me pergunto se ainda há uma maneira de fazê-lo funcionar em conjunto (provavelmente com algum impl de canal de terceiros). Ele pode funcionar em soquetes de domínio Unix?
Respostas
Os transportes C ++ e Java "em processo" não foram nomeados apropriadamente para casos em que várias linguagens estão no mesmo processo. Os transportes em processo funcionam apenas em cada idioma individual; os transportes em processo C ++ e Java não podem interagir.
Você deve usar o cliente / servidor HTTP / 2 normal.
Embora algo como você queira possa existir, como talvez um transporte de "memória compartilhada", é uma quantidade significativa de trabalho e veria relativamente pouco uso para a carga de manutenção.
Aceitei a resposta de Eric sobre Anderson como correta. No entanto, pode ser útil saber como eu fiz isso trabalhando com Unix Domain Sockets.
Tive que fazer um patch netty
para o Android e usá-lo . Preste atenção a algumas notas de permissão específicas do Android .