使用 Azure SignalR 服務調整 ASP.NET Core SignalR 應用程式
開發 SignalR 應用程式
SignalR Service 目前有兩個版本可供 Web 應用程式使用:
- ASP.NET SignalR
- 新的 ASP.NET Core SignalR
ASP.NET Core SignalR 是前一個版本重新撰寫的版本。 因此,ASP.NET Core SignalR 與先前版本的 SignalR 不回溯相容。 API 和行為不同。 Azure SignalR Service 支援這兩個版本。
Azure SignalR Service 可讓您在多個平台 (Windows、Linux 和 macOS)、Azure App Service、IIS、Nginx、Apache、Docker 上裝載實際的 Web 應用程式。 您也可以在自己的處理序中使用自我裝載。
如果應用程式的目標包括下列項目,則 Azure SignalR Service 是最佳選擇:
- 支援最新功能,使用即時內容更新 Web 用戶端
- 跨多個平台執行 (Azure、Windows、Linux 和 macOS)
- 裝載於不同的環境
為何不自行部署 SignalR?
自行部署支援 SignalR 的 Azure 應用程式,作為您整體 Web 應用程式的後端元件仍是有效的方法。
使用 Azure SignalR 服務的其中一個主要原因是簡單。 使用 Azure SignalR 服務,您不需要處理效能、延展性、可用性等問題。 該服務以 99.9% 的服務等級協定為您處理這些問題。
此外,WebSocket 通常是支援即時內容更新所偏好使用的技術。 不過,隨著您調整,對大量持續的 WebSocket 連線進行負載平衡變成要解決的複雜問題。 常見的解決方案用途:DNS 負載平衡、硬體負載平衡器和軟體負載平衡。 Azure SignalR 服務會為您處理此問題。
針對 ASP.NET Core SignalR,另一個可能的原因是您根本不需要實際裝載 Web 應用程式。 您 Web 應用程式的邏輯可能會使用無伺服器運算。 舉例來說,或許您的程式碼只在需要時才使用 Azure 函式觸發程序裝載和執行。 這種情況可能較為棘手,因為您的程式碼在需要時才執行,而且不需要維持長時間用戶端連線。 Azure SignalR 服務可以處理這種情況,因為該服務已經為您管理連線。 如需詳細資訊,請參閱如何使用 SignalR Service 與 Azure Functions 概觀。 由於 ASP.NET SignalR 使用不同的通訊協定,因此不支援這類無伺服器模式。
它如何調整?
SignalR 通常會隨 SQL Server、Azure 服務匯流排或 Azure Cache for Redis 進行調整。 Azure SignalR 服務會為您處理調整方式。 效能和成本與這些方法相當,但沒有處理這些其他服務的複雜性。 您只需要更新服務的單位計數即可。 每個單位最高支援 1000 個用戶端連線。