Saltar al contenido principal

Ent + gRPC está listo para uso

· 3 min de lectura
[Traducción Beta No Oficial]

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 entproto genera 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 Get del 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>Request incluye 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 más noticias y actualizaciones de Ent:]