.NET 帮助

Signalr C#(开发人员的工作原理)

Chipego
奇佩戈-卡琳达
2023年十一月14日
分享:

现代网络依赖于交互性和实时反馈。 在构建响应式应用程序时,实时网络功能是必须的。这正是 SignalR 的优势所在。 ASP.NET Core SignalR 是一个库,使将实时 Web 功能添加到应用程序比您想象的更简单。

在本教程中,我们将了解 SignalR 的基础知识和细微差别。 让我们深入探讨!

ASP.NET Core 中的 SignalR 简介

ASP.NET Core SignalR 提供了一个 API,用于使用 WebSockets 和其他技术(如服务器发送的事件)创建实时网络功能。 不仅限于 ASP.NET Core。 您可以在各种客户端(如浏览器或移动应用程序)上使用 SignalR,确保连接的客户端即时更新。

设置开发环境

要开始工作,您需要

构建 SignalR 中枢

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);
    }
}

在公有类 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");
    });
}

客户端实施

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>
HTML

现在,您可以连接到集线器:

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}`);
});

这个简单的客户端代码会连接到集线器,并监听任何信息广播。

运行中的实时功能

发送信息

使用我们早期的客户端和服务器端代码片段,发送信息非常简单。 服务器和客户端均可启动通信。

来自服务器端:

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

还有客户:

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

高级实时通信

ASP.NET Core SignalR 提供先进的实时通信功能:

  1. 分组连接:将已连接的客户端划分为若干组,向特定组群广播消息。

  2. 处理断开连接:自动管理客户端连接和断开连接。

  3. 二进制协议:SignalR 默认使用基于文本的协议,但也支持二进制协议。

使用 Azure SignalR 服务的 SignalR

为了实现可扩展的实时功能,请集成Azure SignalR Service。 这项完全托管的服务支持大量的同时连接,因此非常适合高需求应用程序。

集成 Azure SignalR 服务:

  1. 安装Azure SignalR SDK

  2. 使用 Azure 服务总线提供背板支持。

  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");
    });
}

Iron Suite 通过高级 .NET 工具增强 SignalR

虽然 ASP.NET Core SignalR 为实时网络功能提供了出色的基础,但开发人员经常会寻找一些工具来增强整体体验和功能。 这就是Iron Software Suite of Libraries出现的地方。

Iron Suite for .NET 是一套优质的 .NET 库,旨在为您的 ASP.NET Core 应用程序(包括使用 SignalR 的应用程序)增效。 该套件中的每个产品都具有独特的功能,可确保提供更丰富的应用体验。 让我们深入了解这些产品:

IronPDF

Signalr C#(开发者如何运作)图1

了解更多关于IronPDF的功能让您可以在.NET应用程序中生成、编辑和读取PDF文件。 想象一下将 SignalR 集成到团队实时协作文档的场景中。在进行修改时,文档可以即时转换为 PDF,并将更新无缝推送到所有连接的客户端。 SignalR 的实时功能与 IronPDF 的功能相搭配,可以彻底改变协作工具。

IronPDF 将 HTML、URL 和完整网页转换为与原始页面一样出色的 PDF。 它非常适合保存在线报告、发票或任何您想保留的基于网络的信息。您是否想要将HTML 转换为 PDF? 立即试用IronPDF!

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

IronXL

Signalr C#(对开发者的工作原理)图2

当处理 Excel 电子表格时,探索 IronXL 功能 是一个冠军。 在商业环境中,电子表格起着至关重要的作用。 将 SignalR 与 IronXL 结合在一起,意味着财务团队可以实时处理预算表,见证发生的变化。 想象一下这样一种场景:来自不同部门的数据输入到一个集中的 Excel 表中,并为所有利益相关者提供实时更新。 通过这种组合,实时通信和动态电子表格管理的融合成为现实。

IronOCR

Signalr C#(对开发人员的工作原理)图 3

光学字符识别(OCR)已成为现代应用程序中的基础功能。 查看 IronOCR 的实际应用 使 .NET 开发人员能够从图像和文档中提取文本。 将其与 SignalR 的实时功能相结合,可以改变游戏规则。 考虑用户上传包含文本数据的图片的平台。 一旦 IronOCR 处理了图像,SignalR 就可以用来实时通知用户,使数据提取具有交互性和即时性。

IronBarcode

Signalr C#(开发人员如何使用)图4

BarCode 在库存管理、票务系统等方面不可或缺。 发现 IronBarcode 功能 简化了条形码的创建和读取。 现在,考虑将其与 SignalR 集成到仓库管理系统中。 在扫描商品时,库存会实时更新,通知相关客户库存水平,确保物流运作顺畅。

结论

Signalr C#(开发人员如何工作)图5

ASP.NET Core SignalR 与 Iron Suite 的强大工具相融合,有望为开发人员和终端用户带来更高的体验。 实时网络功能变得不仅仅是交流,而是一种变革性的工具,与 Iron Suite 等合适的资源搭配,可以重新定义交互式应用程序。

值得注意的是Iron Suite所提供的价值主张。每个产品许可证起价为$749,为开发人员提供了一套高级功能。 然而,如果您对立即承诺感到不确定,每个产品都慷慨地提供Iron Software 产品的免费试用。 这样,您就可以在做出决定前试用这些工具的功能。

而且,如果您正在考虑整合多个工具,这里有个好消息:您可以购买整个Iron Suite以获得更多价值,只需支付两个产品的价格! 这不仅能确保您获得最佳性价比,还能为您配备一套全面的工具包,彻底改变您的 ASP.NET Core SignalR 应用程序。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
C# 真或假(开发人员如何使用)
下一步 >
C# SQLite(开发人员如何使用)