.NET 幫助

SignalR C#(這對開發人員如何運作)

發佈 2023年11月14日
分享:

現代網頁依靠互動性與即時反饋而蓬勃發展。 在構建響應式應用程序時,實時網絡功能是必須的。這就是 SignalR 發揮作用的地方。 ASP.NET Core SignalR是一個庫,使將即時網頁功能添加到您的應用程式中比您想像的更簡單。

在本教程中,我們將開始探索 SignalR 的基礎和細微差別。 讓我們開始吧!

ASP.NET Core 中的 SignalR 介紹

ASP.NET Core SignalR 提供了一個 API,用於通過 WebSockets 及其他技術(如伺服器推送事件)創建即時網頁功能。 它不僅僅限於 ASP.NET Core。 您可以將 SignalR 與各種客戶端一起使用,例如瀏覽器或行動應用程式,確保連接的客戶端能夠即時更新。

設定開發環境

要開始,您需要:

建立 SignalR Hub

SignalR 的核心圍繞著 SignalR 集線器,這是一個客戶端和服務器交互的中心點。

建立一個新的 ASP.NET Core 專案。 現在,新增一個類別並將其命名為 ChatHub。 這將作為我們的SignalR集線器。

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
Imports Microsoft.AspNetCore.SignalR

Public Class ChatHub
	Inherits Hub

	Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
		Await Clients.All.SendAsync("ReceiveMessage", user, message)
	End Function
End Class
VB   C#

在公開類別 Startup 中,我們來整合我們的中心。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseEndpoints(Sub(endpoints)
		endpoints.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

客戶端實作

SignalR 是多功能的。雖然本教程專注於 ASP.NET Core 和 JavaScript 客戶端庫,但 SignalR 支持多種客戶端,從 .NET 到 Java。

使用 SignalR 客戶端庫

SignalR 客戶端庫允許您的客戶端代碼直接連接和與服務器端通信。以我們的例子來說,讓我們使用 JavaScript。

首先,添加 SignalR JavaScript 客戶端庫:

<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
VB   C#

現在,您可以連接到中心:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = (New signalR.HubConnectionBuilder()).withUrl("/chatHub").build()

connection.start()

connection.on("ReceiveMessage", Sub(user, message)
	console.log(`${user} says:= ${message}`)
End Sub)
VB   C#

這個簡單的客戶端程式碼連接到集線器並監聽任何廣播的消息。

即時功能運作中

發送訊息

使用我們之前的客戶端和伺服器端代碼片段,發送消息很簡單。 伺服器和客戶端都可以發起通信。

從伺服器端:

await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
VB   C#

來自客戶:

connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
VB   C#

先進的即時通訊

ASP.NET Core SignalR 提供先進的即時通訊功能:

  1. 分組連線:將已連線的客戶劃分為群組,向特定群組廣播訊息。

  2. 處理斷線:自動管理客戶端連接和斷線。

  3. 二進位協議:雖然 SignalR 預設使用基於文本的協議,但它也支援二進位協議。

SignalR 與 Azure SignalR 服務

為了實現可擴展的即時功能,整合Azure SignalR 服務. 這項全託管服務支持大量同時連線,使其成為高需求應用程式的理想選擇。

整合 Azure SignalR 服務:

  1. 安裝這個Azure SignalR SDK.

  2. 使用 Azure Service Bus 作為後端支持。

  3. 調整公用類別 Startup 以使用 Azure SignalR。
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR().AddAzureSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseAzureSignalR(Sub(routes)
		routes.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

Iron Suite 使用高級 .NET 工具增強 SignalR

雖然 ASP.NET Core SignalR 為即時網絡功能提供了出色的基礎,但開發人員通常會尋找工具來增強整體體驗和功能。 那就是...Iron Software 套件庫進入畫面。

Iron Suite 是一套高端 .NET 程式庫組合,專為加速您的 ASP.NET Core 應用程式而設計,包括那些使用 SignalR 的應用程式。 這個套件中的每個產品都提供了獨特的功能,確保應用程式具有更豐富的體驗。 讓我們深入探索這些產品:

IronPDF

SignalR C#(它如何為開發人員工作)圖 1

了解更多有關 IronPDF 功能的信息讓您在 .NET 應用程式中生成、編輯和讀取 PDF 文件。 想像一下在一個團隊即時協作文件的情境中整合 SignalR。當發生變更時,文件可以被即時轉換成 PDF,並且更新可以無縫推送給所有連接的客戶端。 SignalR 的即時功能與 IronPDF 的能力相結合,可能會革新協作工具。

IronXL

Signalr C#(對開發人員的工作原理)圖2

在處理 Excel 試算表時,探索 IronXL 功能是一位冠軍。 在商業環境中,電子表格扮演著至關重要的角色。 將 SignalR 與 IronXL 結合使用意味著財務團隊可以即時協作處理預算表,並且在變更發生時立即看到更新。 想像一個情境,來自各個部門的數據條目流入一個中央的 Excel 表格,並為所有利益相關者提供即時更新。 實時通訊和動態試算表管理的融合透過此組合成為現實。

IronOCR

Signalr C#(它如何對開發人員運作)圖3

光學字符識別(光學字符識別)已成為現代應用程式中的主流。 體驗 IronOCR 的運作賦予 .NET 開發人員從圖片和文件中提取文字的能力。 將此與 SignalR 的實時功能配對可以改變遊戲規則。 考慮一個平台,使用者可以上載包含文本數據的圖像。 一旦IronOCR處理完圖像後,可以使用SignalR即時通知用戶,使數據提取互動且立即。

IronBarcode

Signalr C#(它對開發者的工作原理)圖4

條碼是庫存管理、票務系統等方面不可或缺的一部分。 探索 IronBarcode 的功能簡化了條碼的創建和讀取。 現在,想像將其與 SignalR 集成到倉庫管理系統中。 當物品被掃描時,庫存會即時更新,通知連接的客戶有關庫存水平,確保物流運營的順暢。

結論

Signalr C#(對開發人員的運作方式)圖 5

ASP.NET Core SignalR 與 Iron Suite 強大工具的融合,為開發者和終端使用者提供了更加卓越的體驗。 實時網路功能不僅關乎溝通,還是一個變革性的工具,當與像 Iron Suite 這樣的資源配對時,可以重新定義互動應用程式。

值得注意的是,Iron Suite 提供的價值主張。每個產品許可證從 $749 開始,為開發者提供了一組高級功能。 但是,如果您不確定是否立即承諾,每個產品都慷慨地提供一個Iron Software 產品的免費試用. 這讓您在做出決定之前可以先體驗這些功能。

而且,如果您正在考慮整合多個工具,這有個好消息:您可以購買整個 Iron Suite 以獲得更多價值只需兩個產品的價格! 這不僅能確保您物超所值,還提供您一個全面的工具組來革新您的 ASP.NET Core SignalR 應用程式。

< 上一頁
C# 真 假(開發者如何運作)
下一個 >
C# SQLite(開發者如何使用)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >