Sobre o projeto

MagicOnion é um framework unificado de tempo real/API para a plataforma .NET e Unity, desenvolvido pela Cysharp. Ele combina chamadas de serviço no estilo RPC com comunicação bidirecional em tempo real em um único framework. Em sua essência, o MagicOnion é construído sobre gRPC, que fornece um transporte binário rápido e compacto sobre HTTP/2. Diferente do gRPC puro, no entanto, ele trata interfaces C# como o esquema do protocolo. Isso significa que os desenvolvedores podem compartilhar interfaces de serviço diretamente entre projetos de servidor e cliente sem escrever ou manter arquivos `.proto` (arquivos IDL do Protocol Buffers). As interfaces atuam tanto como a definição da API quanto como o esquema, de modo que o mesmo código C# define o contrato em ambos os lados. O framework abrange dois padrões principais de uso. O primeiro são serviços RPC unários, comparáveis ao gRPC, WCF ou ASP.NET Core Web API. Os métodos de serviço retornam `UnaryResult<T>` ou `UnaryResult` e são tratados como assíncronos. O segundo é o StreamingHub, um serviço de comunicação em tempo real que permite que um servidor transmita dados para vários clientes conectados, com papel semelhante ao SignalR, Socket.io, Photon ou UNet. Esses dois recursos podem ser usados de forma independente ou combinados na mesma aplicação. Os casos de uso típicos descritos pelo projeto incluem RPC para microsserviços, serviços de API voltados para clientes diversos, como aplicações Windows WPF, jogos Unity, .NET para iOS/Android e .NET MAUI, bem como comunicação bidirecional em tempo real para jogos e aplicativos interativos. O suporte a plataformas é amplo. O lado do servidor requer .NET 8 ou posterior. O lado do cliente suporta .NET 8+, .NET Standard 2.1 e 2.0, .NET Framework 4.6.1 até .NET 8 e Unity 2022.3 LTS ou mais recente no Windows, macOS, iOS e Android, com os backends de script IL2CPP e Mono. Para começar, adicione o pacote NuGet `MagicOnion.Server` a um projeto ASP.NET Core, registre o serviço com `AddMagicOnion()` e mapeie-o com `MapMagicOnionService()`. Uma interface compartilhada derivada de `IService<T>` define o contrato, e uma classe de implementação herda `ServiceBase<T>` e a interface. No cliente, o pacote `MagicOnion.Client` é usado para criar um canal gRPC e um proxy via `MagicOnionClient.Create<T>()`, após o que os métodos de serviço podem ser chamados de forma transparente. A documentação está disponível em inglês e japonês. A biblioteca é lançada sob a Licença MIT.