今回は MagicOnion を使った API 開発を行うまでの前準備にフォーカスを当てます。主に Console / WinForms / WPF アプリなど向けです。MagicOnion は Unity にも対応していますが、これはだいぶ大変でややこしいので別途解説することにします。
基本的なプロジェクト構造
MagicOnion は基本的に以下のようなプロジェクト構成をとります。
プロジェクト | 役割と解説 |
---|---|
ServiceDefinition | API 定義のみ サーバー / クライアントの両方から参照される |
Service | サーバー側 ServiceDefinition で定義されたインターフェースを実装 |
Client | クライアント側 ServiceDefinition で定義されたインターフェースを通してサーバー側の API を呼び出す |
通常の gRPC は Protocol Buffers の IDL を用いたサービス定義を行いますが、MagicOnion は IDL が不要*1です。その代わりにサービス定義をサーバーとクライアントで共有する必要があるため、サービス定義部分だけ別プロジェクトとして分離する必要があります。
NuGet Package の取得
MagicOnion は NuGet で配布されており、以下のコマンドで取得できます。
このパッケージを前節で挙げたすべてのプロジェクトの参照設定に追加する必要があります。gRPC や MessagePack for C# などの MagicOnion 自体が利用するものは、MagicOnion をインストールする際に同時に取得されるので個別での対応は不要です。
*1:C# コード自体を IDL として利用し、実行時に動的解決する