Configuración del entorno
En el archivo build.gradle
se cuentan con las dependencias necesarias de gRPC
testImplementation 'io.grpc:grpc-testing:1.41.0' testImplementation group: 'com.google.protobuf', name: 'protobuf-java', version:'3.23.2' implementation 'io.grpc:grpc-stub:1.53.0' implementation 'io.grpc:grpc-api:1.53.0' implementation 'io.grpc:protoc-gen-grpc-java:1.53.0' implementation 'io.grpc:grpc-core:1.53.0' implementation 'io.grpc:grpc-netty-shaded:1.53.0' implementation 'com.google.api.grpc:proto-google-common-protos:2.14.1' implementation 'javax.annotation:javax.annotation-api:1.3.2' implementation 'io.grpc:grpc-protobuf:1.55.1'
Archivos .proto
En gRPC, los servicios y los mensajes que se envían entre el cliente y el servidor se definen en archivos .proto
, que utilizan el lenguaje de definición de interfaz (IDL) de Protocol Buffers. Aquí es donde se definen las operaciones que el servicio puede realizar y los tipos de datos que se envían y reciben.
Stubs
Un "stub" en gRPC es un término utilizado para referirse al cliente de un servicio gRPC. Esencialmente, un stub toma un mensaje de protocolo, serializa el mensaje en el formato correcto, envía la solicitud a través de la red, y luego espera y deserializa las respuestas para enviarlas de vuelta al código de llamada.
El enfoque más común para realizar pruebas en Java con gRPC es utilizar un stub generado automáticamente. Esto permite enfocarse en probar la lógica específica del cliente sin preocuparse por la complejidad de la comunicación subyacente.
Generar los archivos Java a partir del archivo .proto:
Gradle posee un plugin que permite generar los archivos Java, los cuales incluyen el código para los servicios y mensajes a partir de los archivos .proto
, utilizando el compilador de Protocol Buffers (protobuf).
Se cuenta con el plugin de protobuf al archivo build.gradle
:
apply plugin 'com.google.protobuf'
También, se incluye la siguiente configuración para el plugin:
protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.23.2' } plugins{ grpc{ artifact = 'io.grpc:protoc-gen-grpc-java:1.53.0' } } generateProtoTasks { all()*.plugins { grpc{ } } } }
Para que el plugin compile los archivos .proto
se ejecuta el comando gradle build
y se generen los archivos Java necesarios.
Los stubs serán generados en el directorio build/generated/source/proto/main/grpc
.
Si decides no utilizar un stub y se desea probar la comunicación con un servidor gRPC , se tendría que implementar manualmente toda la lógica de comunicación, serialización, deserialización y manejo de la comunicación de red, lo que puede ser bastante complejo y propenso a errores.
Implementación del cliente
Después de generar el código del cliente y del servidor, se implementan los stubs en los script de prueba.
0 Comments