快速入門:使用 ASP.NET 和 SignalR 服務建立聊天室
Azure SignalR 服務依據的是 SignalR for ASP.NET Core 2.1,其並不完全相容於 ASP.NET SignalR。 Azure SignalR Service 會採用最新的 ASP.NET Core 技術來重新實作 ASP.NET SignalR 資料通訊協定。 對 ASP.NET SignalR 使用 Azure SignalR Service 時,不會再支援某些 ASP.NET SignalR 功能,例如當用戶端重新連線時,Azure SignalR 不會重播訊息。 此外,不支援 Forever Frame 傳輸和 JSONP。 需要變更某些程式碼並使用合適的相依程式庫版本,ASP.NET SignalR 應用程式才能搭配 SignalR 服務運作。
關於將 ASP.NET SignalR 及 ASP.NET Core SignalR 的功能比較的完整清單,請參閱版本差異文件。
在本快速入門中,您會了解如何開始使用類似聊天室應用程式的 ASP.NET 和 Azure SignalR Service。
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
必要條件
登入 Azure
使用您的 Azure 帳戶登入 Azure 入口網站 。
在本節中,您會建立基本 Azure SignalR 執行個體,以用於您的應用程式。 下列步驟會使用 Azure 入口網站來建立新的執行個體,但您也可以使用 Azure CLI。 如需詳細資訊,請參閱 Azure SignalR Service CLI 參考中的 az signalr create 命令。
- 登入 Azure 入口網站。
- 在頁面的左側,選取 [+ 建立資源]。
- 在 [建立資源] 頁面上的 [搜尋服務和市集] 文字方塊中,輸入 signalr,然後從清單中選取 [SignalR Service]。
- 在 [SignalR Service] 頁面上,選取 [建立]。
- 在 [基本] 索引標籤上,您會輸入新 SignalR Service 執行個體的重要資訊。 輸入下列值:
欄位 | 建議的值 | 描述 |
---|---|---|
訂用帳戶 | 選擇您的訂用帳戶 | 選取您要用來建立新 SignalR Service 執行個體的訂用帳戶。 |
資源群組 | 建立名為 SignalRTestResources 的新資源群組 | 選取或建立 SignalR 資源的資源群組。 針對本教學課程建立新的資源群組,而不是使用現有的資源群組,會很有用。 若要在完成本教學課程之後釋出資源,請刪除資源群組。 刪除資源群組同時會刪除群組所屬的所有資源。 此動作無法復原。 刪除資源群組之前,請確定其不包含您想要保留的資源。 如需詳細資訊,請參閱 使用資源群組來管理您的 Azure 資源。 |
資源名稱 | testsignalr | 輸入要對 SignalR 資源使用的唯一資源名稱。 如果您的區域中已採用 testsignalr,請新增數字或字元,直到成為唯一的名稱為止。 名稱必須是 1 到 63 個字元的字串,而且只能包含數字、字母和連字號 ( - ) 字元。 名稱的開頭或結尾不能是連字號字元,且連續連字號字元無效。 |
區域 | 選擇您的區域 | 選取新 SignalR Service 執行個體的適當區域。 Azure SignalR Service 目前不適用於所有區域。 如需詳細資訊,請參閱 Azure SignalR 區域可用性 |
定價層 | 選取 [變更],然後選擇 [免費 (僅限開發/測試)]。 選擇 [選取] 來確認您選擇的定價層。 | Azure SignalR Service 有三個定價層:免費、標準和進階。 除非必要條件中另有說明,否則教學課程會使用 [免費] 層。 如需有關階層與定價之間功能差異的詳細資訊,請參閱 Azure SignalR Service 定價 |
服務模式 | 選擇適當的服務模式 | 當您在 Web 應用程式中裝載 SignalR 中樞邏輯並使用 SignalR 服務做為 Proxy 時,請使用 [預設值]。 當您使用 Azure Functions 之類的無伺服器技術來裝載 SignalR 中樞邏輯時,請使用 [無伺服器]。 [傳統] 模式僅適用於回溯相容性,不建議使用。 如需詳細資訊,請參閱 Azure SignalR Service 中的服務模式。 |
您不需要針對 SignalR 教學課程變更 [網路] 和 [標籤] 索引標籤上的設定。
- 選取 [基本] 索引標籤底部的 [檢閱 + 建立] 按鈕。
- 在 [檢閱 + 建立] 索引標籤上,檢閱這些值,然後選取 [建立]。 需要數分鐘才能完成部署。
- 部署完成後,請選取 [移至資源] 按鈕。
- 在 SignalR 資源頁面上,從左側功能表的 [設定] 底下選取 [金鑰]。
- 複製主索引鍵的 [連接字串]。 稍後在本教學課程中,您需要此連接字串來設定您的應用程式。
無伺服器模式不支援 ASP.NET SignalR 應用程式。 對於 Azure SignalR 服務執行個體,務必使用預設或傳統。
您也可以使用建立 SignalR 服務指令碼,建立此快速入門中使用的 Azure 資源。
複製範例應用程式
在服務部署期間,讓我們來處理程式碼。 複製 GitHub 上的範例應用程式 \(英文\),設定 SignalR 服務連接字串,然後在本機執行該應用程式。
開啟 git 終端機視窗。 變更至您想要複製範例專案的資料夾。
執行下列命令來複製範例存放庫。 此命令會在您的電腦上建立範例應用程式副本。
git clone https://github.com/aspnet/AzureSignalR-samples.git
設定並執行聊天室的 Web 應用程式
啟動 Visual Studio 並開啟複製之存放庫的 aspnet-samples/ChatRoom/ 資料夾中的方案。
在開啟 Azure 入口網站的瀏覽器中,尋找並選取您建立的執行個體。
選取 [金鑰] 以檢視 SignalR 服務執行個體的連接字串。
選取並複製主要連接字串。
現在設定 web.config 檔案中的連接字串。
<configuration> <connectionStrings> <add name="Azure:SignalR:ConnectionString" connectionString="<Replace By Your Connection String>"/> </connectionStrings> ... </configuration>
在 Startup.cs 中,不需要呼叫
MapSignalR()
,您需要呼叫MapAzureSignalR({YourApplicationName})
並傳遞連接字串`使應用程式連線到服務,而非自行裝載 SignalR。 將{YourApplicationName}
取代為您的應用程式名稱。 這個名稱是此應用程式與其他應用程式相區別的唯一名稱。 您可以使用this.GetType().FullName
做為值。public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapAzureSignalR(this.GetType().FullName); }
您也需要參考服務 SDK,才能使用這些 API。 開啟 [工具] | [NuGet 套件管理員] | [套件管理員主控台],並執行命令:
Install-Package Microsoft.Azure.SignalR.AspNet
除了這些變更之外,其他一切均保持不變,您仍然可以使用您已經熟悉中樞介面撰寫商務邏輯。
注意
在實作中,對於由 Azure SignalR 服務 SDK 進行的交涉,會公開端點
/signalr/negotiate
。 用戶端嘗試連接並將用戶端重新導向至連接字串中定義的服務端點時,會傳回特殊的交涉回應。按 F5 以在偵錯模式中執行專案。 您可以看到應用程式在本機執行。 此時會連線到 Azure SignalR 服務,而不會裝載應用程式本身的 SignalR 執行階段。
清除資源
如果您將不繼續使用此應用程式,請使用下列步驟來刪除本快速入門所建立的全部資源,這樣才不會產生任何費用:
在 Azure 入口網站中選取最左側的 [資源群組],然後選取您所建立的資源群組。 或者,您也可以使用搜尋方塊來依資源群組的名稱尋找它。
在開啟的視窗中選取資源群組,然後按一下 [刪除資源群組]。
在新視窗中輸入要刪除之資源群組的名稱,然後按一下 [刪除]。
重要
刪除資源群組是無法回復的動作,資源群組和其內的所有資源將會永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。 如果您是在包含有需要保留之資源的現有資源群組內,建立用來裝載此範例的資源,則可以從每個資源各自的刀鋒視窗中個別刪除每個資源,而不必刪除正個資源群組。
登入 Azure 入口網站,然後選取 [資源群組]。
在 [依名稱篩選...] 文字方塊中,輸入您的資源群組名稱。 本快速入門的指示是使用名為 SignalRTestResources 的資源群組。 在結果清單中的目標資源群組上方,按一下 ...,然後按一下 [刪除資源群組]。
片刻過後,系統便會刪除該資源群組及其所有內含的資源。
下一步
在本快速入門中,您已建立新的 Azure SignalR 服務資源,並搭配 ASP.NET Core Web 應用程式使用該資源。 接下來將了解如何搭配 ASP.NET Core 使用 Azure SignalR 服務開發即時應用程式。