このプロジェクトについて
MagicOnionは、Cysharpによって開発された、.NETプラットフォームとUnity向けの統合リアルタイム/APIフレームワークです。RPCスタイルのサービス呼び出しと双方向リアルタイム通信を単一のフレームワークに組み合わせています。
その中核となるのは、HTTP/2上で高速でコンパクトなバイナリ転送を提供するgRPC上に構築されていることです。ただし、通常のgRPCとは異なり、C#インターフェースをプロトコルスキーマとして扱います。つまり、開発者は`.proto`(Protocol Buffers IDL)ファイルを作成・保守することなく、サーバーとクライアントのプロジェクト間でサービスインターフェースを直接共有できます。インターフェースはAPI定義とスキーマの両方の役割を果たし、同じC#コードが両側でコントラクトを定義します。
このフレームワークは、主に2つの使用パターンをカバーしています。1つ目は、gRPC、WCF、またはASP.NET Core Web APIに匹敵する一方向RPCサービスです。サービスメソッドは`UnaryResult<T>`または`UnaryResult`を返し、非同期として扱われます。2つ目はStreamingHubで、サーバーが複数の接続クライアントにデータをブロードキャストできるリアルタイム通信サービスであり、SignalR、Socket.io、Photon、またはUNetと同様の役割を果たします。これらの2つの機能は、独立して使用することも、同じアプリケーション内で組み合わせて使用することもできます。
プロジェクトで説明されている典型的なユースケースには、マイクロサービスRPC、Windows WPFアプリケーション、Unityゲーム、.NET for iOS/Android、.NET MAUIなどの多様なクライアントを対象としたAPIサービス、およびゲームやインタラクティブアプリ向けの双方向リアルタイム通信が含まれます。
プラットフォームサポートは広範です。サーバー側では.NET 8以降が必要です。クライアント側では、.NET 8+、.NET Standard 2.1および2.0、.NET Framework 4.6.1から.NET 8まで、およびWindows、macOS、iOS、Android上のUnity 2022.3 LTS以降をサポートし、IL2CPPとMonoの両方のスクリプティングバックエンドに対応しています。
開始するには、ASP.NET Coreプロジェクトに`MagicOnion.Server` NuGetパッケージを追加し、`AddMagicOnion()`でサービスを登録し、`MapMagicOnionService()`でマッピングします。`IService<T>`から派生する共有インターフェースがコントラクトを定義し、実装クラスは`ServiceBase<T>`とインターフェースを継承します。クライアント側では、`MagicOnion.Client`パッケージを使用してgRPCチャネルと`MagicOnionClient.Create<T>()`によるプロキシを作成し、その後サービスメソッドを透過的に呼び出すことができます。
ドキュメントは英語と日本語の両方で提供されています。このライブラリはMITライセンスの下でリリースされています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.