如何快速实现企业级实时通知:NorthwindTraders中的SignalR集成指南

张开发
2026/4/9 4:01:47 15 分钟阅读

分享文章

如何快速实现企业级实时通知:NorthwindTraders中的SignalR集成指南
如何快速实现企业级实时通知NorthwindTraders中的SignalR集成指南【免费下载链接】NorthwindTradersNorthwind Traders is a sample application built using ASP.NET Core and Entity Framework Core.项目地址: https://gitcode.com/gh_mirrors/no/NorthwindTradersNorthwindTraders是一个基于ASP.NET Core和Entity Framework Core构建的企业级示例应用本文将详细介绍如何在该项目中集成SignalR实现实时通知功能帮助开发者快速掌握企业级实时通信解决方案。企业级实时通知的核心价值在现代企业应用中实时数据同步和即时通知已成为提升用户体验的关键因素。无论是订单状态更新、库存变动提醒还是系统告警通知实时通信都能显著提高业务响应速度和团队协作效率。NorthwindTraders作为经典的企业应用示例其通知系统架构为我们提供了完整的学习参考。NorthwindTraders通知系统架构解析核心接口设计NorthwindTraders通过INotificationService接口定义了通知系统的核心功能该接口位于Src/Application/Common/Interfaces/INotificationService.cs为整个系统提供了统一的通知发送契约。实现类分析通知系统的具体实现位于Src/Infrastructure/NotificationService.cs该类实现了INotificationService接口。虽然当前实现仅返回Task.CompletedTask但这为后续集成SignalR提供了完美的扩展点。public class NotificationService : INotificationService { public Task SendAsync(MessageDto message) { return Task.CompletedTask; } }依赖注入配置在Src/Infrastructure/DependencyInjection.cs中通过依赖注入容器注册了通知服务services.AddTransientINotificationService, NotificationService();这种设计使系统能够轻松替换不同的通知实现包括基于SignalR的实时通知。集成SignalR的完整步骤1. 添加SignalR依赖首先需要在WebUI项目中添加SignalR依赖cd /data/web/disk1/git_repo/gh_mirrors/no/NorthwindTraders/Src/WebUI dotnet add package Microsoft.AspNetCore.SignalR2. 创建SignalR中心在WebUI项目中创建通知中心类// Src/WebUI/Hubs/NotificationHub.cs using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; namespace Northwind.WebUI.Hubs { public class NotificationHub : Hub { public async Task SendMessage(MessageDto message) { await Clients.All.SendAsync(ReceiveMessage, message); } } }3. 配置SignalR服务在Src/WebUI/Startup.cs中配置SignalR服务public void ConfigureServices(IServiceCollection services) { // 其他服务配置... services.AddSignalR(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其他中间件配置... app.UseEndpoints(endpoints { endpoints.MapHubNotificationHub(/notificationHub); // 其他端点配置... }); }4. 修改通知服务实现更新Src/Infrastructure/NotificationService.cs以使用SignalRusing Microsoft.AspNetCore.SignalR; using Northwind.Application.Common.Interfaces; using Northwind.Application.Notifications.Models; using Northwind.WebUI.Hubs; using System.Threading.Tasks; namespace Northwind.Infrastructure { public class NotificationService : INotificationService { private readonly IHubContextNotificationHub _hubContext; public NotificationService(IHubContextNotificationHub hubContext) { _hubContext hubContext; } public async Task SendAsync(MessageDto message) { await _hubContext.Clients.All.SendAsync(ReceiveMessage, message); } } }5. 前端集成SignalR客户端在Angular客户端应用中添加SignalR客户端cd /data/web/disk1/git_repo/gh_mirrors/no/NorthwindTraders/Src/WebUI/ClientApp npm install microsoft/signalr创建通知服务// Src/WebUI/ClientApp/src/app/services/notification.service.ts import { Injectable } from angular/core; import * as signalR from microsoft/signalr; Injectable({ providedIn: root }) export class NotificationService { private hubConnection: signalR.HubConnection; constructor() { this.hubConnection new signalR.HubConnectionBuilder() .withUrl(/notificationHub) .build(); this.hubConnection.start().catch(err console.error(err.toString())); } public receiveMessage (callback: (message: any) void) { this.hubConnection.on(ReceiveMessage, (message) { callback(message); }); } }测试实时通知功能触发通知的业务场景NorthwindTraders在客户创建流程中已经集成了通知触发点位于Src/Application/Customers/Commands/CreateCustomer/CustomerCreated.cspublic class CustomerCreatedHandler : INotificationHandlerCustomerCreated { private readonly INotificationService _notification; public CustomerCreatedHandler(INotificationService notification) { _notification notification; } public async Task Handle(CustomerCreated notification, CancellationToken cancellationToken) { await _notification.SendAsync(new MessageDto()); } }创建新客户时系统会自动发送通知现在这个通知将通过SignalR实时推送到所有连接的客户端。验证通知接收在前端组件中订阅通知// 在需要接收通知的组件中 constructor(private notificationService: NotificationService) { this.notificationService.receiveMessage((message) { console.log(收到新通知:, message); // 显示通知给用户 }); }企业级应用的扩展建议用户特定通知修改SignalR代码实现基于用户角色或组织的定向通知通知持久化将通知存储到数据库实现历史通知查看功能通知状态跟踪添加已读/未读状态管理性能优化实现通知分组和批量发送减少连接开销总结通过本文的指南您已经了解了如何在NorthwindTraders项目中集成SignalR实现实时通知系统。这种架构不仅适用于客户创建通知还可以扩展到订单更新、库存预警、系统通知等多种业务场景。SignalR提供的实时通信能力将显著提升企业应用的用户体验和业务响应速度。要开始使用这个项目您可以通过以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/no/NorthwindTraders然后按照本文的步骤为您的企业应用添加强大的实时通知功能【免费下载链接】NorthwindTradersNorthwind Traders is a sample application built using ASP.NET Core and Entity Framework Core.项目地址: https://gitcode.com/gh_mirrors/no/NorthwindTraders创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章