Azure Service Bus による SignalR スケールアウト (SignalR 1.x)
警告
このドキュメントは、SignalR の最新バージョン用ではありません。 SignalR の ASP.NET Coreを見てみましょう。
このチュートリアルでは、Service Bus バックプレーンを使用して各ロール インスタンスにメッセージを配布し、SignalR アプリケーションを Windows Azure Web ロールにデプロイします。
前提条件:
- Windows Azure アカウント。
- Windows Azure SDK。
- Visual Studio 2012。
Service Bus バックプレーンは、 Windows Server バージョン 1.1 の Service Bus とも互換性があります。 ただし、Windows Server 用 Service Bus のバージョン 1.0 と互換性がありません。
価格
Service Bus バックプレーンは、トピックを使用してメッセージを送信します。 最新の価格情報については、「 Service Bus」を参照してください。 この執筆時点では、1 か月あたり 1,000,000 件のメッセージを 1 ドル未満で送信できます。 バックプレーンは、SignalR ハブ メソッドの呼び出しごとにサービス バス メッセージを送信します。 また、接続、切断、グループの参加または脱退などの制御メッセージもあります。 ほとんどのアプリケーションでは、メッセージ トラフィックの大部分はハブ メソッド呼び出しになります。
概要
詳細なチュートリアルに進む前に、以下に、実行する操作の概要を示します。
Windows Azure portalを使用して、新しい Service Bus 名前空間を作成します。
次の NuGet パッケージをアプリケーションに追加します。
SignalR アプリケーションを作成します。
次のコードを Global.asax に追加して、バックプレーンを構成します。
protected void Application_Start() { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); RouteTable.Routes.MapHubs(); // ... }
アプリケーションごとに、"YourAppName" に異なる値を選択します。 複数のアプリケーションで同じ値を使用しないでください。
Azure サービスを作成する
「クラウド サービスを 作成してデプロイする方法」の説明に従って、クラウド サービスを作成します。 「方法: クイック作成を使用してクラウド サービスを作成する」セクションの手順に従います。 このチュートリアルでは、証明書をアップロードする必要はありません。
「Service Bus トピック/サブスクリプションの使用方法」の説明に従って、新しい Service Bus 名前空間を作成します。 「サービス名前空間の作成」セクションの手順に従います。
注意
クラウド サービスと Service Bus 名前空間に同じリージョンを選択してください。
Visual Studio プロジェクトを作成する
Visual Studio を起動します。 [ ファイル ] メニューの [ 新しいプロジェクト] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ Visual C#] を展開します。 [ インストールされているテンプレート] で[ クラウド ] を選択し、[ Windows Azure Cloud Service] を選択します。 既定値.NET Framework 4.5 のままにします。 アプリケーションに ChatService という名前を付け、[OK] をクリック します。
[ 新しい Windows Azure Cloud Service ] ダイアログで、[MVC 4 Web ロール ASP.NET 選択します。 右矢印ボタン (>) をクリックして、ソリューションにロールを追加します。
新しいロールの上にマウス ポインターを置くと、鉛筆アイコンが表示されます。 ロールの名前を変更するには、このアイコンをクリックします。 ロールに"SignalRChat" という名前を付け、[OK] をクリック します。
[新しい ASP.NET MVC 4 プロジェクト] ウィザードで、[インターネット アプリケーション] を選択します。 [OK] をクリックします。 プロジェクト ウィザードでは、次の 2 つのプロジェクトが作成されます。
- ChatService: このプロジェクトは Windows Azure アプリケーションです。 Azure ロールとその他の構成オプションを定義します。
- SignalRChat: このプロジェクトは、ASP.NET MVC 4 プロジェクトです。
SignalR チャット アプリケーションを作成する
チャット アプリケーションを作成するには、SignalR と MVC 4 を使用したはじめにチュートリアルの手順に従います。
NuGet を使用して、必要なライブラリをインストールします。 [ツール] メニューの [NuGet パッケージ マネージャー] を選択し、[パッケージ マネージャー コンソール] を選択します。 [ パッケージ マネージャー コンソール ] ウィンドウで、次のコマンドを入力します。
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus
オプションを -ProjectName
使用して、Windows Azure プロジェクトではなく、ASP.NET MVC プロジェクトにパッケージをインストールします。
バックプレーンを設定する
アプリケーションの Global.asax ファイルに、次のコードを追加します。
protected void Application_Start()
{
string connectionString = "";
GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");
RouteTable.Routes.MapHubs();
}
次に、Service Bus 接続文字列を取得する必要があります。 Azure portalで、作成した Service Bus 名前空間を選択し、[アクセス キー] アイコンをクリックします。
接続文字列をクリップボードにコピーし、 connectionString 変数に貼り付けます。
string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";
Azure にデプロイ
ソリューション エクスプローラーで、ChatService プロジェクト内の Roles フォルダーを展開します。
SignalRChat ロールを右クリックし、 [プロパティ] を選択します。 [ 構成 ] タブを選択します。[ インスタンス] で [2] を選択します。 VM のサイズを [Extra Small]\(特小\) に設定することもできます。
変更を保存します。
ソリューション エクスプローラーで、ChatService プロジェクトを右クリックします。 [発行] を選択します。
初めて Windows Azure に発行する場合は、資格情報をダウンロードする必要があります。 発行ウィザードで、[サインインして資格情報をダウンロードする] をクリックします。 これにより、Windows Azure portalにサインインし、発行設定ファイルをダウンロードするように求められます。
[ インポート] をクリックし、ダウンロードした発行設定ファイルを選択します。
[次へ] をクリックします。 [ 発行設定] ダイアログの [ クラウド サービス] で、前に作成したクラウド サービスを選択します。
[発行] をクリックします。 アプリケーションのデプロイと VM の起動には数分かかる場合があります。
ここで、チャット アプリケーションを実行すると、ロール インスタンスは Service Bus トピックを使用してAzure Service Busを介して通信します。 トピックは、複数のサブスクライバーを許可するメッセージ キューです。
バックプレーンによって、トピックとサブスクリプションが自動的に作成されます。 サブスクリプションとメッセージ アクティビティを表示するには、Azure portalを開き、Service Bus 名前空間を選択し、[トピック] をクリックします。
メッセージ アクティビティがダッシュボードに表示されるまで数分かかります。
SignalR は、トピックの有効期間を管理します。 アプリケーションがデプロイされている限り、トピックを手動で削除したり、トピックの設定を変更したりしないでください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示