NewLife.Remoting.Extensions
3.9.2026.801
dotnet add package NewLife.Remoting.Extensions --version 3.9.2026.801
NuGet\Install-Package NewLife.Remoting.Extensions -Version 3.9.2026.801
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.9.2026.801" />
<PackageVersion Include="NewLife.Remoting.Extensions" Version="3.9.2026.801" />
<PackageReference Include="NewLife.Remoting.Extensions" />
paket add NewLife.Remoting.Extensions --version 3.9.2026.801
#r "nuget: NewLife.Remoting.Extensions, 3.9.2026.801"
#:package NewLife.Remoting.Extensions@3.9.2026.801
#addin nuget:?package=NewLife.Remoting.Extensions&version=3.9.2026.801
#tool nuget:?package=NewLife.Remoting.Extensions&version=3.9.2026.801
NewLife.Remoting — 统一远程通信框架 (RPC + HTTP + WebSocket + SRMP)
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 | 分布式大数据计算平台 |
| 等等 | - | 更多参见官网 |
团队与版权
新生命团队(NewLife)成立于 2002 年,80+ 开源项目,NuGet 累计下载 400+ 万。全部项目采用 MIT 协议,可自由修改再发行(无需声明来源)。
网站:https://newlifex.com
开源:https://github.com/NewLifeX
QQ群:1600800 / 1600838
新生命团队始于2002年,部分开源项目具有20年以上历史,源码库保留2010年以来全部记录。
微信公众号:
License
MIT © NewLife. 欢迎商用与二次开发。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- NewLife.Remoting (>= 3.9.2026.801)
- NewLife.XCode (>= 12.0.2026.701)
-
net6.0
- NewLife.Remoting (>= 3.9.2026.801)
- NewLife.XCode (>= 12.0.2026.701)
-
net7.0
- NewLife.Remoting (>= 3.9.2026.801)
- NewLife.XCode (>= 12.0.2026.701)
-
net8.0
- NewLife.Remoting (>= 3.9.2026.801)
- NewLife.XCode (>= 12.0.2026.701)
-
net9.0
- NewLife.Remoting (>= 3.9.2026.801)
- NewLife.XCode (>= 12.0.2026.701)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on NewLife.Remoting.Extensions:
| Package | Downloads |
|---|---|
|
AntWeb
AntJob 可视化管理平台,提供任务调度、监控、日志查询和集群管理功能。 |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on NewLife.Remoting.Extensions:
| Repository | Stars |
|---|---|
|
NewLifeX/AntJob
高吞吐 .NET 分布式任务与实时数据调度平台:时间/数据/消息/Cron/SQL/脚本切片,自动重试与弹性扩缩,回溯补算 + Web 控制台。High‑throughput .NET distributed job & real‑time scheduler with fine‑grained slicing, retries, elastic scaling & web console.
|
|
|
NewLifeX/Stardust
星尘,轻量级分布式服务框架。配置中心、集群管理、远程自动发布、服务治理。服务自动注册和发现,负载均衡,动态伸缩,故障转移,性能监控。
|
| Version | Downloads | Last Updated |
|---|---|---|
| 3.9.2026.801 | 43 | 8/1/2026 |
| 3.9.2026.801-beta1701 | 34 | 8/1/2026 |
| 3.8.2026.726-beta1405 | 90 | 7/26/2026 |
| 3.8.2026.723-beta1615 | 99 | 7/23/2026 |
| 3.8.2026.722-beta1157 | 93 | 7/22/2026 |
| 3.8.2026.720-beta1503 | 91 | 7/20/2026 |
| 3.8.2026.716-beta0416 | 128 | 7/16/2026 |
| 3.8.2026.714-beta1144 | 88 | 7/14/2026 |
| 3.8.2026.714-beta0020 | 94 | 7/14/2026 |
| 3.8.2026.706 | 122 | 7/6/2026 |
| 3.8.2026.706-beta0919 | 103 | 7/6/2026 |
| 3.7.2026.705-beta0241 | 102 | 7/5/2026 |
| 3.7.2026.608-beta1321 | 106 | 6/8/2026 |
| 3.7.2026.607-beta0438 | 103 | 6/7/2026 |
| 3.7.2026.606-beta1713 | 113 | 6/6/2026 |
| 3.7.2026.601 | 124 | 6/1/2026 |
| 3.7.2026.601-beta0657 | 102 | 6/1/2026 |
| 3.7.2026.524-beta0246 | 109 | 5/24/2026 |
| 3.7.2026.518-beta1101 | 109 | 5/18/2026 |
| 3.7.2026.501 | 196 | 5/1/2026 |
服务端请求处理全链路异步化,消除线程阻塞,提升高并发吞吐;新增 IAsyncApiHandler 标记接口,消除处理器路由反射;响应消息注入 TraceId,支持调用链追踪;节点在线与设备在线表新增登录时间字段;增强 WebSocket 心跳判死与会话管理机制;重构设备服务登录与在线持久化流程,统一长连接通知处理;优化 Headers 注入逻辑,避免数组/列表参数转换为字典导致数据丢失;修复客户端与通道代码缺陷,增强健壮性