À propos du projet

MagicOnion est un framework unifié de temps réel/API pour la plateforme .NET et Unity, développé par Cysharp. Il combine les appels de services de style RPC avec la communication bidirectionnelle en temps réel dans un seul framework. À la base, MagicOnion est construit sur gRPC, qui fournit un transport binaire rapide et compact sur HTTP/2. Contrairement à gRPC standard, il traite cependant les interfaces C# comme schéma de protocole. Cela signifie que les développeurs peuvent partager directement les interfaces de service entre les projets serveur et client sans écrire ni maintenir de fichiers `.proto` (IDL Protocol Buffers). Les interfaces servent à la fois de définition d'API et de schéma, de sorte que le même code C# définit le contrat des deux côtés. Le framework couvre deux principaux modèles d'utilisation. Le premier est les services RPC unaires, comparables à gRPC, WCF ou ASP.NET Core Web API. Les méthodes de service retournent `UnaryResult<T>` ou `UnaryResult` et sont traitées comme asynchrones. Le second est StreamingHub, un service de communication en temps réel qui permet à un serveur de diffuser des données à plusieurs clients connectés, similaire en rôle à SignalR, Socket.io, Photon ou UNet. Ces deux fonctionnalités peuvent être utilisées indépendamment ou combinées dans la même application. Les cas d'utilisation typiques décrits par le projet incluent le RPC pour microservices, les services API ciblant divers clients tels que les applications Windows WPF, les jeux Unity, .NET pour iOS/Android et .NET MAUI, ainsi que la communication bidirectionnelle en temps réel pour les jeux et applications interactives. La prise en charge des plateformes est large. Le côté serveur nécessite .NET 8 ou ultérieur. Le côté client prend en charge .NET 8+, .NET Standard 2.1 et 2.0, .NET Framework 4.6.1 à .NET 8, et Unity 2022.3 LTS ou plus récent sur Windows, macOS, iOS et Android, avec les backends de script IL2CPP et Mono. Pour commencer, il faut ajouter le package NuGet `MagicOnion.Server` à un projet ASP.NET Core, enregistrer le service avec `AddMagicOnion()` et le mapper avec `MapMagicOnionService()`. Une interface partagée dérivant de `IService<T>` définit le contrat, et une classe d'implémentation hérite de `ServiceBase<T>` et de l'interface. Côté client, le package `MagicOnion.Client` est utilisé pour créer un canal gRPC et un proxy via `MagicOnionClient.Create<T>()`, après quoi les méthodes de service peuvent être appelées de manière transparente. La documentation est disponible en anglais et en japonais. La bibliothèque est publiée sous licence MIT.