NewLife.Remoting.Extensions 3.9.2026.901

NewLife.Remoting — 统一远程通信框架 (RPC + HTTP + WebSocket + SRMP)

GitHub top language GitHub License Nuget Downloads Nuget Nuget (with prereleases)

Nuget Downloads Nuget Nuget (with prereleases)

NewLife.Remoting 是 NewLife 技术栈的统一远程通信基础设施,由两个 NuGet 包组成:

定位 覆盖
NewLife.Remoting 核心通信库 RPC 客户端/服务端、协议编解码、连接管理、流式调用、客户端基类、指令下发管线、自动更新
NewLife.Remoting.Extensions 扩展库 服务端控制器基类、设备管理服务、Token 鉴权、命令响应总线

源码:https://github.com/NewLifeX/NewLife.Remoting

NuGet:NewLife.Remoting / NewLife.Remoting.Extensions

文档索引

文档 说明
Doc/需求文档.md 需求定义:愿景、核心目标、功能需求(RPC/STRM/CLNT/UPGD/SRV/CMD)
Doc/架构设计.md 架构设计:分层概览、核心模块架构、内存管理、测试策略
Doc/SRV-服务端架构.md 服务端业务架构:服务层设计、核心业务流程(登录/注册/注销/心跳/升级/事件上报/指令下发)、在线会话生命周期、集群部署
Doc/功能清单.md 功能追踪:61 个功能点的实现/测试/注释状态
Doc/竞品分析.md 竞品分析:RPC 框架对比 + IoT 指令下发对比矩阵
Doc/SRMP.MD SRMP 协议规范
Doc/RPC内存管理设计.md 零拷贝内存管理
Doc/自动更新机制.md 自动更新全链路设计
Doc/重试策略.md 重试策略:IRetryPolicy 接口与指数退避示例

亮点

核心能力 说明
RPC 核心框架 SRMP 协议、JSON/二进制编解码、请求处理流水线、客户端/服务端、Cluster 连接管理、元数据传递、重试策略、服务端全链路异步化、TraceId 调用链追踪
STRM 流式调用 Server-Streaming:IAsyncEnumerable<T> 逐条推送,SRMP + SSE 双协议
CLNT 客户端基类 登录/心跳/升级/指令/事件一站式封装,WS/SSE 双通道自动切换
UPGD 自动更新 检测→下载→校验→解压→覆盖→重启全链路
SRV 服务端基础 ApiController/BaseController/BaseDeviceController、TokenService、IDeviceService
CMD 指令下发 SessionManager + 事件总线广播 + WS/SSE/Ping 多通道

快速开始

5 行服务端,5 行客户端,即刻跑通 RPC 调用:

// === 服务端 ===
var server = new ApiServer(12345);
server.Register<MyController>();
server.Start();

public class MyController : ApiController
{
    public String Ping(String name) => $"Hello {name}, {DateTime.Now:HH:mm:ss}";
    // 流式推送:返回 IAsyncEnumerable<T> 自动逐条下发
    public async IAsyncEnumerable<String> StreamLogs(Int32 count)
    {
        for (var i = 0; i < count; i++)
        {
            await Task.Delay(100);
            yield return $"Log #{i}: {DateTime.Now:HH:mm:ss}";
        }
    }
}

// === 客户端 ===
var client = new ApiClient("tcp://127.0.0.1:12345");
client.Open();

// 普通调用
var rs = await client.InvokeAsync<String>("My/Ping", new { name = "dev" });

// 流式调用 — 逐条接收服务端推送
await foreach (var log in client.InvokeStreamAsync<String>("My/StreamLogs", new { count = 10 }))
    Console.WriteLine(log);

// 元数据传递(自动注入 TraceId)
client.Headers["TenantId"] = "tenant-01";

性能指标

指标 典型值 实验峰值
TCP 长连接数 10,000 4,000,000
RPC 吞吐 100,000 TPS 22,660,000 TPS
单次 RPC 延迟 ~41 μs
框架兼容 net45 / net461 / netstandard2.0 / netstandard2.1 / net5.0 ~ net10.0

与其它 NewLife 组件协同

组件 协同价值
NewLife.Core 日志、配置、序列化、对象池、TimerX、性能追踪
NewLife.Net 高性能网络栈、WebSocket/编码器、端口复用
NewLife.Redis 分布式缓存 / 消息队列,扩展会话共享或推送 fanout
Stardust 节点注册、配置中心、APM、发布中心;可托管 ApiServer 节点
AntJob 使用 ClientBase 接入任务调度与分布式计算
NewLife.MQTT / Modbus / IoT 设备层协议采集后通过 Remoting 上行

贡献与反馈

欢迎:Bug 反馈 / 性能优化 PR / 新协议编解码 / 控制器示例 / 文档补充。 Issue 讨论请尽量提供:运行环境、目标框架、最小可复现代码、日志摘要。


新生命项目矩阵

各项目默认支持 net9.0/netstandard2.1/netstandard2.0/net4.62/net4.5,旧版(2024.0801)支持 net4.0/net2.0

项目 年份 说明
NewLife.Core 2002 核心库,日志、配置、缓存、网络、序列化、APM性能追踪
NewLife.XCode 2005 大数据中间件,单表百亿级,自动分表,读写分离
NewLife.Net 2005 网络库,2266万 tps / 百万连接
NewLife.Remoting 2011 本项目,双协议通信框架
NewLife.Cube 2010 快速开发平台,权限 / OAuth / SSO
NewLife.Agent 2008 服务安装 / 守护进程 / Systemd
NewLife.Zero 2020 项目脚手架模板集合
NewLife.Redis 2017 高性能 Redis 客户端/消息队列
NewLife.RocketMQ 2018 纯托管 RocketMQ 客户端
NewLife.MQTT 2019 物联网 MqttClient/MqttServer
NewLife.IoT 2022 IoT 通信标准模型库
NewLife.Modbus 2022 Modbus 协议族
NewLife.Siemens 2022 西门子 PLC 通信
NewLife.Map 2022 地图聚合组件
NewLife.Audio 2023 音频编解码
Stardust 2018 分布式服务平台 (注册/配置/APM/发布)
AntJob 2019 分布式大数据计算平台
等等 - 更多参见官网

团队与版权

XCode

新生命团队(NewLife)成立于 2002 年,80+ 开源项目,NuGet 累计下载 400+ 万。全部项目采用 MIT 协议,可自由修改再发行(无需声明来源)。
网站:https://newlifex.com
开源:https://github.com/NewLifeX
QQ群:1600800 / 1600838

新生命团队始于2002年,部分开源项目具有20年以上历史,源码库保留2010年以来全部记录。

微信公众号:
智能大石头


License

MIT © NewLife. 欢迎商用与二次开发。

No packages depend on NewLife.Remoting.Extensions.

登录失败自动重试,配合滚动登录超时设计,服务端冷启动时自动恢复;ZeroServer/IoTZero 示例客户端改用 Open 规范用法,响应总线自测恢复执行;消除编译警告;升级 NewLife.Core 依赖

.NET 10.0

.NET 6.0

.NET 7.0

.NET 8.0

.NET 9.0

Version Downloads Last updated
3.9.2026.901 2 2026/9/14
3.9.2026.901-beta0431 1 2026/9/17
3.9.2026.801 1 2026/9/17
3.9.2026.801-beta1701 1 2026/9/17
3.8.2026.726-beta1405 1 2026/9/17
3.8.2026.723-beta1615 1 2026/9/17
3.8.2026.722-beta1157 1 2026/9/17
3.8.2026.720-beta1503 1 2026/9/17
3.8.2026.716-beta0416 1 2026/9/17
3.8.2026.714-beta1144 1 2026/9/17
3.8.2026.714-beta0020 1 2026/9/17
3.8.2026.706 1 2026/9/17
3.8.2026.706-beta0919 1 2026/9/17
3.7.2026.705-beta0241 1 2026/9/17
3.7.2026.608-beta1321 1 2026/9/17
3.7.2026.607-beta0438 1 2026/9/17
3.7.2026.606-beta1713 1 2026/9/17
3.7.2026.601 1 2026/9/17
3.7.2026.601-beta0657 1 2026/9/17
3.7.2026.524-beta0246 1 2026/9/17
3.7.2026.518-beta1101 1 2026/9/17
3.7.2026.501 1 2026/9/17
3.7.2026.501-beta0531 1 2026/9/17
3.7.2026.402 1 2026/9/17
3.7.2026.402-beta0859 1 2026/9/17
3.7.2026.319-beta0807 1 2026/9/17
3.7.2026.307-beta0002 1 2026/9/17
3.7.2026.305-beta0002 1 2026/9/17
3.7.2026.303-beta0002 1 2026/9/17
3.7.2026.302 1 2026/9/17
3.7.2026.302-beta0437 1 2026/9/17
3.7.2026.301-beta0602 1 2026/9/17
3.7.2026.225-beta1902 1 2026/9/17
3.7.2026.225-beta1345 1 2026/9/17
3.7.2026.201 1 2026/9/17
3.7.2026.201-beta0243 1 2026/9/17
3.7.2026.125-beta1509 1 2026/9/17
3.7.2026.125-beta0150 1 2026/9/17
3.7.2026.112-beta0604 1 2026/9/17
3.7.2026.111-beta1518 1 2026/9/17
3.7.2026.110-beta1630 1 2026/9/17
3.7.2026.108-beta1612 1 2026/9/17
3.7.2026.102 1 2026/9/17
3.7.2026.102-beta1547 1 2026/9/17
3.6.2025.1231-beta0314 1 2026/9/17
3.6.2025.1231-beta0309 1 2026/9/17
3.6.2025.1230-beta1240 1 2026/9/17
3.6.2025.1230-beta0418 1 2026/9/17
3.6.2025.1230-beta0002 1 2026/9/17
3.6.2025.1226-beta0712 1 2026/9/17
3.6.2025.1226-beta0602 1 2026/9/17
3.6.2025.1220-beta0622 1 2026/9/17
3.6.2025.1218-beta0318 1 2026/9/17
3.6.2025.1214-beta1229 1 2026/9/17
3.6.2025.1213-beta0158 1 2026/9/17
3.6.2025.1212-beta0705 1 2026/9/17
3.6.2025.1204-beta1523 1 2026/9/17
3.6.2025.1203-beta1519 1 2026/9/17
3.6.2025.1112 1 2026/9/17
3.5.2025.1106-beta0001 1 2026/9/17
3.5.2025.1105-beta1318 1 2026/9/17
3.5.2025.1105-beta0602 1 2026/9/17
3.5.2025.1026-beta0602 1 2026/9/17
3.5.2025.1001 1 2026/9/17
3.5.2025.1001-beta1720 1 2026/9/17
3.5.2025.921-beta1556 1 2026/9/17
3.5.2025.915-beta1636 1 2026/9/17
3.5.2025.914-beta1424 1 2026/9/17
3.5.2025.903-beta1229 1 2026/9/17
3.5.2025.901 1 2026/9/17
3.5.2025.901-beta1137 1 2026/9/17
3.5.2025.901-beta0603 1 2026/9/17
3.5.2025.830-beta1611 1 2026/9/17
3.5.2025.827-beta1704 1 2026/9/17
3.5.2025.826-beta0442 1 2026/9/17
3.5.2025.825-beta2351 1 2026/9/17
3.5.2025.824-beta1236 1 2026/9/17
3.5.2025.822-beta0944 1 2026/9/17
3.5.2025.820-beta1825 1 2026/9/17
3.5.2025.818-beta1634 1 2026/9/17
3.5.2025.812-beta1259 1 2026/9/17
3.4.2025.812-beta1032 1 2026/9/17
3.4.2025.812-beta1003 1 2026/9/17
3.4.2025.808-beta1105 1 2026/9/17
3.4.2025.805-beta1659 1 2026/9/17
3.4.2025.805-beta1531 1 2026/9/17
3.4.2025.801 1 2026/9/17
3.4.2025.801-beta0218 1 2026/9/17
3.4.2025.731-beta0004 1 2026/9/17
3.4.2025.722-beta0820 1 2026/9/17
3.4.2025.719-beta0004 1 2026/9/17
3.4.2025.713-beta1545 1 2026/9/17
3.4.2025.713-beta1351 1 2026/9/17
3.4.2025.713-beta1335 1 2026/9/17
3.3.2025.709-beta0306 1 2026/9/17
3.3.2025.701 1 2026/9/17
3.3.2025.701-beta0355 1 2026/9/17
3.3.2025.616-beta1415 1 2026/9/17
3.3.2025.610-beta0350 1 2026/9/17
3.3.2025.601 1 2026/9/17
3.3.2025.601-beta0800 1 2026/9/17
3.3.2025.527-beta1716 1 2026/9/17
3.3.2025.521-beta1200 1 2026/9/17
3.3.2025.519-beta1620 1 2026/9/17
3.3.2025.515-beta1338 1 2026/9/17
3.3.2025.514-beta0417 1 2026/9/17
3.3.2025.501 1 2026/9/17
3.3.2025.501-beta1629 1 2026/9/17
3.3.2025.428-beta0633 1 2026/9/17
3.3.2025.426-beta1312 1 2026/9/17
3.3.2025.417-beta1306 1 2026/9/17
3.3.2025.415-beta1725 1 2026/9/17
3.3.2025.415-beta1203 1 2026/9/17
3.3.2025.415-beta1143 1 2026/9/17
3.3.2025.412-beta0428 1 2026/9/17
3.3.2025.401 1 2026/9/17
3.3.2025.401-beta0524 1 2026/9/17
3.3.2025.329-beta1224 1 2026/9/17
3.3.2025.301 1 2026/9/17
3.3.2025.301-beta0131 1 2026/9/17
3.3.2025.226-beta0837 1 2026/9/17
3.3.2025.225-beta1354 1 2026/9/17
3.3.2025.225-beta1254 1 2026/9/17
3.3.2025.225-beta0533 1 2026/9/17
3.3.2025.224-beta1623 1 2026/9/17
3.2.2025.224-beta1147 1 2026/9/17
3.2.2025.221-beta0925 1 2026/9/17
3.2.2025.212-beta1257 1 2026/9/17
3.2.2025.207-beta0905 1 2026/9/17
3.2.2025.201 1 2026/9/17
3.2.2025.201-beta1615 1 2026/9/17
3.2.2025.109-beta1236 1 2026/9/17
3.2.2025.103-beta1513 1 2026/9/17
3.2.2025.101 1 2026/9/17
3.2.2025.101-beta0602 1 2026/9/17
3.2.2024.1225-beta1616 1 2026/9/17
3.2.2024.1206 1 2026/9/17
3.2.2024.1206-beta1615 1 2026/9/17
3.2.2024.1202 1 2026/9/17
3.2.2024.1202-beta0216 1 2026/9/17
3.2.2024.1130-beta1013 1 2026/9/17
3.2.2024.1124-beta1544 1 2026/9/17
3.2.2024.1116 1 2026/9/17
3.0.2024.1031-beta0000 1 2026/9/17
3.0.2024.1030-beta1007 1 2026/9/17
3.0.2024.1025-beta1552 1 2026/9/17
3.0.2024.1016-beta1325 1 2026/9/17
3.0.2024.1013-beta1545 1 2026/9/17
3.0.2024.1011-beta1545 1 2026/9/17
3.0.2024.1007-beta1531 1 2026/9/17
3.0.2024.1002 1 2026/9/17
3.0.2024.1002-beta0033 1 2026/9/17
3.0.2024.923-beta0435 1 2026/9/17
3.0.2024.914-beta0002 1 2026/9/17
3.0.2024.913-beta0902 1 2026/9/17
3.0.2024.912-beta0006 1 2026/9/17
3.0.2024.902 1 2026/9/17
3.0.2024.902-beta0615 1 2026/9/17
3.0.2024.812-beta0813 1 2026/9/17
3.0.2024.811-beta0608 1 2026/9/17
3.0.2024.806-beta0146 1 2026/9/17
3.0.2024.805 1 2026/9/17
3.0.2024.805-beta0114 1 2026/9/17
3.0.2024.801 1 2026/9/17
3.0.2024.801-beta0720 1 2026/9/17
3.0.2024.729-beta0815 1 2026/9/17
3.0.2024.728-beta0156 1 2026/9/17
3.0.2024.726-beta0605 1 2026/9/17
3.0.2024.719-beta0806 1 2026/9/17
3.0.2024.717-beta0605 1 2026/9/17
3.0.2024.712-beta0845 1 2026/9/17
3.0.2024.710-beta1226 1 2026/9/17
3.0.2024.710-beta0928 1 2026/9/17
3.0.2024.708 1 2026/9/17
3.0.2024.708-beta1003 1 2026/9/17
3.0.2024.703-beta0048 1 2026/9/17
3.0.2024.701 1 2026/9/17
3.0.2024.701-beta0219 1 2026/9/17
3.0.2024.630-beta0606 1 2026/9/17
3.0.2024.628-beta0626 1 2026/9/17
3.0.2024.627-beta1636 1 2026/9/17
3.0.2024.627-beta0009 1 2026/9/17
3.0.2024.626-beta1337 1 2026/9/17
3.0.2024.625-beta1714 1 2026/9/17
3.0.2024.625-beta1600 1 2026/9/17
3.0.2024.625-beta0716 1 2026/9/17
3.0.2024.624-beta1110 1 2026/9/17
3.0.2024.624-beta0627 1 2026/9/17
3.0.2024.624-beta0109 1 2026/9/17
3.0.2024.623-beta0607 1 2026/9/17
3.0.2024.622-beta1613 1 2026/9/17
3.0.2024.620-beta1407 1 2026/9/17
2.8.2024.619-beta0926 1 2026/9/17
2.8.2024.618-beta0215 1 2026/9/17
2.8.2024.616-beta0607 1 2026/9/17
2.8.2024.615-beta0041 1 2026/9/17
2.8.2024.612-beta0605 1 2026/9/17
2.8.2024.611-beta0352 1 2026/9/17
2.8.2024.610-beta1021 1 2026/9/17
2.8.2024.609-beta1256 1 2026/9/17
2.8.2024.604-beta0116 1 2026/9/17
2.8.2024.603-beta0605 1 2026/9/17
2.8.2024.519-beta0659 1 2026/9/17
2.8.2024.517-beta0717 1 2026/9/17
2.8.2024.516-beta1300 1 2026/9/17
2.8.2024.512-beta0715 1 2026/9/17
2.8.2024.509-beta0932 1 2026/9/17
2.8.2024.507-beta0132 1 2026/9/17