共用方式為


使用 Azure 服務匯流排的 SignalR 向外延展 (SignalR 1.x)

作者 :Patrick Fletcher

警告

本檔不適用於最新版的 SignalR。 看看ASP.NET Core SignalR

在本教學課程中,您將使用服務匯流排後架將 SignalR 應用程式部署至 Windows Azure Web 角色,以將訊息散發至每個角色實例。

此圖說明服務匯流排命名空間主題、Web 角色和可用電腦和帳戶之間的關聯性。

先決條件:

服務匯流排上架也與 Windows Server 1.1 版的服務匯流排相容。 不過,它與 Windows Server 服務匯流排 1.0 版不相容。

定價

服務匯流排上架會使用主題來傳送訊息。 如需最新的定價資訊,請參閱 服務匯流排。 在撰寫本文時,您可以每月傳送 1,000,000 則訊息,以少於 $1 美元。 背板會針對 SignalR 中樞方法的每個叫用傳送服務匯流排訊息。 還有一些控制訊息,適用于連線、中斷連線、聯結或離開群組等等。 在大部分應用程式中,大部分的訊息流量都會是中樞方法調用。

概觀

在進入詳細的教學課程之前,以下是您將執行的快速概觀。

  1. 使用 Windows Azure 入口網站建立新的服務匯流排命名空間。

  2. 將這些 NuGet 套件新增至您的應用程式:

  3. 建立 SignalR 應用程式。

  4. 將下列程式碼新增至 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 雲端服務 Visual C # 選項。

在 [ 新增 Windows Azure 雲端服務 ] 對話方塊中,選取 [ASP.NET MVC 4 Web 角色]。 按一下向右鍵按鈕 (>) 將角色新增至解決方案。

將滑鼠停留在新角色上方,讓鉛筆圖示可見。 按一下此圖示以重新命名角色。 將角色命名為 「SignalRChat」,然後按一下 [ 確定]。

[新增 Windows Azure 雲端服務] 畫面的螢幕擷取畫面,其中已醒目提示 [Windows Azure 雲端服務解決方案] 窗格中的 [訊號 R 聊天] 選項。

在 [ 新增 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 專案內的[角色] 資料夾。

Solution Explorer樹狀結構的螢幕擷取畫面,其中顯示 [聊天服務] 專案 [角色] 資料夾中所包含的 [訊號 R 聊天] 選項。

以滑鼠右鍵按一下 SignalRChat 角色,然後選取 [ 內容]。 選取 [ 組態] 索引 標籤。在 [實例] 底下 ,選取 [2]。 您也可以將 VM 大小設定為 [額外小]。

[組態] 索引標籤的 [實例] 區段螢幕擷取畫面,其中顯示 [實例計數] 欄位中輸入的 2,並將 [V M 大小] 欄位設定為 [額外小]。

儲存變更。

在 Solution Explorer 中,以滑鼠右鍵按一下 ChatService 專案。 選取 [發佈]。

螢幕擷取畫面Solution Explorer畫面的 [聊天服務] 專案,並以滑鼠右鍵按一下下拉式功能表,其中顯示 [發佈...選項。

如果這是您第一次發佈至 Windows Azure,您必須下載您的認證。 在 [ 發佈 精靈] 中,按一下 [登入以下載認證]。 這將會提示您登入 Windows Azure 入口網站,並下載發佈設定檔。

[發佈 Windows Azure 應用程式] 畫面的 [登入] 索引標籤的螢幕擷取畫面,其中已醒目提示 [登入以下載認證] 連結。

按一下 [匯 入],然後選取您下載的發佈設定檔。

按一下 [下一步] 。 在 [ 發佈設定] 對話方塊的 [ 雲端服務] 底下,選取您稍早建立的雲端服務。

[發佈 Windows Azure 應用程式] 畫面 [設定] 索引標籤的螢幕擷取畫面,其中顯示 [一般設定] 索引標籤中的 [雲端服務] 欄位。

按一下 [發佈]。 部署應用程式並啟動 VM 可能需要幾分鐘的時間。

現在當您執行聊天應用程式時,角色實例會使用服務匯流排主題透過 Azure 服務匯流排進行通訊。 主題是允許多個訂閱者的訊息佇列。

背板會自動建立主題和訂用帳戶。 若要查看訂用帳戶和訊息活動,請開啟 Azure 入口網站,選取服務匯流排命名空間,然後按一下 [主題]。

[雲端服務] 欄位的螢幕擷取畫面,其中已選取的 [雲端服務] 欄位現在已填入 Azure 入口網站,其中已醒目提示 [雲端服務名稱] 欄位。

訊息活動需要幾分鐘的時間才會顯示在儀表板中。

顯示訊息啟用時間表的 Azure 入口網站儀表板螢幕擷取畫面,其中顯示藍色和紫色線條,以指出不同的訊息歷程記錄。

SignalR 會管理主題存留期。 只要部署您的應用程式,請勿嘗試手動刪除主題或變更主題上的設定。