サービスバス - Microsoft

T1-305
マイクロソフト株式会社
デベロッパー&プラットフォーム統括本部
エバンジェリスト
中原 幹雄
http://blogs.msdn.com/mikion/
.NET Services とは?
サービスバスのアーキテクチャと詳細
まとめ
ワークフロー サービス
アクセス
コントロール
サービス
内製
サービス
サービスバス
クライアント
Desktop,
デスクトップ
RIA,RIA
Web
Web
オンプレミス ESB
ESB
MS/3 rd パーティー サービス
ネーミング
(Naming)
ID フェデレーションと
アクセス コントロール
サービス レジストリ
(アクセス コントロール サービス)
(Service Registry)
メッセージング
(Messaging Fabric)
ネーミング (Naming)
サービス アドレスの名前解決
サービス レジストリ (Service Reqistry)
サービスの登録と公開
メッセージング (Messaging Fabric)
クライアント⇔サービス間の通信
ネーミング
(Naming)
ID フェデレーションと
アクセス コントロール
(アクセス コントロール サービス)
サービス レジストリ
(Service Registry)
メッセージング
(Messaging Fabric)
さまざまな課題:
IPv4 アドレス
動的な IP アドレスの割り当て (DHCP)
NAT (Network Address Translation)
ファイアウォール
マシン ファイアウォール
ネットワーク ファイアウォール
NAT ポート マッピング
NAT
ネットワーク ファイアウォール
マシン ファイアウォール
?
クライアント
Dynamic DNS
サービス
インバウンド ポートの開放
.NET Services による解決策
サービスバスを経由し、クライアントとサービ
スを接続
呼び出し先サービス名をサービスバスによって解決
NAT やファイアウォールを容易に越えられる
ファイアウォール=インバウンド ポートを開放しなくてよ
い
IP アドレスの変更などを即時に更新
サービス名=サービスのエンドポイント
サービスバス
NAT
ネットワーク ファイアウォール
マシン ファイアウォール
クライアント
サービス
サービスバスとの間に
確立した接続を通して通信
現 CTP 版:
sb://servicebus.windows.net/services/solution/name/...
必須プレフィックス
solution
ルート
SB.W.N
services
name
...
...
将来版では ...
solution.servicebus.windows.net name ...
...
ネーミング
(Naming)
ID フェデレーションと
アクセス コントロール
(アクセス コントロール サービス)
サービス レジストリ
(Service Registry)
メッセージング
(Messaging Fabric)
サービスのエンドポイント公開用レジストリ
ネーミング システムと連携
汎用のディレクトリー サービスではない
レジストリへのアクセス:
http://servicebus.windows.net/services/solution/
発見 (Discover):Atom 1.0 フィード
公開 (Publishing):AtomPub、WS-Transfer
クライアント
WS-Transfer
AtomPub
サービス
レジストリ
ネーミング
ネーミング
(Naming)
ID フェデレーションと
アクセス コントロール
(アクセス コントロール サービス)
サービス レジストリ
(Service Registry)
メッセージング
(Messaging Fabric)
プログラミング モデル
専用の WCF バインディングを提供
.NET 以外:Java、Ruby 用の SDK も公開
WCF 標準バインディング
サービスバス リレー バインディング
BasicHttpBinding
BasicHttpRelayBinding
WebHttpBinding
WebHttpRelayBinding
WSHttpBinding
WSHttpRelayBinding
WS2007HttpBinding
WS2007HttpRelayBinding
WSHttpContextBinding
WSHttpRelayContextBinding
WS2007HttpFederationBinding
WS2007HttpRelayFederationBinding
NetTcpBinding
NetTcpRelayBinding
NetTcpContextBinding
NetTcpRelayContextBinding
n/a [NetMsmqBinding に近しい]
NetOnewayRelayBinding
n/a [NetTcpPeerBinding に近しい]
NetEventRelayBinding
メッセージング方式:
Oneway
ユニキャスト通信
サービスバス
Oneway
クライアント
サービス
Event
マルチキャスト通信
Event
Request-Reply
(基本は) リレー型通信
Tcp
Tcp/Relayed
Tcp/Hybrid (Tcp/Direct)
• 直接型通信
Http
クライアント
サービス
サービス
サービス
Request-Reply
クライアント
サービス
sb://servicebus.windows.net/services/solution/a/b/
バックエンドの
ネーミング・
ルーティング
ファブリック
ルーティング
サブスクライブ
サービスバス
フロントエンド
ノード
NLB
TCP/SSL
808/828
メッセージ
クライアント
TCP/SSL
828
メッセージ
NAT
ファイアウォール
Dynamic IP
サービス
バックエンドの
ネーミング・
ルーティング
ファブリック
http://servicebus.windows.net/services/solution/a/b
/
ルーティング
サブスクライブ
サービスバス
クライアント
バッファ作成
メッセージ
メッセージ バッファ
サブスクライブ
メッセージ
サブスクライブ
フロントエンド
ノード
サービス
少量メッセージを一方的&非同期に送信
サービスバス上のメッセージ キューを介して
メッセージを転送
ConnectivityMode:Tcp/Http/AutoDetect
制限事項:
最大メッセージ サイズ=60KB
HTTP:最大バッファ サイズ=256KB
ファイアウォール要件:
Tcp:アウトバウンド ポート 808/818/828
Http:アウトバウンド ポート 80/443
sb://servicebus.windows.net/services/solution/a/b/
バックエンドの
ネーミング・
ルーティング
ファブリック
ルーティング
サブスクライブ
サービスバス
フロントエンド
ノード
TCP/SSL
828
TCP/SSL
808/828
メッセージ
クライアント
メッセージ
TCP/SSL
828
メッセージ
サービス
サービス
少量メッセージをマルチキャスト送信
NetOnewayRelayBinding のマルチキャスト版
ConnectivityMode:Tcp/Http/AutoDetect
制限事項:
最大メッセージ サイズ=60KB
HTTP:最大バッファ サイズ=256KB
現 CTP 版:最大同時待ち受けサービス=20
ファイアウォール要件:
Tcp:アウトバウンド ポート 808/818/828
Http:アウトバウンド ポート 80/443
NetTcpBinding
接続モード (ConnectionMode):
Relayed (リレー モード) = Tcp/Relayed
サービス バスを介してクライアントとサービス間を中継接
続する
Direct (ダイレクト モード)
クライアントとサービス間を直接接続する
※現 CTP 版では “Hybrid” と同じ挙動
Hybrid (ハイブリッド モード) = Tcp/Hybrid
クライアントとサービス間で直接接続可能な場合は直接
接続し (Direct)、そうでない場合はサービス バスを介して
リレー接続する (Relayed)
<netTcpRelayBinding>
<binding name="default" connectionMode="Hybrid">
</binding>
</netTcpRelayBinding>
sb://servicebus.windows.net/services/solution/a/b/
バックエンドの
ネーミング・
ルーティング
ファブリック
一方向ランデブー
コントロール
メッセージ
フロントエンド
ノード
NLB
サービスバス
コントロール
メッセージ
2
3
TCP/SSL
818
1
クライアント
コントロール
メッセージ
ソケット-ソケット間
メッセージ転送
4
サービス
最もおススメなメッセージング方式
転送データ量が最も少なくなる
最短の待ち時間&最高のスループット
ストリーミングをサポート (サイズ制限なし)
ファイアウォール要件:
アウトバウンド ポート 808/818/828
バックエンドの
ネーミング・
ルーティング
ファブリック
sb://servicebus.windows.net/services/solution/a/b/
一方向ランデブー
コントロール
メッセージ
サービスバス
フロントエンド
ノード
TCP/SSL
818, 819
コントロール
メッセージ
クライアント
サービス
NAT を越えた直接接続
P2P での大量メッセージ転送向き
可能ならばクライアント⇔サービス間を直接接続
短い待ち時間&高スループット
ストリーミングをサポート (サイズ制限なし)
制限事項:
NAT が混雑している場合、直接接続に成功する
確率は低くなる
現行 CTP 版:いくつかの機能が使用不能
WS-ReliableMessaging、WS-Security
ファイアウォール要件:
アウトバウンド ポート 808/818/819/828
sb://servicebus.windows.net/services/solution/a/b/
バックエンドの
ネーミング・
ルーティング
ファブリック
一方向ランデブー
コントロール
メッセージ
フロントエンド
ノード
NLB
サービスバス
コントロール
メッセージ
2
3
HTTP/S
80/443
1
クライアント
コントロール
メッセージ
HTTP-ソケット間
メッセージ転送
4
サービス
最も相互運用性が高い
HTTP サービスに対する透過的な ”リバース
プロキシ”
制約事項:
推奨:可能な限り “TCP” を利用する
現行 CTP版:著しくパフォーマンスが悪い
ファイアウォール要件:
サービス:アウトバウンド ポート 818/828
クライアント:アウトバウンド ポート 80/443
.NET Services サービス バスにより、
オンプレミス ホステッドなサービスをクラ
ウドを介して利用可能にします!
NAT やファイアウォールを越えて...
クラウド (Widows Azure) ホステッドな
サービスも、サービス バスに接続可能
専用の WCF バインディングを提供
標準プロトコル ベース
Java や Ruby からも利用可能 (SDK を公開)
複数の接続方式が選択可能
Oneway、Event、Request-Reply
Tcp、Http (SOAP、REST)
Azure Services Platform
http://www.microsoft.com/azure/default.mspx
[MSDN] Microsoft .NET Services
http://msdn.microsoft.com/azure/netservices.aspx
.NET Services Team Blog
http://blogs.msdn.com/netservices/
.NET Services SDK ダウンロード
.NET Services SDK (Dec 2008 CTP)
http://go.microsoft.com/fwlink/?LinkID=129448
Java SDK for .NET Services
http://www.jdotnetservices.com/
Ruby SDK for .NET Services
http://www.dotnetservicesruby.com/
[.NET Services 関連]
T1-304 .NET Services 概要
T1-306 .NET Services:ワークフロー サービスによるクラウド サービスの
オーケストレーション
T1-307 .NET Services:アクセス コントロール サービス
T1-401 クラウド コンピューティングのエッセンス
[WCF/WF 関連]
T3-301 “Dublin”:WCF/WF サービスのためのアプリケーション サーバー
T3-305 Data Services におけるデータアクセスと同期
T3-306 WCF/WF 4.0:ワークフローサービス開発の進化
[その他クラウド関連]
T1-301 Windows Azure プログラミング
T1-302 Windows Azure ストレージ サービス
T1-303 Windows Azure 管理機能
T1-308 SQL Services 概要
T1-402 “Geneva”:フェデレーショナルなクレームベース ID モデルの適用
T1-403 Web 2.0 スタイル サービスのアーキテクチャと実装
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.