使用 SQL Server 的向外延展 (SignalR 1.x)
作者: Patrick Fletcher
警告
本檔不適用於最新版的 SignalR。 請查看ASP.NET Core SignalR。
在本教學課程中,您將使用 SQL Server,將訊息分散到部署在兩個不同的 IIS 實例中的 SignalR 應用程式。 您也可以在單一測試電腦上執行本教學課程,但若要發揮完整效果,您必須將 SignalR 應用程式部署到兩部以上的伺服器。 您也必須在其中一部伺服器上或個別的專用伺服器上安裝SQL Server。 另一個選項是使用 Azure 上的 VM 來執行教學課程。
必要條件
Microsoft SQL Server 2005 或更新版本。 背板同時支援桌面和伺服器版本的 SQL Server。 它不支援 SQL Server Compact Edition 或 Azure SQL Database。 (如果您的應用程式裝載于 Azure 上,請考慮改為使用服務匯流排背板。)
概觀
在我們進入詳細的教學課程之前,以下是您將執行的快速概觀。
建立新的空白資料庫。 背板將會在此資料庫中建立必要的資料表。
將這些 NuGet 套件新增至您的應用程式:
建立 SignalR 應用程式。
將下列程式碼新增至 Global.asax 以設定背板:
protected void Application_Start() { string sqlConnectionString = "Connecton string to your SQL DB"; GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString); RouteTable.Routes.MapHubs(); // ... }
設定資料庫
決定應用程式將使用 Windows 驗證或SQL Server驗證來存取資料庫。 不論為何,請確定資料庫使用者具有登入、建立架構和建立資料表的許可權。
建立新的資料庫,讓後臺板可供使用。 您可以為資料庫指定任何名稱。 您不需要在資料庫中建立任何資料表;背板會建立必要的資料表。
啟用 Service Broker
建議為幕後程式資料庫啟用 Service Broker。 Service Broker 在 SQL Server 中提供傳訊和佇列的原生支援,讓背板接收更新更有效率。 不過, (,背板也可在沒有 Service Broker.) 的情況下運作
若要檢查 Service Broker 是否已啟用,請查詢sys.databases目錄檢視中的[is_broker_enabled] 資料行。
SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]
若要啟用 Service Broker,請使用下列 SQL 查詢:
ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER
注意
如果此查詢似乎死結,請確定沒有連線到資料庫的應用程式。
如果您已啟用追蹤,追蹤也會顯示是否已啟用 Service Broker。
建立 SignalR 應用程式
遵循下列其中一個教學課程來建立 SignalR 應用程式:
接下來,我們將修改聊天應用程式,以支援使用SQL Server向外延展。 首先,將 SignalR.SqlServer NuGet 套件新增至您的專案。 在 Visual Studio 的 [ 工具 ] 功能表中,選取 [NuGet 套件管理員],然後選取 [ 套件管理員主控台]。 在 [Package Manager Console] 視窗中,輸入下列命令:
Install-Package Microsoft.AspNet.SignalR.SqlServer
接下來,開啟 Global.asax 檔案。 將下列程式碼新增至 Application_Start 方法:
protected void Application_Start()
{
string sqlConnectionString = "<add your SQL connection string here>";
GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
RouteTable.Routes.MapHubs();
}
部署並執行應用程式
準備您的 Windows Server 實例以部署 SignalR 應用程式。
新增 IIS 角色。 包含「應用程式開發」功能,包括 WebSocket 通訊協定。
也包含 [管理工具] ) 底下所列的管理服務 (。
安裝 Web Deploy 3.0。 當您執行 IIS 管理員時,它會提示您安裝Microsoft Web Platform,或者您可以下載安裝程式。 在 [平臺安裝程式] 中,搜尋 Web Deploy 並安裝 Web Deploy 3.0
檢查 Web 管理服務是否正在執行。 如果沒有,請啟動服務。 (如果您在 Windows 服務清單中看不到 Web 管理服務,請確定您在新增 IIS 角色時已安裝管理服務。)
最後,開啟 TCP 的埠 8172。 這是 Web Deploy 工具所使用的埠。
現在您已準備好將 Visual Studio 專案從開發電腦部署到伺服器。 在 Solution Explorer中,以滑鼠右鍵按一下解決方案,然後按一下 [發佈]。
如需 Web 部署的詳細檔,請參閱 適用于 Visual Studio 和 ASP.NET 的 Web 部署內容對應。
如果您將應用程式部署到兩部伺服器,您可以在個別的瀏覽器視窗中開啟每個實例,並查看它們各自接收來自另一部的 SignalR 訊息。 (當然,在生產環境中,這兩部伺服器會位於負載平衡器後方。)
執行應用程式之後,您可以看到 SignalR 已在資料庫中自動建立資料表:
SignalR 會管理資料表。 只要部署您的應用程式,請勿刪除資料列、修改資料表等等。