SlideShare a Scribd company logo
Interactive
Connection
双方向で通信しながら解決していく業務について
Profile
システム構築のプロセス評価、改善、策定、開発フ
レームワークの設計、実装管理、プリセールスやプ
ロジェクトの立ち上げなど
ブログ : http://blog.processtune.com
プロフィール : Facebook, Twitter or MVP
コミュニティ : .NETラボの運営スタッフ
Microsoft MVP : July 2010 ~ Jun 2022
Current expertise : MVP for Developer Technologies
通信技術
03
Technologies
Contents
双方向通信
アーキテクチャ
01 02
04
Interactive Connection State Management
Solutions Architecture
ステート管理
10年前の通信基盤とインタラクティブ設計を現在の環境で更新
双方向通信
01
10年前の記事
通信基盤
WebSockets(標準規範)
WCF(Cometよりは汎用的)
Comet(独自プロトコル)
10年前のまとめ
双方向通信の実装は、イベン
ト駆動型プログラミングモデ
ルが主流になっていくのでは
ないでしょうか。
クライアントからの要求が起点になって、サーバーに問合せの
後サーバーにあるステートを取得する場合、ステートが他のク
ライアントから変更されたことを検知するためにポーリングす
る。
↓
他のクライアントからのステート変更をサーバーが検知したら、
全クライアントに変更を通知する双方向通信を行いたい。
↓
Ajax+Cometはカスタムプロトコルを使った通信を常時つなげて
おくことで実現し、WCFは相手のエンドポイントをお互いが管
理することで実現する。WebSocketsは標準規範でつなげておく
方法が用意されているので汎用的であり、こられの方法で双方
向通信としての要件を実装することができる。
双方向の実装にWCFクライアントとしてSilverlightを使っていたが、
現在はOSレベル(Windows 10以降)でHTTP/2+TSLを扱えるように
なっており、.NET Frameworkを使う場合はネイティブやブラウザ
ベースのアプリケーションでWindows.Networking.Socketsを使っ
た開発ができる。また、JavaScript WebSocketやEventSourceを使
って双方向通信のWebアプリ開発が容易になり、WebSocketでは
バイナリを扱えるようになった。
10年後
の現在
ストリームベースのメッセージングによるリアクター
パターンのプログラミングモデルによってステートフ
ルWebを構築するケースも流行っていくと思われる
現在から
10年後は
Stateful
Stateful
MW
ステートレスWebに対する解決1
マイクロサービスWeb app
Request
Response
State
State
…
モノリシックWeb app
State
State
State
Request
Response
業務ステートをEdge側に提供する
→永続化層にステートを保存
→→データを情報の塊にするための複数の操作が必要
→→他のユーザーのデータ操作を想定してデータロッ
クが必要
マイクロサービスの場合、業務ステートを最小のエン
ティティに分割して永続化層に保存する
→データを情報の塊にするためステートフル・ミドル
ウェアを形成し、スケーラビリティを確保
→→複雑な操作が不要になり、データロックも軽減
→→クラウドネイティブなアプリケーションを実現
Webがステートレスであるという制限の中での
サービス・エッジ間のステート共有の方法
State
State
State
Stateful
接続
Stateful
接続
Stateful
ステートレスWebに対する解決2
双方向通信
Request
State
…
単一ループ
State
State
業務ステートをEdge側に提供する
→永続化層にステートを保存
→データを情報の塊にするための複数の操作が必要
→他のユーザーのデータ操作を想定してデータロッ
クが必要
双方向通信の場合、業務ステートは最小のエンティテ
ィでレスポンスされる。永続化層はひとつ、またはマ
イクロサービスであれば複数に保存される。
→データを情報の塊にするため双方向通信の接続内で
ステートフルな状態を形成できる
→操作不要でデータの状態変更などを検知可能
→ステート変更操作を他の接続者(物)に送信可能
リクエスト/レスポンスのパラダイムを拡張し
イベント駆動型のソリューションを構築可能
State
State
Response
Request
Response
Response
Response
Request
10年前の記事
インタラクティブ設計
インタラクティブなシステムについて、その操作が重要なの
か?その結果のリソースの変化が重要なのかを切り口にして双
方向通信におけるリアルタイムを解説した。
現在はクラウドにおけるスケーラビリティやアベイラビリティ
が重要になってきているので、実装としてマイクロサービスな
どが増えてきており、サービス側がイベントドリブンであるこ
とや双方向通信であることが必ずしもインタラクティブなリア
ルタイムWebシステムに必須ではなくなってきている。
↓
右表のデータ中心の目的は複数のサービス(機能)が同一の永
続化層を持つことを想定しているが、マイクロサービスのステ
ートフルミドルウェアにおいては、必ずしもデータ変更時に即
時に他のEdge側に伝える必要はなく、Edge側が情報のステート
を必要とした際に的確に提供できるサービス実装になる
↓
現在は、ステート転送にストリームを使い、イベント駆動では
なくリアクターパターンを使うようなステートフルWebなども
選択肢になる。そのため、インタラクティブを設計する際に、
ユーザーストーリー、ドメインコンテキスト、エンティティ、
サブドメイン、ステート共有のスコープの再設計が必要な場合
もある
10年後
データ中心 操作中心
目的
データの変更を他
のシステムに即時
同期
操作が複雑なた
め、操作を分割し
てインタラクティブ
にする
例
帳票管理、マスタ
ー管理、アーカイ
ブ、学務情報等の
システム
オンライン分析、
データマイニング、
シミュレート、予実
管理、生産管理等
のシステム
メッセージング・ミドルウェアについて
ステート管理
02
分散オブジェクト
イベント・メッセージング各種
Asynchronous Messaging
(Message Queue)
SignalR
後述
HTTP
(Remote Procedure Call)
gRPC
Function
Distribute Messaging
(Message Queue)
Apache
Kafka
Kafka storage
HTTP
(Publish-subscribe)
Azure Web
PubSub
Broker
CORBA IDL WCF DCOM
Object Request Broker
(Remote Procedure Call)
Stub
TCP/IP
(Publish-subscribe)
MQTT
分散オブジェクトとマイクロサービスの違い
CORBA IDL WCF DCOM
Object Request Broker
(Remote Procedure Call)
Stub
言語/アーキテクチャに依存する。
分散オブジェクトの利点は現在の
インフラストラクチャで解決でき
る問題なので、それらの設計から
はすでに解放されている
ステートの変更の1トランザクションは
失敗しないので、リトライ/フォールバ
ック、ステートの一貫性の設計からは解
放される
Messaging model
実装
実装
アプローチ
通知形態
構成要素
分散システム
メッセージング
ミドルウェア
Remote
Procedure
Call
RMI
CORBA ver.
HTTP
XHR gRPC
Object
Request
Broker
CORBA IDL WCF DCOM
Message
queue
Apache
Kafka
SignalR
Pub-Sub
HTTP
Azure Web
PubSub
分散
ディレクトリ
…*
*分散トランザクションやリアルタイム・スケジューリングなど分散システムの実装によって複数の構成要素があります。
Point to
Point
Request
Response
Fan-out
通信技術
03
SignalRとWebSockets、Server-Sent Eventの関係、
gRPCとHTTPの関係について
SignalR bidirectional
SignalR multi protocols support
WebScokets & Server-Sent Event
WebSoc
kets
Azure
Web
PubSub
SignalR
Amazon
AppSync
API
Gateway
JavaScript
Server-
Sent Event
Azure
SignalR
Amazon
AppSync
API
Gateway
JavaScript
任意のイベントを送信
WebSokets & Server-Sent Event
WebSockets
送信: 両方向
接続数:
機能:
制限無し
リアルタイム双方向
UTF-8、バイナリ
注意点: 企業向けFW
Server-Sent Event
送信: ブラウザへ
接続数(HTTP 1.1):
機能:
6
自動再接続、イベントID
接続数(HTTP/2):
データタイプ:
制限無し(既定100)
UTF-8
データタイプ:
クライアント切断検知
Content-Type: text/event-stream
Content-Type: meaningless
gRPC
双方向ストリーミング、フロ
ー制御、ヘッダー圧縮、単一
のTCP接続上でのリクエストの
多重化
バイナリ・シリアライゼ
ーション、JSONへの正
規のマッピング、マルチ
言語対応
インターフェース記述言語にはProtocol
Buffersを使用し、認証、双方向ストリーミ
ングとフロー制御、ブロッキングまたはノ
ンブロッキングバインディング、キャンセ
ルとタイムアウトなどの機能を提供
Protocol Buffers
Agility Effects
モバイルではバッテリー
寿命とデータ使用量を節
約し、クラウドで動作す
るサービスやウェブアプ
リケーションを高速化す
る
HTTP/2
gRPC
H
E
A P
gRPC/HTTP2 & gRPC-web
NET 実装 gRPC over HTTP/2 gRPC-Web
.NET 5 以降 ✔️ ✔️
.NET Core 3 ✔️ ✔️
.NET Core 2.1 ❌ ✔️
.NET Framework 4.6.1 ⚠️† ✔️
Blazor WebAssembly ❌ ✔️
Mono 5.4 ❌ ✔️
Xamarin.iOS 10.14 ❌ ✔️
Xamarin.Android 8.0 ❌ ✔️
Universal Windows Platform ❌ ✔️
Unity 2018.1 ❌ ✔️
⚠️† .NET Framework では、WinHttpHandler の構成と、Windows 10 ビルド 19622 以降が必要です。
出典 : https://docs.microsoft.com/ja-jp/aspnet/core/grpc/supported-platforms?view=aspnetcore-5.0
1.1 2.0
確立した接続で複数要求に対
応可能、新しい接続が必要な
場合でも既存接続設定を共有
↓
要求の待ちを軽減
接続・切断を軽減するため接
続を共有し複数の要求に対応
↓
要求の待ちが多発
HTTP
Http Request
E S
Http Response
接続の確立
接続毎設定
E S
接続設定を
共有
TSL/Settings : TCP
前の要求の終了待ち or
新規接続のアイドル待ち
同一接続で複
数要求を処理
要求終了を待たず
に次の要求送信可
1.1 2.0
ヘッダが圧縮され要求が小さく
なるのでひとつの接続で多くの
要求を処理することが可能
↓
接続の新規追加を軽減
すべての要求で同じヘッダが
テキストにて送信されます
HTTP Connection
E S
Http Request
Http Response
Header (Text)
1.1
すべての要求で同じヘッダが
テキストにて送信されます
E S
Http Request
Header (Text) E S
Http Request
Http Response
Header (HPACK)
要求への返答は
順番とブロッキングが発生
要求処理の
終了順に返答
ひとつの接続で並行処理し
バイナリで受送信
アーキテクチャ
04
ソリューション構築の基盤について
Distributed Application Runtime
出典 : https://https://dapr.io/
Microservice Messaging
Cloud Endpoints for gRPC
右図の出典 : https://cloud.google.com/endpoints/docs/grpc/architecture-overview
Language subset for Microservices + gRPC
slidesgo : 本プレゼンテーションのテンプレートWebサイト(本プレゼンテーションのURL)
https://slidesgo.com/ (https://slidesgo.com/theme/darkle-slideshow#search-Darkle+Slideshow&position-0&results-1)
Cloud Native Computing Foundation (CNCF) :
https://www.cncf.io/
Introducing gRPC, a new open source HTTP/2 RPC Framework :
https://developers.googleblog.com/2015/02/introducing-grpc-new-open-source-http2.html
Announcing HTTP/2 support in Azure App Service :
https://azure.microsoft.com/ja-jp/blog/announcing-http-2-support-in-azure-app-service/
WHATWG :
https://whatwg.org/
Use HTTP/2 on IIS :
https://docs.microsoft.com/ja-jp/iis/get-started/whats-new-in-iis-10/http2-on-iis
Use HTTP/2 with the ASP.NET Core Kestrel web server :
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/http2?view=aspnetcore-5.0
Configure options for the ASP.NET Core Kestrel web server :
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/options?view=aspnetcore-5.0#http2-limits
WebSocket :
https://docs.microsoft.com/ja-jp/windows/uwp/networking/websockets
Azure Web PubSub :
https://azure.microsoft.com/en-us/services/web-pubsub/
Reference Links 1
Azure SignalR サービスとは :
https://docs.microsoft.com/ja-jp/azure/azure-signalr/signalr-overview
Cloud Native Apps (monthly resource) :
https://github.com/microsoft/monthlyresources/?ocid=AID303759
HTTP/2 in Windows 10: Browser, Apps and Web Server :
https://channel9.msdn.com/Events/Build/2015/3-88
Server Events :
https://docs.servicestack.net/server-events#server-event-clients
Azure Web PubSub Serviceを触ってみた :
https://www.slideshare.net/ssuser293809/azure-web-pubsub-service
Microservices and the First Law of Distributed Objects :
https://martinfowler.com/articles/distributed-objects-microservices.html
OASIS Message Queuing Telemetry Transport (MQTT) TC :
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt
Use streaming in ASP.NET Core SignalR :
https://docs.microsoft.com/en-us/aspnet/core/signalr/streaming?view=aspnetcore-5.0
Azure Web PubSub : GitHub
https://github.com/Azure/azure-webpubsub
gRPC services with ASP.NET Core : Visual Studio
https://docs.microsoft.com/en-us/aspnet/core/grpc/aspnetcore?view=aspnetcore-5.0&tabs=visual-studio
Reference Links 2
High-performance Services with gRPC: What's new in .NET 5 :
https://channel9.msdn.com/events/dotnetConf/2020/High-performance-Services-with-gRPC-Whats-new-in-NET-
5?term=gRPC%20HTTP2&pubDate=year&lang-ja=true&lang-en=true
gRPC Web with .NET :
https://channel9.msdn.com/Shows/On-NET/gRPC-Web-with-NET?term=gRPC%20HTTP2&pubDate=year&lang-
en=true&pageSize=15
.NET Core での gRPC のトラブルシューティング :
https://docs.microsoft.com/ja-jp/aspnet/core/grpc/troubleshoot?view=aspnetcore-5.0
APACHE KAFKA :
https://kafka.apache.org/
Quickstart: Create a serverless simple chat application with Azure Functions and Azure Web PubSub service :
https://docs.microsoft.com/en-us/azure/azure-web-pubsub/quickstart-serverless?tabs=javascript
NET での gRPC でサポートされているプラットフォーム :
https://docs.microsoft.com/ja-jp/aspnet/core/grpc/supported-platforms?view=aspnetcore-5.0
Cloud Endpoints for gRPC :
https://cloud.google.com/endpoints/docs/grpc/about-
grpc#:~:text=gRPC%20is%20a%20high%20performance,create%20distributed%20applications%20and%20services.
Ballerina :
https://ballerina.io/?utm_source=article&utm_medium=infoq&utm_campaign=ingoq_article_grpc_infoq_jul20
Reference Links 3
CREDITS: This presentation template was created by Slidesgo,
including icons by Flaticon, infographics & images by Freepik
Thank You
Please keep this slide for attribution
Do you have any questions?
youremail@freepik.com
+91 620 421 838
yourcompany.com
Alternative Resources
Photos
▴ Creative black friday composition on black background
▴ Black gift with golden glitter composition
▴ Two blonde girls dancing at new year party
▴ Golden glitter with slate background concept
▴ Friends posing with golden balloons at a new year party
Presentation’s Resources
Did you like the resources on this template? Get them for
free at our other websites:
Vectors
▴ Elegant dark background with polygonal shapes
Photos
▴ Shopping cart with gifts arrangement in golden glitter
▴ Assortment of black friday gifts with golden glitter
▴ Woman with a carnival mask on a dark background
▴ Golden glitter on black background
▴ Friends toasting new year party

More Related Content

PPTX
Chat bot created by QnA Maker
PPTX
OpenStreetMap and Mapbox
PPTX
Interoperability of webassembly with javascript
PDF
.NET Micro Framework (プラレールと電子工作)
PPTX
祝GA、 Service Fabric 概要
PDF
C#ユーザー会 //build/ まとめ(サーバー編)
PPTX
Relationship betweenddd and mvc
PPTX
Logic Apps/Flow Update Summary
Chat bot created by QnA Maker
OpenStreetMap and Mapbox
Interoperability of webassembly with javascript
.NET Micro Framework (プラレールと電子工作)
祝GA、 Service Fabric 概要
C#ユーザー会 //build/ まとめ(サーバー編)
Relationship betweenddd and mvc
Logic Apps/Flow Update Summary

What's hot (20)

PDF
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
PDF
「何もしないのにCIが失敗した」を防ぐ
PDF
Apache Spark on Azure
PDF
Azure Data Box Family Overview and Microsoft Intelligent Edge Strategy
PDF
Windows Server Container and Windows Subsystem for Linux
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
PDF
Tech Dojo 02/09 IBM Japan CSM
PDF
【de:code 2020】 Azure インフラ 最新アップデート!!
PPTX
SB TechNight #5 ~AVD構築のアレコレ~
PDF
Microsoft Azure Stack Overview and Roadmap - March 7th, 2019.
PDF
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
PDF
Modernization of IT Infrastructure by Microsoft Azure
PDF
Sb tech night#1_document_otsuki_202104
PDF
Azure DevOps Management in Organization
PPTX
.NET開発者のためのMicrosoft Learn入門
PPTX
深層学習 環境構築 Azure
PPTX
msal.js v2を触る
PPTX
Azure Arc Enabled Serverの活用
PDF
Azure Updates from Build 2021
PDF
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
「何もしないのにCIが失敗した」を防ぐ
Apache Spark on Azure
Azure Data Box Family Overview and Microsoft Intelligent Edge Strategy
Windows Server Container and Windows Subsystem for Linux
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Tech Dojo 02/09 IBM Japan CSM
【de:code 2020】 Azure インフラ 最新アップデート!!
SB TechNight #5 ~AVD構築のアレコレ~
Microsoft Azure Stack Overview and Roadmap - March 7th, 2019.
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Modernization of IT Infrastructure by Microsoft Azure
Sb tech night#1_document_otsuki_202104
Azure DevOps Management in Organization
.NET開発者のためのMicrosoft Learn入門
深層学習 環境構築 Azure
msal.js v2を触る
Azure Arc Enabled Serverの活用
Azure Updates from Build 2021
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
Ad

Similar to Interactive connection2 (20)

PDF
MQTTとAMQPと.NET
PDF
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
PPT
20060520.tcp
PDF
SignalRブートキャンプ
PDF
これから利用拡大?WebSocket
PDF
20120525 mt websocket
PDF
A 1-2 One ASP.NET - ASP.NET Web Stack
PDF
Let's begin WebRTC
PDF
Teamsの裏側? Azure Communication Servicesのプレビューが出たので、さっそく触ってみた話
PPTX
Windows Azure Appfabric as "Middleware as a Services"
PDF
WebSocket Protocol と Plack::Middleware::WebSocket
PDF
ネットワークコマンド入力に対応したツール事例
PDF
Ignite 2021秋 recap - 開発者向け新機能紹介
PPT
Lesson01
 
PPTX
できる!サーバレスアーキテクチャ
PDF
第7回勉強会 ネットワークの基礎
PDF
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
PPT
システムと情報の数理・ネットワーク概論
PDF
Janogia20120921 yoshinotakeshi
PDF
ハイブリッドなサービス統合におけるAzureサービスの活用
MQTTとAMQPと.NET
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
20060520.tcp
SignalRブートキャンプ
これから利用拡大?WebSocket
20120525 mt websocket
A 1-2 One ASP.NET - ASP.NET Web Stack
Let's begin WebRTC
Teamsの裏側? Azure Communication Servicesのプレビューが出たので、さっそく触ってみた話
Windows Azure Appfabric as "Middleware as a Services"
WebSocket Protocol と Plack::Middleware::WebSocket
ネットワークコマンド入力に対応したツール事例
Ignite 2021秋 recap - 開発者向け新機能紹介
Lesson01
 
できる!サーバレスアーキテクチャ
第7回勉強会 ネットワークの基礎
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
システムと情報の数理・ネットワーク概論
Janogia20120921 yoshinotakeshi
ハイブリッドなサービス統合におけるAzureサービスの活用
Ad

More from Takao Tetsuro (20)

PPTX
Introduction to GitHub - Codespacesハンズオン.pptx
PPTX
Data for AI and AI Agent Routing of Multi AI Agent
PPTX
Dev Containers Customization Short version
PPTX
Developers Containers for Basis, for team development.
PPTX
Small Language Model Local Launch on AI Tour Tokyo
PPTX
local launch small language model of AI.
PPTX
Implementation Approach of Artifical Intelligence
PPTX
MAUIGraphicsNamespace.pptx
PPTX
Polyglot Persistence and Graph Schema
PPTX
ServiceMeshEndpointWithMinimalAPIPublish.pptx
PPTX
OptonsPatternDotNet.pptx
PPTX
ASP.NETCoreOptionsPattern.pptx
PPTX
gRPCurlDotNet.pptx
PPTX
Layout isfirstprocessofatomicdesign
PPTX
Wasm blazor and wasi 2
PPTX
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
PPTX
Team development
PPTX
M365VM_PowerFX_takao-matsumoto_matsui_kojima
PPTX
Excel on OneDrive is not a file
PPTX
Development toolsforteamdevelopment
Introduction to GitHub - Codespacesハンズオン.pptx
Data for AI and AI Agent Routing of Multi AI Agent
Dev Containers Customization Short version
Developers Containers for Basis, for team development.
Small Language Model Local Launch on AI Tour Tokyo
local launch small language model of AI.
Implementation Approach of Artifical Intelligence
MAUIGraphicsNamespace.pptx
Polyglot Persistence and Graph Schema
ServiceMeshEndpointWithMinimalAPIPublish.pptx
OptonsPatternDotNet.pptx
ASP.NETCoreOptionsPattern.pptx
gRPCurlDotNet.pptx
Layout isfirstprocessofatomicdesign
Wasm blazor and wasi 2
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Team development
M365VM_PowerFX_takao-matsumoto_matsui_kojima
Excel on OneDrive is not a file
Development toolsforteamdevelopment

Interactive connection2