Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Hace unos meses, anunciamos el soporte experimental para generar servicios gRPC a partir de definiciones de esquemas Ent. La implementación aún no estaba completa, pero queríamos ponerla a disposición de la comunidad para experimentar y obtener retroalimentación.
Hoy, tras recibir numerosos comentarios de la comunidad, nos complace anunciar que la integración entre Ent y gRPC está "Lista para uso". Esto significa que todas las funcionalidades básicas están completas y anticipamos que la mayoría de aplicaciones Ent pueden aprovechar esta integración.
¿Qué hemos añadido desde nuestro anuncio inicial?
Soporte para "Campos opcionales" - Un problema común con Protobufs es cómo se representan los valores nulos: un campo primitivo con valor cero no se codifica en la representación binaria. Esto significa que las aplicaciones no pueden distinguir entre cero y no establecido para campos primitivos. Para solucionarlo, el proyecto Protobuf incluye unos "Tipos bien conocidos" llamados "tipos envoltorio" que encapsulan el valor primitivo en una estructura. Esto no estaba soportado antes, pero ahora cuando
entprotogenera una definición de mensaje Protobuf, utiliza estos tipos envoltorio para representar campos "opcionales" de Ent:// Code generated by entproto. DO NOT EDIT.
syntax = "proto3";
package entpb;
import "google/protobuf/wrappers.proto";
message User {
int32 id = 1;
string name = 2;
string email_address = 3;
google.protobuf.StringValue alias = 4;
}Soporte para múltiples relaciones - Cuando lanzamos la versión inicial de
protoc-gen-entgrpc, solo soportábamos generar implementaciones de servicios gRPC para relaciones "Únicas" (que referencian como máximo una entidad). Desde una versión reciente, el plugin soporta la generación de métodos gRPC para leer y escribir entidades con relaciones O2M (Uno a Muchos) y M2M (Muchos a Muchos).Respuestas parciales - Por defecto, la información de relaciones no se devuelve en el método
Getdel servicio. Esto es deliberado porque la cantidad de entidades relacionadas con una entidad no tiene límite.Para permitir que el llamante especifique si desea o no obtener la información de relaciones, el servicio generado sigue Google AIP-157 (Respuestas Parciales). En resumen, el mensaje
Get<T>Requestincluye una enumeración llamada View, que permite al llamante controlar si esta información debe recuperarse de la base de datos.message GetUserRequest {
int32 id = 1;
View view = 2;
enum View {
VIEW_UNSPECIFIED = 0;
BASIC = 1;
WITH_EDGE_IDS = 2;
}
}
Empezando
Para ayudar a todos a comenzar con la integración Ent + gRPC, hemos publicado un Tutorial oficial de Ent + gRPC (y un repositorio GitHub complementario).
¿Necesitas ayuda para empezar con la integración o tienes otra pregunta? Únete a nosotros en Slack o en nuestro servidor de Discord.
- Suscríbete a nuestro Newsletter
- Síguenos en Twitter
- Únete a #ent en Gophers Slack
- Únete al Ent Discord Server