用途:为 .NET 应用选择并实现实时通信方案,覆盖 SignalR、SSE(.NET 10 内置)、JSON-RPC 2.0 与 gRPC 流式传输,并提供协议选型指导。
主要能力:SignalR 支持全双工通信,自动协商 WebSocket、SSE、长轮询传输,支持 JSON 或 MessagePack 序列化、强类型 Hub、分组、连接生命周期管理、客户端到服务端流式上传、认证与 Redis/Azure SignalR 背板横向扩展。SSE 在 .NET 10 中内置,仅服务端到客户端推送,使用 TypedResults.ServerSentEvents 与浏览器原生 EventSource,支持自动重连。JSON-RPC 2.0 为无状态、传输无关的请求-响应协议,常用 StreamJsonRpc 库,可基于 WebSocket 或 stdio,是 LSP 的基础。gRPC 流式传输基于 HTTP/2 与 Protobuf,支持一元、服务端流、客户端流和双向流四种模式,适合服务间高吞吐低延迟场景。
使用方式:SignalR 通过 AddSignalR 注册、MapHub 映射端点,Hub 中重写 OnConnectedAsync/OnDisconnectedAsync,用 IHubContext 从外部发送消息;SSE 用 MapGet 返回 TypedResults.ServerSentEvents;JSON-RPC 用 StreamJsonRpc 的 JsonRpc 与 WebSocketMessageHandler 绑定本地目标并 StartListening;gRPC 流式实现细节参见 dotnet-grpc 技能。
适用场景:交互式应用、聊天、仪表盘、协同编辑选 SignalR;仅需服务端推送的通知、实时信息流选 SSE;工具协议(如 LSP)或简单传输上的结构化 RPC 选 JSON-RPC 2.0;服务间高性能流式选 gRPC。
限制:SSE 仅单向;JSON-RPC 非流式协议;gRPC 浏览器支持有限(gRPC-Web)。HTTP 客户端工厂与弹性管道、原生 AOT 与裁剪、Blazor 专用 SignalR 用法不在本技能范围内,分别参见 dotnet-http-client、dotnet-resilience、dotnet-native-aot、dotnet-aot-architecture、dotnet-trimming、dotnet-blazor-patterns。