使用 Azure SignalR 服務調整核心 SignalR 應用程式 ASP.NET

開發SignalR 應用程式

SignalR 目前有兩個版本可供 Web 應用程式使用:

  • ASP.NET SignalR
  • new ASP.NET Core SignalR

ASP.NET Core SignalR 是舊版的重寫。 因此,ASP.NET Core SignalR 與舊版 SignalR 不相容。 API 和行為不同。 Azure SignalR 服務支援這兩個版本。

Azure SignalR Service 可讓您在多個平台上裝載實際的 Web 應用程式(Windows、Linux 和 macOS)Azure App 服務IISNginxApacheDocker。 您也可以在自己的程式中使用自我裝載。

如果應用程式的目標包括:Azure SignalR Service 是最佳選擇:

  • 支援使用即時內容更新更新 Web 用戶端的最新功能,
  • 跨多個平台執行 (Azure、Windows、Linux 和 macOS)
  • 在不同的環境中裝載

為什麼不自行部署 SignalR?

將支援 SignalR 作為後端元件部署至整體 Web 應用程式的 Azure Web 應用程式仍然是有效的方法。

使用 Azure SignalR 服務的主要原因之一是簡單。 使用 Azure SignalR 服務時,您不需要處理效能、延展性、可用性等問題。 這些問題會為您處理 99.9% 的服務等級協定。

此外,WebSocket 通常是支援即時內容更新的慣用技術。 不過,當您調整規模時,負載平衡大量的持續性 WebSocket 聯機會成為一個複雜的問題。 常見解決方案使用:DNS 負載平衡、硬體負載平衡器和軟體負載平衡。 Azure SignalR Service 會為您處理此問題。

針對 ASP.NET Core SignalR,另一個原因是您完全不需要實際裝載 Web 應用程式。 Web 應用程式的邏輯可能會使用 無伺服器運算。 例如,您的程式代碼只裝載並隨選使用 Azure Functions 觸發程式來執行。 此案例可能很困難,因為您的程式代碼只會隨選執行,且不會維護與客戶端的長時間連線。 Azure SignalR 服務可以處理這種情況,因為服務已經為您管理連線。 如需詳細資訊,請參閱 如何搭配 Azure Functions 使用 SignalR Service 的概觀。 由於 ASP.NET SignalR 使用不同的通訊協定,因此 ASP.NET SignalR 不支援這類無伺服器模式。

其規模如何?

使用 SQL Server、Azure 服務匯流排 或 Azure Cache for Redis 來調整 SignalR 很常見。 Azure SignalR Service 會為您處理調整方法。 效能和成本可比作這些方法,而不需要處理這些其他服務的複雜性。 您只需要更新服務的單位計數。 每個單位最多支援1000個用戶端連線。

下一步