スポンサーリンク
スポンサーリンク

.NET 6.0とMagicOnionで実現するgRPC通信(Windowsフォーム)v3

.NET CoreASP.NET CoreC#MagicOnionVisual StudioWCFWindowsフォームアプリ

.NET 6.0 の Windowsフォームアプリから、MagicOnion NuGetパッケージを使い、gRPC通信処理を行う 前回作成したサンプル は、通信用Modelクラスのメンバに使っている型によっては、Exceptionが発生したり、Colorの値がサーバ側に渡らなかったりする問題が発生していました。
今回作成したサンプルは、クライアント側とサーバ側のアプリ起動時に Resolverを設定することで、それらの問題を解消しています。
ソースコードは GitHub で公開しています。

 

発生していた問題

通信時に発生していたException

 

Resolverを追加することで解消

クライアント側
サーバ側

 

通信時にColorの値がサーバ側に渡らない

 

ColorFormatter/ColorResolverクラスを作成することで解消

ライブラリ側
クライアント側
サーバ側

 

MagicOnion ライブラリ側

ソースコード構成

MessagePack内部の ColorFormatter/ColorResolverを使うと、サーバからクライアントへは値が渡っても、クライアントからサーバへは値が渡らない、バグがあるので自作しています。

 

ソースコード変更内容を解説

/Formatter/ColorFormatter.cs

Color型を処理できるFormatterを追加。

 

/Formatter/ColorResolver.cs

Color型を処理できるResolverを追加。

 

/Model/ModelClassA.cs

通信用Modelクラスに、Color型のメンバを追加。

 

MagicOnion サーバ側

ソースコード構成

 

ソースコード変更内容を解説

/Program.cs

Resolverを設定する処理を追加。
※Resolverを設定する処理は、サーバ側とクライアント側の両方に追加する必要がある。

 

/Services/MyFirstService.cs

Color型のテストデータを追加。

 

MagicOnion クライアント側

ソースコード構成

 

ソースコード変更内容を解説

/Program.cs

Resolverを設定する処理を追加。

 

/Form1.cs

Color型のテストデータを追加。

 

コメント

タイトルとURLをコピーしました