Sobre el proyecto
MagicOnion es un framework unificado de tiempo real/API para la plataforma .NET y Unity, desarrollado por Cysharp. Combina llamadas de servicio estilo RPC con comunicación bidireccional en tiempo real en un solo framework.
En esencia, MagicOnion está construido sobre gRPC, que proporciona un transporte binario rápido y compacto sobre HTTP/2. Sin embargo, a diferencia de gRPC puro, trata las interfaces de C# como el esquema del protocolo. Esto significa que los desarrolladores pueden compartir interfaces de servicio directamente entre proyectos de servidor y cliente sin escribir ni mantener archivos `.proto` (IDL de Protocol Buffers). Las interfaces actúan tanto como definición de la API como esquema, de modo que el mismo código C# define el contrato en ambos lados.
El framework cubre dos patrones de uso principales. El primero son los servicios RPC unarios, comparables a gRPC, WCF o ASP.NET Core Web API. Los métodos de servicio devuelven `UnaryResult<T>` o `UnaryResult` y se tratan como asíncronos. El segundo es StreamingHub, un servicio de comunicación en tiempo real que permite a un servidor difundir datos a múltiples clientes conectados, similar en función a SignalR, Socket.io, Photon o UNet. Estas dos características pueden usarse de forma independiente o combinarse en la misma aplicación.
Los casos de uso típicos descritos por el proyecto incluyen RPC para microservicios, servicios API dirigidos a clientes diversos como aplicaciones Windows WPF, juegos Unity, .NET para iOS/Android y .NET MAUI, así como comunicación bidireccional en tiempo real para juegos y aplicaciones interactivas.
El soporte de plataformas es amplio. El lado del servidor requiere .NET 8 o posterior. El lado del cliente admite .NET 8+, .NET Standard 2.1 y 2.0, .NET Framework 4.6.1 hasta .NET 8, y Unity 2022.3 LTS o posterior en Windows, macOS, iOS y Android, con los backends de scripting IL2CPP y Mono.
Para comenzar, se agrega el paquete NuGet `MagicOnion.Server` a un proyecto ASP.NET Core, se registra el servicio con `AddMagicOnion()` y se mapea con `MapMagicOnionService()`. Una interfaz compartida que deriva de `IService<T>` define el contrato, y una clase de implementación hereda de `ServiceBase<T>` y de la interfaz. En el cliente, se usa el paquete `MagicOnion.Client` para crear un canal gRPC y un proxy mediante `MagicOnionClient.Create<T>()`, tras lo cual los métodos de servicio pueden llamarse de forma transparente.
La documentación está disponible tanto en inglés como en japonés. La biblioteca se publica bajo la Licencia MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.