コンテンツへスキップ

AppFabric サービスバスの接続プールを実装

2011年10月24日

Webロールをクライアント、オンプレミスにサービスという一般的な構成で構築しています。

サービスに頻繁に接続するのですが、サービスバスへ接続(チャネルオープン)するのって2秒程かかるんです。これって結構なオーバーヘッドですよね。

そこで、Globalに共有変数を設けてそこにオープン済みのをセットしておいて使いまわしていたんですが、ロックしたりしてるわけじゃないし同時に要求が来て同時に使われたらちょっと微妙ですし。チャネルが使用可能な状態でない場合は新しいチャネルをオープンしてるので今のところ大勢に影響はないのですが、やはりちゃんと接続プールが欲しい!ということで実装しました。

サービスバスといえども、エンドポイント側から見れば所詮のところWCFのいちバインディングにすぎないので、WCFの接続プールの実装サンプルはないか探したところ、ありましたありました。

A Sample for WCF Client Proxy Pooling

http://blogs.msdn.com/b/wenlong/archive/2007/11/14/a-sample-for-wcf-client-proxy-pooling.aspx

これはTake-return-create modelなのだそうです。

Poolのインスタンスはアプリケーション状態変数に保持するようにしました。

今のところバッチリ稼働しています。初回のオープン時は2秒ぐらいかかってしまいますが、そのあとはその接続を再利用するのでサクサクです。

効率的に再利用してくれるので、課金的にも優しいです。

From → .NET, Azure

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。