gRPC は Google が開発している HTTP/2 ベースの RPC 通信フレームワークで、以下のような特徴を備えています。
- Protocol Buffers を利用したサービス定義
- 多数のプラットフォーム/言語をサポート
- HTTP/2 ベースの高パフォーマンスなストリーミング通信
- 統合されたプラガブルな認証機構
gRPC は GitHub にて今も積極的に開発が進められており、Google も自身の Google Cloud Platform の API などとして積極的に採用しています。
これまで HTTP/1 ベースでのストリーミング通信と言えば WebSocket などが有名ですが、通常の HTTP リクエストとは API が統合されておらず、サービスの口を 2 系統用意する必要がありました。ASP.NET に限って言えば、同様のコンセプトの SignalR がありますが、gRPC の方が高速で拡張性があり、先進的であると言えます。
MagicOnion
@neuecc さんが開発している、.NET 用の gRPC を薄くラップした高レベルな通信フレームワークです。素の gRPC の良さをそのまま残しつつ、C#er がより便利に利用できるように調整されています。
- .NET Framework / .NET Core / Unity に対応
- Unity 向けの gRPC Port を含み、それを利用して Unity で動作させる
- MessagePack for C# を用いた超高速シリアライズ
- Protocol Buffers を使わないため .proto (IDL : 中間定義) が一切不要
- Heartbeat によるサーバー/クライアントでの切断検知
- OWIN / ASP.NET Core MVC ライクな Filter による制御
- Swagger を用いた HTTP/1 との相互運用
MagicOnion はグラニが開発/運用している黒騎士と白の魔王と Project Sonata で採用されています。ただし、もし実プロダクトとしての採用を検討する場合は十分な検証を行ってください。
今すぐ試してみたいという方は、Quick Start が MagicOnion の README.md に記載されているので是非トライしてみてください。