NewLife.Remoting.Extensions 3.5.2025.830-beta1611

This is a prerelease version of NewLife.Remoting.Extensions.
dotnet add package NewLife.Remoting.Extensions --version 3.5.2025.830-beta1611
                    
NuGet\Install-Package NewLife.Remoting.Extensions -Version 3.5.2025.830-beta1611
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.5.2025.830-beta1611" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NewLife.Remoting.Extensions" Version="3.5.2025.830-beta1611" />
                    
Directory.Packages.props
<PackageReference Include="NewLife.Remoting.Extensions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NewLife.Remoting.Extensions --version 3.5.2025.830-beta1611
                    
#r "nuget: NewLife.Remoting.Extensions, 3.5.2025.830-beta1611"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NewLife.Remoting.Extensions@3.5.2025.830-beta1611
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NewLife.Remoting.Extensions&version=3.5.2025.830-beta1611&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=NewLife.Remoting.Extensions&version=3.5.2025.830-beta1611&prerelease
                    
Install as a Cake Tool

NewLife.Remoting - 统一高性能远程通信框架 (RPC + HTTP + WebSocket + SRMP)

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

Nuget Downloads Nuget Nuget (with prereleases)

简单、统一、可扩展、跨多目标框架 (net45 ~ net9.0) 的远程通信基础设施。单一生态内同时覆盖:

  • 二进制高性能 RPC (长连接 / 主动下发 / 海量连接与吞吐)
  • 标准 HTTP / REST (易集群 / 生态丰富 / 负载均衡)
  • WebSocket 指令下发与事件推送
  • SRMP (Simple Remote Message Protocol) 远程消息协议
  • 统一应用客户端基类 ClientBase(登录 / 心跳 / 升级 / 指令 / 事件)

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


目录导航


核心特性

  1. 双架构:同一套模型同时支持【高性能二进制 RPC】与【标准 HTTP/REST】
  2. 海量连接:单机典型 1 万 TCP 长连接,实验峰值 400 万;吞吐典型 10 万 TPS,实验峰值 2266 万 TPS(依赖 NewLife.Net 内核)
  3. 零第三方重依赖:日志 / 序列化 / 网络栈 / 对象池 均为自研生态,可控可裁剪
  4. 可观测性:内置性能统计、慢调用跟踪、分布式追踪接口 (ITracer)
  5. 统一客户端生命周期:登录、心跳、升级、指令、事件上报 一站式封装
  6. SRMP 协议:Header + Body 简洁帧格式,支持粘拆包、双向消息、OneWay、Reply 标识
  7. 安全:令牌颁发 + 可插拔密码/签名提供者 + Token 续期策略
  8. WebSocket 通道:HTTP 架构下的实时指令下发与推送
  9. 控制器模型:与 WebApi 类似的 Controller/Action 调用体验(ApiServer / ApiController)
  10. 扩展组建:NewLife.Remoting.Extensions 提供 ASP.NET Core 设备接入基类、令牌服务、会话管理、模型绑定器

架构概览

          +-------------------+                     +--------------------+
          |  客户端 ClientBase |                     |  服务端 ApiServer   |
          |  (ApiClient/HTTP) |  <--- SRMP/TCP --->  |  控制器/Handler     |
          +---------+---------+                     +----+-----------+----+
                    | HTTP/REST 负载均衡                  | 注册服务/依赖注入
                    v                                   v
          +-------------------+   WebSocket   +--------------------------+
          | ApiHttpClient     |<------------->|  BaseDeviceController    |
          +-------------------+  指令/事件     +-----------+--------------+
                                                     | TokenService
                                                     | SessionManager
                                                     v
                                              +---------------+
                                              | 业务/存储/缓存 |
                                              +---------------+
  • RPC:长连接 / 二进制 / 低开销 / 服务端可主动推送
  • HTTP:标准化 / 容易接入网关 / 每次独立认证 / WebSocket 下发指令
  • 二者共享:登录模型、心跳语义、令牌机制、序列化策略、事件与指令抽象

适用场景对比

维度 RPC 架构 HTTP 架构
连接模型 长连接 (TCP/UDP) 短连接 + 可选 WebSocket
吞吐/延迟 极致性能/低延迟 受 HTTP 栈 & 负载均衡影响
推送能力 服务端直接下发 需 WebSocket 通道
负载均衡 客户端挑选一个节点保持 请求级(云原生友好)
二进制大包 友好(自定义序列化) 不适合(默认 JSON)
接入复杂度 需要 SDK/协议 任意 HTTP 客户端即可
典型场景 任务调度、物联网网关、工业采集 设备管理平台、通用 REST、混合接入

快速开始

安装模板(推荐)

dotnet new install NewLife.Templates

RPC 服务端最小示例

dotnet new rpcserver --name RpcServer
cd RpcServer
dotnet run

核心代码(示意):

var server = new ApiServer(12345);
server.Register(new MyController(), null); // 暴露控制器全部 Action
server.Start();

public class MyController : ApiController
{
    public String Ping(String name) => $"Hello {name}, {DateTime.Now:HH:mm:ss}";
}

RPC 客户端调用示例

var client = new ApiClient("tcp://127.0.0.1:12345");
await client.OpenAsync();
var rs = await client.InvokeAsync<String>("My/Ping", new { name = "dev" });
Console.WriteLine(rs);

HTTP + WebSocket 设备接入

Program.cs 中:

builder.Services.AddRemoting();
var app = builder.Build();
app.UseRemoting();
app.MapControllers();
app.Run();

public class DeviceController : BaseDeviceController
{
    public DeviceController(IServiceProvider p) : base(p) { }
}

客户端使用 ApiHttpClient 登录 + 周期 Ping,服务端可通过 WebSocket 通道下发指令。


统一客户端 ClientBase 能力

ClientBase 抽象了设备 / 节点 / 应用常见生命周期:

  • 登录:多种模式(应用 AppId/AppSecret、设备 Code/Secret、OAuth)
  • 心跳:带服务器时间、令牌续期、保持在线状态
  • 升级:统一 Upgrade 查询,返回版本与下载地址(自动补全绝对路径)
  • 指令:RPC 直接下发;HTTP 通过 WebSocket 推送;客户端统一 CommandReply 回执
  • 事件:批量上报 EventModel[]
  • 安全:内置时间戳 + 签名/令牌 验证流程

SRMP 协议简介

SRMP (Simple Remote Message Protocol):

  • 面向消息的远程调用与推送协议
  • 支持标志位:OneWay / Reply / Flag 扩展
  • 设计目标:比 HTTP 更低的开销;比原始 TCP 更易解析与调试
  • 在 ApiNetServer 中通过 WebSocketServerCodec + 标准消息编解码器组合使用 详见:Doc/SRMP.MD

性能指标

指标 典型值 实验峰值 说明
TCP 长连接数 10,000 4,000,000 依赖内核与系统参数调优
RPC 吞吐 100,000 TPS 22,660,000 TPS 简单回显场景,基于 NewLife.Net
HTTP 并发连接 1,000 (可水平扩展) 受 Kestrel/网关限制
心跳开销 微秒级 - 轻量协议 + 对象池复用

建议结合实际业务压测,关注序列化体积与对象分配。


认证与安全

  • 登录:设备 / 应用 / OAuth 三模式;成功返回访问令牌 + 过期时间
  • 令牌续期:心跳内置检测,10 分钟内到期可自动刷新(可扩展策略)
  • 密钥保护:SaltPasswordProvider(可替换)避免明文密钥直接传输
  • 会话管理:SessionManager(WebSocket 长连接登记、关闭释放)
  • 异常:统一 ApiException + ApiCode,避免泄漏内部实现细节

扩展与二次开发

可扩展点:

  1. 自定义序列化:实现 IJsonHost / 二进制编码器替换 Encoder
  2. 自定义认证:替换 TokenService 或 IPasswordProvider
  3. 控制器解析:通过 ApiServer.Register(controller, method)
  4. 消息拦截:订阅 ApiServer.Received 统一埋点 / 鉴权 / 限流
  5. 协议扩展:在 ApiNetServer.Init 中追加自定义 Codec
  6. 事件与指令:实现 IDeviceService / 使用 CommandReply & PostEvents
  7. 日志与追踪:注入 ILog / ITracer,实现链路关联

与其它 NewLife 组件协同

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

多目标框架兼容策略

  • 支持:net45 / net461 / netstandard2.0 / netstandard2.1 / net5.0~net9.0
  • 通过条件编译隔离新旧 API(Span / ValueTask / Socket 特性等)
  • 遵循:不主动移除旧 TFM;新增功能优先判断可用性再启用

项目生态矩阵

完整生态与说明见下方 新生命项目矩阵。Remoting 作为“通信基座”横向衔接 网关设备接入 / 调度平台 / 分布式服务治理 / IoT 协议栈。


贡献与反馈

欢迎:Bug 反馈 / 性能优化 PR / 新协议编解码 / 控制器示例 / 文档补充。
提交前请阅读 .github/copilot-instructions.md 了解编码规范 & Multi‑TFM 原则。
Issue 讨论请尽量提供:运行环境、目标框架、最小可复现代码、日志摘要。


快速命令回顾

# 安装模板
dotnet new install NewLife.Templates
# 创建 RPC 服务端骨架
dotnet new rpcserver --name RpcServer
# 运行
dotnet run

新生命项目矩阵

各项目默认支持 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年以来全部记录。

微信公众号:
智能大石头


变更记录

请关注 Release / Tag 说明或提交历史。后续可引入 CHANGELOG 简述关键性能与兼容性变更。


License

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

Product 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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NewLife.Remoting.Extensions:

Package Downloads
AntWeb

分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累

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.5.2025.830-beta1611 22 8/30/2025
3.5.2025.827-beta1704 66 8/27/2025
3.5.2025.826-beta0442 129 8/26/2025
3.5.2025.825-beta2351 133 8/25/2025
3.5.2025.824-beta1236 155 8/24/2025
3.5.2025.822-beta0944 90 8/22/2025
3.5.2025.820-beta1825 126 8/20/2025
3.5.2025.818-beta1634 144 8/18/2025
3.5.2025.812-beta1259 141 8/12/2025
3.4.2025.812-beta1032 125 8/12/2025
3.4.2025.812-beta1003 126 8/12/2025
3.4.2025.808-beta1105 208 8/8/2025
3.4.2025.805-beta1659 214 8/5/2025
3.4.2025.805-beta1531 204 8/5/2025
3.4.2025.801 154 8/1/2025
3.4.2025.801-beta0218 107 8/1/2025
3.4.2025.731-beta0004 113 7/31/2025
3.4.2025.722-beta0820 490 7/22/2025
3.4.2025.719-beta0004 22 7/19/2025
3.4.2025.713-beta1545 178 7/13/2025
3.4.2025.713-beta1351 134 7/13/2025
3.4.2025.713-beta1335 132 7/13/2025
3.3.2025.709-beta0306 133 7/9/2025
3.3.2025.701 177 7/1/2025
3.3.2025.701-beta0355 132 7/1/2025
3.3.2025.616-beta1415 158 6/16/2025
3.3.2025.610-beta0350 284 6/10/2025
3.3.2025.601 233 6/1/2025
3.3.2025.601-beta0800 97 6/1/2025
3.3.2025.527-beta1716 156 5/27/2025
3.3.2025.521-beta1200 167 5/21/2025
3.3.2025.519-beta1620 144 5/19/2025
3.3.2025.515-beta1338 222 5/15/2025
3.3.2025.514-beta0417 224 5/14/2025
3.3.2025.501 239 5/1/2025
3.3.2025.501-beta1629 142 5/1/2025
3.3.2025.428-beta0633 160 4/28/2025
3.3.2025.426-beta1312 105 4/26/2025
3.3.2025.417-beta1306 197 4/17/2025
3.3.2025.415-beta1725 202 4/15/2025
3.3.2025.415-beta1203 198 4/15/2025
3.3.2025.415-beta1143 179 4/15/2025
3.3.2025.412-beta0428 124 4/12/2025
3.3.2025.401 342 4/1/2025
3.3.2025.401-beta0524 146 4/1/2025
3.3.2025.329-beta1224 100 3/29/2025
3.3.2025.301 251 3/1/2025
3.3.2025.301-beta0131 88 3/1/2025
3.3.2025.226-beta0837 129 2/26/2025
3.3.2025.225-beta1354 96 2/25/2025
3.3.2025.225-beta1254 105 2/25/2025
3.3.2025.225-beta0533 90 2/25/2025
3.3.2025.224-beta1623 99 2/24/2025
3.2.2025.224-beta1147 102 2/24/2025
3.2.2025.221-beta0925 106 2/21/2025
3.2.2025.212-beta1257 86 2/12/2025
3.2.2025.207-beta0905 103 2/7/2025
3.2.2025.201 466 2/1/2025
3.2.2025.201-beta1615 94 2/1/2025
3.2.2025.109-beta1236 237 1/9/2025
3.2.2025.103-beta1513 133 1/3/2025
3.2.2025.101 175 1/1/2025
3.2.2025.101-beta0602 111 1/1/2025
3.2.2024.1225-beta1616 110 12/25/2024
3.2.2024.1206 273 12/6/2024
3.2.2024.1206-beta1615 88 12/6/2024
3.2.2024.1202 118 12/2/2024
3.2.2024.1202-beta0216 76 12/2/2024
3.2.2024.1130-beta1013 102 11/30/2024
3.2.2024.1124-beta1544 96 11/24/2024
3.2.2024.1116 168 11/16/2024
3.0.2024.1031-beta0000 106 10/31/2024
3.0.2024.1030-beta1007 98 10/30/2024
3.0.2024.1025-beta1552 104 10/25/2024
3.0.2024.1016-beta1325 102 10/16/2024
3.0.2024.1013-beta1545 127 10/13/2024
3.0.2024.1011-beta1545 106 10/11/2024
3.0.2024.1007-beta1531 87 10/7/2024
3.0.2024.1002 207 10/2/2024
3.0.2024.1002-beta0033 96 10/2/2024
3.0.2024.923-beta0435 114 9/23/2024
3.0.2024.914-beta0002 115 9/14/2024
3.0.2024.913-beta0902 112 9/13/2024
3.0.2024.912-beta0006 109 9/12/2024
3.0.2024.902 272 9/2/2024
3.0.2024.902-beta0615 100 9/2/2024
3.0.2024.812-beta0813 137 8/12/2024
3.0.2024.811-beta0608 121 8/11/2024
3.0.2024.806-beta0146 87 8/6/2024
3.0.2024.805 190 8/5/2024
3.0.2024.805-beta0114 76 8/5/2024
3.0.2024.801 141 8/1/2024
3.0.2024.801-beta0720 85 8/1/2024
3.0.2024.729-beta0815 120 7/29/2024
3.0.2024.728-beta0156 118 7/28/2024
3.0.2024.726-beta0605 100 7/26/2024
3.0.2024.719-beta0806 110 7/19/2024
3.0.2024.717-beta0605 110 7/17/2024
3.0.2024.712-beta0845 112 7/12/2024
3.0.2024.710-beta1226 153 7/10/2024
3.0.2024.710-beta0928 99 7/10/2024
3.0.2024.708 150 7/8/2024
3.0.2024.708-beta1003 127 7/8/2024
3.0.2024.703-beta0048 124 7/3/2024
3.0.2024.701 122 7/1/2024
3.0.2024.701-beta0219 108 7/1/2024
3.0.2024.630-beta0606 109 6/30/2024
3.0.2024.628-beta0626 113 6/28/2024
3.0.2024.627-beta1636 115 6/27/2024
3.0.2024.627-beta0009 111 6/27/2024
3.0.2024.626-beta1337 115 6/26/2024
3.0.2024.625-beta1714 114 6/25/2024
3.0.2024.625-beta1600 105 6/25/2024
3.0.2024.625-beta0716 112 6/25/2024
3.0.2024.624-beta1110 107 6/24/2024
3.0.2024.624-beta0627 118 6/24/2024
3.0.2024.624-beta0109 113 6/24/2024
3.0.2024.623-beta0607 120 6/23/2024
3.0.2024.622-beta1613 120 6/22/2024
3.0.2024.620-beta1407 185 6/20/2024
2.8.2024.619-beta0926 112 6/19/2024
2.8.2024.618-beta0215 114 6/18/2024
2.8.2024.616-beta0607 120 6/16/2024
2.8.2024.615-beta0041 116 6/15/2024
2.8.2024.612-beta0605 110 6/12/2024
2.8.2024.611-beta0352 115 6/11/2024
2.8.2024.610-beta1021 119 6/10/2024
2.8.2024.609-beta1256 118 6/9/2024
2.8.2024.604-beta0116 121 6/4/2024
2.8.2024.603-beta0605 107 6/3/2024
2.8.2024.519-beta0659 120 5/19/2024
2.8.2024.517-beta0717 128 5/17/2024
2.8.2024.516-beta1300 114 5/16/2024
2.8.2024.512-beta0715 116 5/12/2024
2.8.2024.509-beta0932 121 5/9/2024
2.8.2024.507-beta0132 134 5/7/2024

第三代协议通信库,增强RPC,引入主流Http/WebSockt/WebApi应用级封装