Submit Search
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
Download as PPTX, PDF
0 likes
1,060 views
K
keitasudo1
C# Tokyo オンライン LT 大会 2021/01の発表資料 https://csharp-tokyo.connpass.com/event/200125/
Software
Read more
1 of 14
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
More Related Content
PPTX
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
PDF
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
Yuta Matsumura
PDF
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
PDF
祝GA!! Azure Communication Services のメール送信機能について
Tomotaka Suzuki(御成門プログラマー)
PDF
大規模オンプレミス環境はGitOpsの夢を見るか(CI/CD Conference 2021 by CloudNative Days 発表資料)
NTT DATA Technology & Innovation
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
PDF
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
Yuta Matsumura
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
祝GA!! Azure Communication Services のメール送信機能について
Tomotaka Suzuki(御成門プログラマー)
大規模オンプレミス環境はGitOpsの夢を見るか(CI/CD Conference 2021 by CloudNative Days 発表資料)
NTT DATA Technology & Innovation
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
What's hot
(20)
PDF
Dockerを支える技術
Etsuji Nakai
PDF
Pythonによる黒魔術入門
大樹 小倉
PDF
ミッション : メガクラウドを安全にアップデートせよ!
Toru Makabe
PDF
PHPでWebSocketを実装してみてわかったこと
ksimoji
PDF
CPUから見たG1GC
Kenji Kazumura
PPTX
自己組織的なScrumチームの目指し方
Takuo Doi
PDF
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
com044
PDF
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
Insight Technology, Inc.
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
PPTX
Metaspace
Yasumasa Suenaga
PDF
バックアップ時の問題から学んだDBエンジニアに必要なスキルとは
TakeshiYamamoto2049
PDF
Well-Architectedな組織を 実現するためのチャレンジ - なぜ、CA W-Aを作ろうと思ったのか - #jawsdays 2019
Shota Tsuge
PPTX
Azure DevOps ハンズオン Vo.3 ~Delivery Plans を用いたプロジェクトのスケジュール管理~
Takunori Minamisawa
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
PPTX
[VP of Engineering Meetup] エンジニアのパフォーマンスを最大化させる組織活性化施策とは
atsuki_ito
PDF
開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み
Jumpei Miyata
PDF
Cloud Foundryで学ぶ、PaaSのしくみ講座
Kazuto Kusama
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
PDF
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
Katsuya Yamaguchi
PPTX
UTアンチパターン
ryoheiseki1
Dockerを支える技術
Etsuji Nakai
Pythonによる黒魔術入門
大樹 小倉
ミッション : メガクラウドを安全にアップデートせよ!
Toru Makabe
PHPでWebSocketを実装してみてわかったこと
ksimoji
CPUから見たG1GC
Kenji Kazumura
自己組織的なScrumチームの目指し方
Takuo Doi
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
com044
[db analytics showcase Sapporo 2018] B13 Cloud Spanner の裏側〜解析からベストプラクティスへ〜
Insight Technology, Inc.
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
Metaspace
Yasumasa Suenaga
バックアップ時の問題から学んだDBエンジニアに必要なスキルとは
TakeshiYamamoto2049
Well-Architectedな組織を 実現するためのチャレンジ - なぜ、CA W-Aを作ろうと思ったのか - #jawsdays 2019
Shota Tsuge
Azure DevOps ハンズオン Vo.3 ~Delivery Plans を用いたプロジェクトのスケジュール管理~
Takunori Minamisawa
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
[VP of Engineering Meetup] エンジニアのパフォーマンスを最大化させる組織活性化施策とは
atsuki_ito
開発者の生産性向上を妨げる障壁とサイボウズの生産性向上チームの取り組み
Jumpei Miyata
Cloud Foundryで学ぶ、PaaSのしくみ講座
Kazuto Kusama
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
Katsuya Yamaguchi
UTアンチパターン
ryoheiseki1
Ad
Similar to WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
(20)
PPTX
Windowsサービスも.NET Coreで作ろう
keitasudo1
PPTX
Web開発の 今までとこれから
Shinichi Takahashi
PDF
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
PDF
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
アシアル株式会社
PDF
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Sou Lab
PDF
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Issei Hiraoka
PPTX
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
PPTX
〜laravel で学ぶ MVC
mikakane
PDF
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
PPTX
Developers Containers for Basis, for team development.
Takao Tetsuro
PPTX
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
Study Group by SciencePark Corp.
PDF
IPv6 アプリケーション開発入門
v6app
PDF
PyCon JP 2014 plone terada
Manabu Terada
PDF
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DIVE INTO CODE Corp.
PDF
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
PPTX
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
Study Group by SciencePark Corp.
PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
PPT
ネットワーク分散型フレームワークConView
Rakuten Group, Inc.
PPTX
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
PDF
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
Windowsサービスも.NET Coreで作ろう
keitasudo1
Web開発の 今までとこれから
Shinichi Takahashi
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
アシアル株式会社
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Sou Lab
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Issei Hiraoka
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
〜laravel で学ぶ MVC
mikakane
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
Developers Containers for Basis, for team development.
Takao Tetsuro
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
Study Group by SciencePark Corp.
IPv6 アプリケーション開発入門
v6app
PyCon JP 2014 plone terada
Manabu Terada
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DIVE INTO CODE Corp.
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
Study Group by SciencePark Corp.
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
ネットワーク分散型フレームワークConView
Rakuten Group, Inc.
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
Ad
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
1.
WCFのパイプ通信を .NET 5に向けて gRPCへ置き換える話
2.
自己紹介 ID:suusanex( connpass・Twitter・GitHub共通)
名前:須藤圭太 サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属 4年ほど受託開発で、上流から下流まで全部を回す ここ6年ほどは、自社製品開発を担当 Windowsアプリ開発のネタが多い 勉強会もやってます。最近は開けていませんがそのうち再開します https://yokohama-win-dev-tips.connpass.com/ https://sciencepark.connpass.com
3.
WCFのパイプ通信とは何の話? Windowsアプリ開発で、ピンポイントで便利だった実装方法 Windowsサービスとデスクトップアプリで高速な通信をしたい
しかも双方向通信したい そのためのパイプ通信を、.NET Frameworkでは WCFで簡単に実装できた WCFらしく、クラスにメソッドを定義して 関数呼び出しの感覚で使える
4.
しかし、WCFは.NET 5で引退 .NET
5ではWCFサーバーを実装出来ないし、今後もサポート予定なし MSも丁寧なドキュメントでgRPCへの移行を促している ASP.NET Core gRPC に WCF を移行する理由 Microsoft Docs https://docs.microsoft.com/ja-jp/aspnet/core/grpc/why-migrate-wcf-to-dotnet- grpc?view=aspnetcore-5.0
5.
gRPCというやつに乗り換えよう! 気になるポイントがいくつかある パイプ通信できる?
関数呼び出しの感覚で使える? 双方向通信できる? .NET Frameworkのクライアントから呼べる? こういう疑問に答えつつ、軽くだけ実装方法を紹介します
6.
パイプ通信できる? できない しかし、localhostでのTCP/IP通信になるので、十分に速いはず
通信セッション開始・通信1回・通信セッション終了までを1セットとして計測 注意:開発環境での雑な実測結果 遜色なし WCF(Pipe) gRPC 初回の通信 0.1s 0.2s 2回目の通信 0.02s 0.005s 10回連続通信 0.2s 0.05s
7.
関数呼び出しの感覚で使える? 近いことはできる 一方的に送るだけなので、戻り値という考え方は無い
リクエストとレスポンスをペアで定義すれば良い 使用感はAsyncのメソッドと同じ
8.
双方向通信できる? できる Bidirectional
streaming RPC 最初のSubscribeで2つのストリームを作る サーバーとクライアントがそれぞれストリームを読む
9.
.NET Frameworkのクライアントから呼べ る? できる
同じ定義を共有することで、.NET 5のクライアントとも共存可能
10.
いけそう 気になる点は問題なかったので、移行して行けそう 移行していく上での実装方法を軽く紹介します
11.
少し詳しい実装方法 コマンドの定義 WCFのコントラクトの代わりに、protoファイルで定義を書く
色々書き方があるが、下記のようにするとWCFと同じイメージで使える message UserSesionToServiceRequest { oneof action { RegisterUserSessionRequest RegisterUserSession = 1; GetDataRequestParam GetDataRequest = 2; SendDataResponseParam SendDataResponse = 3; } } message RegisterUserSessionRequest{ int32 sessionId = 1; } メソッド(イメージ) クラス(イメージ) メソッドのパラメータ(イメージ)
12.
少し詳しい実装方法 送信側 ProtoファイルからC#のクラスを生成してくれる
開いたストリームにクラスをWriteすると送信になる await m_DuplexStream.RequestStream.WriteAsync(new UserSesionToServiceRequest { RegisterUserSession = new RegisterUserSessionRequest { SessionId = Process.GetCurrentProcess().SessionId } }); クラス用のストリーム メソッド(イメージ) クラス(イメージ) メソッドのパラメータ (イメージ)
13.
少し詳しい実装方法 受信側 ProtoファイルからC#のクラスを生成してくれる
開いたStreamをReadすると、受信したら制御が戻る await foreach (var req in subscribe.RequestStream.ReadAllAsync(cancellationToken)) { switch (req.ActionCase) { case UserSesionToServiceRequest.ActionOneofCase.RegisterUserSession: { var val = req.RegisterUserSession; クラス用のストリーム メソッド(イメージ) クラス(イメージ) メソッドのパラメータ (イメージ)
14.
まとめ 全く同じではないが、WCFに近いイメージでプロセス間通信を実現できる 同期でレスポンスを待つクラスを作れば、影響軽微で差し替えもできそう
WCFを使っている人は、 .NET 5に向けて乗り換えを模索していきましょう
Download