使用 Azure 服務匯流排的 SignalR 向外延展 (SignalR 1.x)
警告
本檔不適用於最新版的 SignalR。 看看ASP.NET Core SignalR。
在本教學課程中,您將使用服務匯流排後架將 SignalR 應用程式部署至 Windows Azure Web 角色,以將訊息散發至每個角色實例。
先決條件:
- Windows Azure 帳戶。
- Windows Azure SDK。
- Visual Studio 2012。
服務匯流排上架也與 Windows Server 1.1 版的服務匯流排相容。 不過,它與 Windows Server 服務匯流排 1.0 版不相容。
定價
服務匯流排上架會使用主題來傳送訊息。 如需最新的定價資訊,請參閱 服務匯流排。 在撰寫本文時,您可以每月傳送 1,000,000 則訊息,以少於 $1 美元。 背板會針對 SignalR 中樞方法的每個叫用傳送服務匯流排訊息。 還有一些控制訊息,適用于連線、中斷連線、聯結或離開群組等等。 在大部分應用程式中,大部分的訊息流量都會是中樞方法調用。
概觀
在進入詳細的教學課程之前,以下是您將執行的快速概觀。
使用 Windows Azure 入口網站建立新的服務匯流排命名空間。
將這些 NuGet 套件新增至您的應用程式:
建立 SignalR 應用程式。
將下列程式碼新增至 Global.asax 以設定背板:
protected void Application_Start() { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); RouteTable.Routes.MapHubs(); // ... }
針對每個應用程式,請為 「YourAppName」 挑選不同的值。 請勿在多個應用程式中使用相同的值。
建立 Azure 服務
建立雲端服務,如 如何建立和部署雲端服務中所述。 Follow the steps in the section "How to: Create a cloud service using Quick Create". 在本教學課程中,您不需要上傳憑證。
建立新的服務匯流排命名空間,如 如何使用服務匯流排主題/訂用帳戶中所述。 請遵循一節中的步驟。
注意
請務必為雲端服務和服務匯流排命名空間選取相同的區域。
建立 Visual Studio 專案
啟動 Visual Studio。 從 [檔案] 功能表,按一下 [新增專案]。
在 [ 新增專案] 對話方塊中,展開 [Visual C#]。 在 [已安裝的範本] 底下,選取 [ 雲端 ],然後選取 [Windows Azure 雲端服務]。 保留預設.NET Framework 4.5。 將應用程式命名為 ChatService,然後按一下 [確定]。
在 [ 新增 Windows Azure 雲端服務 ] 對話方塊中,選取 [ASP.NET MVC 4 Web 角色]。 按一下向右鍵按鈕 (>) 將角色新增至解決方案。
將滑鼠停留在新角色上方,讓鉛筆圖示可見。 按一下此圖示以重新命名角色。 將角色命名為 「SignalRChat」,然後按一下 [ 確定]。
在 [ 新增 ASP.NET MVC 4 專案 精靈] 中,選取 [網際網路應用程式]。 按一下 [確定]。 專案精靈會建立兩個專案:
- 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
使用 選項,將套件安裝至 ASP.NET MVC 專案,而不是 Windows Azure 專案。
設定上架
在應用程式的 Global.asax 檔案中,新增下列程式碼:
protected void Application_Start()
{
string connectionString = "";
GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");
RouteTable.Routes.MapHubs();
}
現在您需要取得服務匯流排連接字串。 在 Azure 入口網站中,選取您建立的服務匯流排命名空間,然後按一下 [存取金鑰] 圖示。
將連接字串複製到剪貼簿,然後將它貼到 connectionString 變數中。
string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";
部署至 Azure
在 Solution Explorer中,展開 ChatService 專案內的[角色] 資料夾。
以滑鼠右鍵按一下 SignalRChat 角色,然後選取 [ 內容]。 選取 [ 組態] 索引 標籤。在 [實例] 底下 ,選取 [2]。 您也可以將 VM 大小設定為 [額外小]。
儲存變更。
在 Solution Explorer 中,以滑鼠右鍵按一下 ChatService 專案。 選取 [發佈]。
如果這是您第一次發佈至 Windows Azure,您必須下載您的認證。 在 [ 發佈 精靈] 中,按一下 [登入以下載認證]。 這將會提示您登入 Windows Azure 入口網站,並下載發佈設定檔。
按一下 [匯 入],然後選取您下載的發佈設定檔。
按一下 [下一步] 。 在 [ 發佈設定] 對話方塊的 [ 雲端服務] 底下,選取您稍早建立的雲端服務。
按一下 [發佈]。 部署應用程式並啟動 VM 可能需要幾分鐘的時間。
現在當您執行聊天應用程式時,角色實例會使用服務匯流排主題透過 Azure 服務匯流排進行通訊。 主題是允許多個訂閱者的訊息佇列。
背板會自動建立主題和訂用帳戶。 若要查看訂用帳戶和訊息活動,請開啟 Azure 入口網站,選取服務匯流排命名空間,然後按一下 [主題]。
訊息活動需要幾分鐘的時間才會顯示在儀表板中。
SignalR 會管理主題存留期。 只要部署您的應用程式,請勿嘗試手動刪除主題或變更主題上的設定。