Conexión de aplicaciones de Android al servidor mediante gRPC | de Shaik Ahron | diciembre 2022

grpc-imagengRPC es un moderno código abierto de alto rendimiento llamada a procedimiento remoto (RPC) que se ejecuta en cualquier entorno. Puede conectar de manera eficiente servicios dentro y entre centros de datos, con soporte conectable para equilibrio de carga, rastreo, verificación de estado y autenticación. Genera automáticamente stubs de servidor y cliente idiomáticos para su servicio en una variedad de idiomas y plataformas. Admite transmisión bidireccional entre el cliente y el servidor HTTP/2-transporte basado. Una RPC es una forma de comunicación cliente-servidor que utiliza una llamada de función en lugar de una llamada HTTP estándar. gRPC utilizado búfer de registro Este es el mecanismo de Google para serializar datos estructurados.búfer de registro Proporcionar un mecanismo extensible, neutral en cuanto a lenguaje y plataforma, para serializar datos estructurados de manera compatible hacia adelante y hacia atrás. Es como JSON, excepto que es más pequeño, más rápido y genera enlaces de idioma nativo. Debes crear un archivo con extensión prototipoLos búferes de protocolo son el formato de datos más común utilizado por gRPC.message Person {string name = 1;int32 id = 2;} mensaje como un objeto.Crear servicios gRPC.follow this:// The Greeter service definition.service Greeter {// Envía un saludo rpc SayHello (HelloRequest) devuelve (HelloReply) {}}gRPC uses protocolo con un complemento gRPC especial para generar código a partir de su archivo proto: obtiene código de servidor y cliente gRPC generado, así como el código de búfer de protocolo regular para rellenar, serializar y recuperar sus tipos de mensajes. gRPC ofrece cuatro tipos de servicios.

  1. RPC unarios donde el cliente envía una sola solicitud al servidor y obtiene una respuesta única, como una llamada de función normal.
  2. Servidor de transmisión de RPC El cliente envía una solicitud al servidor y recibe un flujo para leer una secuencia de mensajes. El cliente lee el flujo devuelto hasta que no haya más mensajes. gRPC garantiza el orden de los mensajes dentro de una sola llamada RPC.
  3. RPC de transmisión de clientes El cliente escribe una secuencia de mensajes y los envía al servidor, nuevamente utilizando un flujo proporcionado. Después de que el cliente escribe los mensajes, espera a que el servidor los lea y devuelva su respuesta. Nuevamente, gRPC garantiza el orden de los mensajes dentro de una sola llamada RPC.
  4. RPC de transmisión bidireccional ambos lados envían una secuencia de mensajes con un flujo de lectura y escritura.

Contenidos

Conectemos el servidor gRPC a nuestra aplicación de Android.

Verificar el código de mi aplicación aquí.

Comprobar mi servidor gRPC aquíPaso 1: Cree un nuevo proyecto de Android.Paso 2:Agregue esto en buildbuildscript {…dependencies {classpath «com.google.protobuf:protobuf-gradle-plugin:0.8.18»}} del archivo Gradle de nivel de proyecto. Vaya al archivo Gradle de nivel de aplicación.Agregue esto en la identificación del bloque del complemento ‘com.google.protobuf’ arriba del bloque de dependencia. agregue this.protobuf {protoc { artefact = ‘com.google.protobuf:protoc:3.19.2’ }complementos {grpc { artefact = ‘io.grpc:protoc -gen-grpc-java:1.47.0’}}generateProtoTasks { all().each { task ->task.builtins {java { option ‘lite’ }}task.plugins {grpc {option ‘lite’ }}}} } Ahora, en el bloque de dependencias //la implementación de dependencias de grpc ‘io. grpc: grpc-okhttp:1.47.0 ‘implementación’ io.grpc:grpc-protobuf-lite:1.47.0’implementación ‘io.grpc:grpc-stub: 1.47.0’implementación ‘org.apache.tomcat:anotaciones- api: 6.0.53’haga clic sincronizar ahoraPaso 3:Ahora necesitas crear uno prototipo archivo.ir araíz -> aplicación -> src -> principal -> proto (crear esta carpeta)Añadir este archivo saludador.protoahora reconstruir el proyecto. Encontrará algunos archivos generados.Estos son los stubs de clientes que usaremos para conectarnos al servidor GrPC.Paso 4:Antes del intercambio de datos entre cliente y servidor. Necesitamos crear un canal que básicamente conecte el cliente y el servidor. Ahora para enviar una llamada unaria simple, aquí usamos el stub generado GreeterGrpcStuband y creamos un HolaSolicitud Esta es nuestra entrada. y recuperar la respuesta.Antes de llamar a este método, debemos configurar nuestro servidor local.Paso 5:Necesita Node.js. Así que descarga desde aquí y configura Ahora crea una carpeta servidor grpcy correr npm inicializar -ytienes que sobrescribir paquete.json Archivo con esto. Ahora, ejecute instalar npmAhora suelte el mismo Greeter.proto aquí en esta carpeta.y crea uno ahora índice.js archiva y pega este código. Haciéndolo ahora nodo index.jsSu host local está en funcionamientoPaso 6:Ir a MainActivity.kten el MainViewModel.ktUsa este método grpc.ktAhora ejecuta la aplicación.En el campo Agregar servidor 10.0.2.2 y puerto 50051y haga clic en el empezar presione y haga clic RPC simple Botón. Recibirá una respuesta de su servidor local.Entonces obtendrá una respuesta del servidor de acuerdo con su código. Ahora para la transmisión del servidor. MainViewModel.kt establece este código.fun sendMessageWithReplies(mensaje: String) { viewModelScope.launch(Dispatchers.IO) {intenta {updateResult(sendMessageWithReplies(mensaje,channel).toString())} catch (e: Exception) {updateResult(e.message? :»»)}}}y en grpc.ktfun sendMessageWithReplies (mensaje: Cadena, canal: ManagedChannel?): ¿Alguna? {return try {val stub = GreeterGrpc.newBlockingStub(channel)val request = HelloRequest.newBuilder().setName(mensaje).build()val answer = stub.lotsOfReplies(request)reply.asSequence().toList().map { it -> it.message+»\n» }} catch (e: Exception) {e}}Obtendrás un iterador.Haga clic en Botón de transmisión del servidor y recibirás un flujo de mensajes. Ahora, por ejemplo transmisión de clienteDebe crear un código auxiliar asíncrono.Tienes que crear 2 observador de corriente uno para respuesta y petición. Creé un pestillo de cuenta regresiva para esperar el hilo actual.Así que haga clic en Client Streaming y obtendrá el resultado. Debes hacer lo mismo Transmisión bidireccionalHaga clic en el botón Bidireccional. Eso es. Ahora explicaré algunos métodos utilizados en el servidor Node.js. Aquí en el principalmente() método, comenzamos un grpc Servidor bajo IP 0.0.0.0 y puerto 50051.y añadir saludos service.I ha agregado lógica a varias llamadas RPC con fines de demostración. necesitamos devoluciones de llamada como call.on(‘datos’,null) y call.on(‘fin’,null).Cuando recibe solicitudes de la transmisión, Llamada telefónica objeto implementado Legible.Si envía una respuesta en una secuencia, Llamada telefónica objeto implementado escribible.gRPC es una forma muy poderosa de comunicarse con los servidores.explora más al respecto aquí

gracias por leer

Deja una respuesta

Tu dirección de correo electrónico no será publicada.