Enviar pesquisa
Carregar
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
•
Transferir como PPTX, PDF
•
0 gostou
•
960 visualizações
K
keitasudo1
Seguir
C# Tokyo オンライン LT 大会 2021/01の発表資料 https://csharp-tokyo.connpass.com/event/200125/
Leia menos
Leia mais
Software
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Baixar agora
Recomendados
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin
賢太郎 前多
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
keitasudo1
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方
Hiroshi Tokumaru
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNA
Recomendados
Writing Spring WebFlux more esay with kotlin
Writing Spring WebFlux more esay with kotlin
賢太郎 前多
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
keitasudo1
Google borg と コンテナベース分散システムデザインパターン
Google borg と コンテナベース分散システムデザインパターン
ktateish
いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方
Hiroshi Tokumaru
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNA
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
Game Tools & Middleware Forum
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティ
LINE Corporation
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
NoOpsへ舵を切れ
NoOpsへ舵を切れ
Hiromasa Oka
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
Gruntwork Executive Summary
Gruntwork Executive Summary
Yevgeniy Brikman
Grafana Dashboards as Code
Grafana Dashboards as Code
Takuhiro Yoshida
Introduction to DevOps
Introduction to DevOps
Francesco Garavaglia
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
Jakarta EE + MicroProfile との付き合い方
Jakarta EE + MicroProfile との付き合い方
Hirofumi Iwasaki
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
Edureka!
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code
Shinichi Takahashi
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
Web開発の 今までとこれから
Web開発の 今までとこれから
Shinichi Takahashi
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
Mais conteúdo relacionado
Mais procurados
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
Game Tools & Middleware Forum
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティ
LINE Corporation
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
NoOpsへ舵を切れ
NoOpsへ舵を切れ
Hiromasa Oka
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
Gruntwork Executive Summary
Gruntwork Executive Summary
Yevgeniy Brikman
Grafana Dashboards as Code
Grafana Dashboards as Code
Takuhiro Yoshida
Introduction to DevOps
Introduction to DevOps
Francesco Garavaglia
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
Jakarta EE + MicroProfile との付き合い方
Jakarta EE + MicroProfile との付き合い方
Hirofumi Iwasaki
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
Edureka!
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code
Shinichi Takahashi
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
貴志 上坂
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
Mais procurados
(20)
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティ
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
NoOpsへ舵を切れ
NoOpsへ舵を切れ
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Gruntwork Executive Summary
Gruntwork Executive Summary
Grafana Dashboards as Code
Grafana Dashboards as Code
Introduction to DevOps
Introduction to DevOps
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
Jakarta EE + MicroProfile との付き合い方
Jakarta EE + MicroProfile との付き合い方
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
Azure DevOps Tutorial | Developing CI/ CD Pipelines On Azure | Edureka
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Semelhante a WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
Web開発の 今までとこれから
Web開発の 今までとこれから
Shinichi Takahashi
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
アシアル株式会社
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Sou Lab
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Issei Hiraoka
自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
Study Group by SciencePark Corp.
IPv6 アプリケーション開発入門
IPv6 アプリケーション開発入門
v6app
PyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Manabu Terada
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DIVE INTO CODE Corp.
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
Study Group by SciencePark Corp.
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
Rakuten Group, Inc.
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
JavaScript使いならきっととっつきやすいNode-REDについて
JavaScript使いならきっととっつきやすいNode-REDについて
Seigo Tanaka
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
Manato KAMEYA
Semelhante a WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
(20)
Web開発の 今までとこれから
Web開発の 今までとこれから
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
まだFTPで消耗してるの? Wordmoveではじめる 異次元のデータ転送
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
IPv6 アプリケーション開発入門
IPv6 アプリケーション開発入門
PyCon JP 2014 plone terada
PyCon JP 2014 plone terada
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
JavaScript使いならきっととっつきやすいNode-REDについて
JavaScript使いならきっととっつきやすいNode-REDについて
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
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に向けて乗り換えを模索していきましょう
Baixar agora