SlideShare a Scribd company logo
8
Most read
9
Most read
12
Most read
Using or not using
MagicOnion
MagicOnionを使うと場合と使わない場合
自己紹介
- 篠原吾一 (@gsino_)
- C#でゲーム作っています
- 前職ではMagicOnionを利用したスマホゲームを
開発していました
今回のおはなし
MagicOnionとは
=> C#でgRPCを使用するためのフレームワーク
ただしMagicOnionを使用しないでもC#でgRPCの
サーバーを実装することは可能
両者を比較して、特徴を捉えてみます
MagicOnionによるgRPC
- C#(.NET) インターフェースがIDL
- シリアライザはMessagePack for C#
- StreamingHubなどの独自機能
- 引数/戻り値の制限が緩い
(プリミティブ型を使用可能、複数の引数を定義可能)
- サーバー/クライアントともにC#(などの.NET言
語)でないとならない
DEMO
MagicOnionを使用しないgRPC
- .protoファイルがIDL
- シリアライザはProtocolBuffer
- Grpc.Toolsでクライアント/サーバーのベースク
ラスを自動生成
- 言語非依存
DEMO
番外編 HTTP/1アクセスしたい
javascriptなどからはgRPCは使用できないが、代替手段は用意されている。
MagicOnionの場合
=> MagicOnion.HttpGateway
HTTP/1アクセスからgRCPを通さずにメソッドを呼び出し(Unaryのみ)
Swagger出力もしてくれるので、APIの確認に良い
素gRPCの場合
=> gRPC-Web
リバースプロキシを用いてHTTP/1 <=>gRPCを変換
2つ実装があり、片方はServerStreamingに対応
表にしてみた
MagicOnion 素gRPC
IDL C#(.NET) インターフェー
ス
.protoファイル
シリアライザ MessagePack for C# ProtocolBuffer
言語 C# (F#/VB など.NET言語) 大体の言語
クライアント サーバー実装と同一イン
ターフェースのクライアン
ト自動生成(実行時or事前)
サーバー実装とは別インター
フェースのクライアント事前生成
引数/戻り値 複数可、プリミティブ可 複数不可、プリミティブ不可
Http/1アクセス MagicOnion.HttpGateway gRPC-Web
どのように使い分けるべきか
MagicOnionを使いたいケース
サーバー/クライアントがともに.NET
& やり取りの方法が自前でコントロールできる
=> ゲームやアプリのクライアント-サーバー通信
素gRPCを使いたいケース
サーバー/クライアントに.NET以外が含まれる
or システム外部とgRPCでやり取りをしたい
=> 外部から広くアクセスしてもらうシステム
=> すでに実装すべき.protoが規定されている
MagicOnionは使いたいけど、社内のツールの都合で
一部APIは素のgRPCが必要なので無理かな・・・
(´・ω・`)
実は両立できます
一つのgRPCサーバーにMagicOnionと素gRPCを同
居させることは可能
DEMO
まとめ
MagicOnionと素gRPCで得意なところは異なる
うまく使い分けよう
素gRPCを使いたい要件があっても、MagicOnion
と同居できるので、あきらめてはいけない!
ありがとうございました

More Related Content

What's hot (20)

PDF
MagicOnion入門
torisoup
 
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
 
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
PPTX
Unityネイティブプラグインマニアクス #denatechcon
DeNA
 
PDF
DockerとPodmanの比較
Akihiro Suda
 
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Yahoo!デベロッパーネットワーク
 
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
 
PDF
Unity開発で使える設計の話+Zenjectの紹介
torisoup
 
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
 
PDF
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
PDF
レシピの作り方入門
Nobuhiro Iwamatsu
 
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
 
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
 
PDF
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PDF
Assembly Definition あれやこれ
NakanoYosuke1
 
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
 
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
 
MagicOnion入門
torisoup
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
 
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
Unityネイティブプラグインマニアクス #denatechcon
DeNA
 
DockerとPodmanの比較
Akihiro Suda
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Yahoo!デベロッパーネットワーク
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
 
Unity開発で使える設計の話+Zenjectの紹介
torisoup
 
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
 
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
レシピの作り方入門
Nobuhiro Iwamatsu
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
Naoya Kishimoto
 
Dockerからcontainerdへの移行
Kohei Tokunaga
 
Assembly Definition あれやこれ
NakanoYosuke1
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
 

Similar to Using or not using magic onion (20)

PDF
mruby を C# に 組み込んでみる
Ryosuke Akiyama
 
PPT
Inside mobage platform
Toru Yamaguchi
 
KEY
ゆるかわPhp
Ryota Mochizuki
 
PDF
20120616i phonedeveloperworkshop
Yoichiro Sakurai
 
PDF
Grailsのススメ(仮)
Tsuyoshi Yamamoto
 
PDF
Getting Started GraalVM (再アップロード)
tamtam180
 
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
PDF
JavaScriptでCGを扱う WebGL紹介
Isao Ebisujima
 
ZIP
Ruby Kaigi LT - unshiu
gaooh
 
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
PDF
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
UnityTechnologiesJapan002
 
PDF
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
 
PPTX
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
Katsunori Kanda
 
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
 
PDF
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
PDF
勉強会20140319 rspec_capybara
Shugo Numano
 
PDF
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
 
PPTX
C++ AMPを使ってみよう
Osamu Masutani
 
PDF
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
 
mruby を C# に 組み込んでみる
Ryosuke Akiyama
 
Inside mobage platform
Toru Yamaguchi
 
ゆるかわPhp
Ryota Mochizuki
 
20120616i phonedeveloperworkshop
Yoichiro Sakurai
 
Grailsのススメ(仮)
Tsuyoshi Yamamoto
 
Getting Started GraalVM (再アップロード)
tamtam180
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
JavaScriptでCGを扱う WebGL紹介
Isao Ebisujima
 
Ruby Kaigi LT - unshiu
gaooh
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
UnityTechnologiesJapan002
 
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
 
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
Katsunori Kanda
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
 
「宣言的プログラミング」とSDNのひとつの形態
npsg
 
勉強会20140319 rspec_capybara
Shugo Numano
 
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
 
C++ AMPを使ってみよう
Osamu Masutani
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
 
Ad

Recently uploaded (10)

PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Ad

Using or not using magic onion

Editor's Notes

  • #4: MagicOnionはC#でgRPCを使用するためのフレームワークですが、MagicOnionを使用しないでもC#でgRPCを利用することは可能です。 MagicOnionを使用する場合のgRPCとそうでない場合のgRPCを比較しすることで、MagicOnionの特徴を捉えていきたいと思います。
  • #6: Demo SampleソリューションのMagicOnionフォルダ
  • #8: Demo SampleソリューションのMagicOnionフォルダ
  • #10: MagicOnionはC#でgRPCを使用するためのフレームワークですが、MagicOnionを使用しないでもC#でgRPCを利用することは可能です。 MagicOnionを使用する場合のgRPCとそうでない場合のgRPCを比較しすることで、MagicOnionの特徴を捉えていきたいと思います。
  • #14: Demo SampleソリューションのMixフォルダ