RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架
|
# NewLife.Remoting — Einheitliches Remoting-Framework (RPC + HTTP + WebSocket + SRMP)







[](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/aot.yml)
[](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/test.yml)
<!-- metrics:start -->
[](/NewLife/NewLife.Remoting/Blob/master/Doc/AOT兼容性分析.md)
[](https://www.nuget.org/packages/NewLife.Remoting)
[](/NewLife/NewLife.Remoting/Blob/master/Doc/多语言本地化接入.md)
<!-- metrics:end -->


[](https://github.com/NewLifeX/NewLife.Remoting/graphs/contributors)
<!-- lang:start -->
🌐 [English](/NewLife/NewLife.Remoting/Blob/master/README.md) | [简体中文](/NewLife/NewLife.Remoting/Blob/master/README.zh-CN.md) | [繁體中文](/NewLife/NewLife.Remoting/Blob/master/README.zh-TW.md) | [Español](/NewLife/NewLife.Remoting/Blob/master/README.es.md) | [日本語](/NewLife/NewLife.Remoting/Blob/master/README.ja.md) | [Français](/NewLife/NewLife.Remoting/Blob/master/README.fr.md) | [Português](/NewLife/NewLife.Remoting/Blob/master/README.pt.md) | [Русский](/NewLife/NewLife.Remoting/Blob/master/README.ru.md) | [한국어](/NewLife/NewLife.Remoting/Blob/master/README.ko.md) | [العربية](/NewLife/NewLife.Remoting/Blob/master/README.ar.md)
<!-- lang:end -->
NewLife.Remoting ist die einheitliche Remoting-Infrastruktur des NewLife-Stacks und besteht aus zwei NuGet-Paketen:
| Paket | Rolle | Umfang |
|:---|:-----|:------|
| **NewLife.Remoting** | Kernbibliothek | RPC-Client/Server, Protokoll-Codecs, Verbindungsverwaltung, Streaming-Aufrufe, Client-Basisklassen, Kommando-Pipeline, Auto-Update |
| **NewLife.Remoting.Extensions** | Erweiterungsbibliothek | Controller-Basisklassen, Minimal-API-Host, Geräteverwaltung, Token-Authentifizierung, Command-Response-Bus |
Quellcode: https://github.com/NewLifeX/NewLife.Remoting
> NuGet: `NewLife.Remoting` / `NewLife.Remoting.Extensions`
> ⚠️ Diese Übersetzung kann veraltet sein; maßgeblich ist das [englische README](/NewLife/NewLife.Remoting/Blob/master/README.md).
## Dokumentationsindex
| Dokument | Beschreibung |
|------|------|
| [Doc/需求文档.md](/NewLife/NewLife.Remoting/Blob/master/Doc/需求文档.md) | Anforderungen: Vision, Ziele, funktionale Anforderungen (RPC/STRM/CLNT/UPGD/SRV/CMD/AOT/L10N/EXT) |
| [Doc/架构设计.md](/NewLife/NewLife.Remoting/Blob/master/Doc/架构设计.md) | Architektur: Schichten, Kernmodule, Speicherverwaltung, Teststrategie, Designentscheidungen |
| [Doc/SRV-服务端架构.md](/NewLife/NewLife.Remoting/Blob/master/Doc/SRV-服务端架构.md) | Server-Architektur: Service-Schicht, Kernabläufe (Login/Registrierung/Logout/Heartbeat/Update/Ereignisse/Kommandos), Session-Lebenszyklus, Cluster-Betrieb |
| [Doc/功能清单.md](/NewLife/NewLife.Remoting/Blob/master/Doc/功能清单.md) | Funktionsverfolgung: Status, laufende Punkte und Backlog |
| [Doc/竞品分析.md](/NewLife/NewLife.Remoting/Blob/master/Doc/竞品分析.md) | Wettbewerbsanalyse: RPC-Frameworks und IoT-Kommandozustellung |
| [Doc/SRMP.MD](/NewLife/NewLife.Remoting/Blob/master/Doc/SRMP.MD) | SRMP-Protokollspezifikation |
| [Doc/RPC内存管理设计.md](/NewLife/NewLife.Remoting/Blob/master/Doc/RPC内存管理设计.md) | Zero-Copy-Speicherverwaltung |
| [Doc/自动更新机制.md](/NewLife/NewLife.Remoting/Blob/master/Doc/自动更新机制.md) | Vollständiges Auto-Update-Design |
| [Doc/重试策略.md](/NewLife/NewLife.Remoting/Blob/master/Doc/重试策略.md) | Wiederholungsstrategie: `IRetryPolicy` und exponentielles Backoff |
| [Doc/AOT兼容性分析.md](/NewLife/NewLife.Remoting/Blob/master/Doc/AOT兼容性分析.md) | NativeAOT-Umfang, <!--aot-scenarios:start-->23<!--aot-scenarios:end--> geprüfte Szenarien (Smoke <!--aot-smoke:start-->23/23<!--aot-smoke:end-->), Anleitung und bekannte Grenzen |
| [Doc/多语言本地化接入.md](/NewLife/NewLife.Remoting/Blob/master/Doc/多语言本地化接入.md) | Englische Laufzeitmeldungen, `Locales/*.yml`-Tabellen und `L.T`-Anleitung |
| [Doc/README多语言规范.md](/NewLife/NewLife.Remoting/Blob/master/Doc/README多语言规范.md) | Sortierregeln, Generator-Skripte und CI-Gate für die 11 README-Sprachen |
---
## Highlights
| Fähigkeit | Beschreibung |
|:---------|------|
| **RPC-Kern** | SRMP-Protokoll, JSON-/Binär-Codecs, Request-Pipeline, Client/Server, Cluster-Verwaltung, Metadaten, Retry-Policy, durchgehend asynchroner Server, TraceId-Tracing |
| **STRM-Streaming** | Server-Streaming: `IAsyncEnumerable<T>` elementweise über SRMP und SSE |
| **CLNT-Clientbasis** | Login/Heartbeat/Update/Kommandos/Ereignisse an einer Stelle, automatischer WS/SSE-Wechsel |
| **UPGD-Auto-Update** | Erkennen → Herunterladen → Prüfen → Entpacken → Überschreiben → Neustart |
| **SRV-Serverbasis** | ApiController/BaseController/BaseDeviceController, TokenService, IDeviceService; dasselbe Endpunktprotokoll als MVC und als Minimal-API (spiegelgleiche Implementierungen, durch Tests abgesichert) |
| **CMD-Kommandos** | SessionManager + Event-Bus-Broadcast + WS/SSE/Ping-Kanäle |
| **L10N-Lokalisierung** | Laufzeitmeldungen mit Englisch als Quelltext; `Locales/*.yml` liefern 31 integrierte Sprachen (inklusive vereinfachtem und traditionellem Chinesisch), fehlende Einträge fallen auf Englisch zurück; kein ResourceManager, keine Satellitenassemblys |
| **AOT-Unterstützung** | Permanente AOT-Analyse ab net8.0 (0 Warnungen in Kernbibliothek und Extensions) + eigener Source-Generator (Dispatch-Tabelle, Stream-Pumps, Signaturerhalt); NativeAOT geprüft für <!--aot-scenarios:start-->23<!--aot-scenarios:end--> Szenarien, 11 Minimal-API-Szenarien und 6 XCode-Geräteszenarien (siehe AOT-Dokument §8) |
## Schnellstart
**Fünf Zeilen Server, fünf Zeilen Client – RPC läuft:**
```csharp
// === Server ===
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}";
// Streaming: IAsyncEnumerable<T> wird elementweise gesendet
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}";
}
}
}
// === Client ===
var client = new ApiClient("tcp://127.0.0.1:12345");
client.Open();
// Normaler Aufruf
var rs = await client.InvokeAsync<String>("My/Ping", new { name = "dev" });
// Streaming-Aufruf – Empfang der Server-Pushes
await foreach (var log in client.InvokeStreamAsync<String>("My/StreamLogs", new { count = 10 }))
Console.WriteLine(log);
// Metadaten (TraceId wird automatisch gesetzt)
client.Headers["TenantId"] = "tenant-01";
```
## Leistungsdaten
| Kennzahl | Typisch | Labor-Spitze |
|:----|:------:|:--------:|
| TCP-Langzeitverbindungen | 10.000 | 4.000.000 |
| RPC-Durchsatz | 100.000 TPS | 455.000 msg/s |
| Latenz pro RPC | ~41 μs | — |
| Zielframeworks | net45 / net461 / netstandard2.0 / netstandard2.1 / net6.0 / net8.0 / net10.0 (abgestimmt auf NewLife.Core v12; NativeAOT ab net8.0) |
## Upgrade auf v4
v4 ist auf NewLife.Core v12 abgestimmt und ändert die Netzwerkschicht. Vor dem Upgrade:
- **Zwei Ports**: Der Hauptport bedient nur SRMP; HTTP muss explizit über `HttpPort` aktiviert werden (standardmäßig aus).
- **Kein SRMP über WebSocket**: `ws://`/`wss://`-Adressen lösen jetzt `NotSupportedException` aus; verwenden Sie `tcp://`/`udp://` für SRMP und `http(s)://` für HTTP-Aufrufe.
- **Codec-Typen entfernt**: `WsClient`, `HttpCodec`, `WebSocketClientCodec`, `WebSocketServerCodec` und die Frame-Methoden von `HttpMessage` entfallen; HTTP übernimmt der Core-`HttpServer`, benutzerdefiniertes Framing implementiert `IMessageCodec`.
- **Englische Nachrichtenschlüssel**: Laufzeitmeldungen verwenden den englischen Quelltext als Schlüssel; vergleichen Sie `ApiCode` oder Fehlercodes statt lokalisierter Texte.
- **Zielframeworks**: net5.0/net7.0/net9.0-Assets werden nicht mehr ausgeliefert; NuGet fällt automatisch auf das nächstliegende unterstützte Framework zurück.
Die vollständige Liste steht in [ChangeLog.md](/NewLife/NewLife.Remoting/Blob/master/ChangeLog.md).
---
## Zusammenspiel mit anderen NewLife-Komponenten
| Komponente | Nutzen |
| ---- | -------- |
| NewLife.Core | Logging, Konfiguration, Serialisierung, Lokalisierung, Objektpool, TimerX, Tracing |
| NewLife.Net | Hochperformanter Netzwerk-Stack, WebSocket/Codecs, Port-Wiederverwendung |
| NewLife.Redis | Verteilter Cache / Message-Queue für geteilte Sessions oder Push-Fanout |
| Stardust | Knotenregistrierung, Config-Center, APM, Release-Center |
| AntJob | Job-Scheduling und verteiltes Rechnen über ClientBase |
| NewLife.MQTT / Modbus / IoT | Geräteprotokolle erfassen und über Remoting senden |
## Beiträge und Feedback
Willkommen: Bug-Reports, Performance-PRs, neue Protokoll-Codecs, Controller-Beispiele, Dokumentation und neue Übersetzungen.
Bitte im Issue angeben: Laufzeitumgebung, Zielframework, minimale Reproduktion und Logauszug.
---
## Ökosystem-Karte
NewLife ist ein geschichtetes Ökosystem unabhängig versionierter Open-Source-Projekte. Die folgende Karte wird wortgleich in allen NewLife-Repositories verwendet; jedes Projekt verlinkt auf sein Repository und sein primäres NuGet-Paket.
| Projekt | Funktion | Downloads |
| --- | --- | --- |
| **Grundlage** | | |
| [NewLife.Core](https://github.com/NewLifeX/X) | Protokollierung, Konfiguration, Caching, Netzwerk, Serialisierung, Zeitplanung und APM-Tracing. | [](https://www.nuget.org/packages/NewLife.Core) |
| [NewLife.XCode](https://github.com/NewLifeX/NewLife.XCode) | Daten-Middleware: einzelne Tabellen in der Größenordnung von zig Milliarden Zeilen, automatisches Sharding, Lese-/Schreibtrennung, über 10 Datenbanken. | [](https://www.nuget.org/packages/NewLife.XCode) |
| [NewLife.Net](https://github.com/NewLifeX/NewLife.Net) | Hochperformante Netzwerkbibliothek: 1,77 Mio. pps / 14,5 Gbps auf einer Maschine (TCP 1KB, 2026-10), 4 Mio. langlebige TCP-Verbindungen. | [](https://www.nuget.org/packages/NewLife.Net) |
| [NewLife.Remoting](https://github.com/NewLifeX/NewLife.Remoting) | Protokollkommunikation und RPC-Framework für Client/Server-Anwendungen und IoT-Geräte. | [](https://www.nuget.org/packages/NewLife.Remoting) |
| [NewLife.Agent](https://github.com/NewLifeX/NewLife.Agent) | Installiert .NET-Anwendungen als Betriebssystem-Dienste: Windows-Dienste und Linux-systemd. | [](https://www.nuget.org/packages/NewLife.Agent) |
| [NewLife.Templates](https://github.com/NewLifeX/NewLife.Zero) | `dotnet new`-Projektvorlagen für Konsole, Web, API, Dienst, Daten und IoT. | [](https://www.nuget.org/packages/NewLife.Templates) |
| **Daten & Messaging** | | |
| [NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis) | Redis-Client mit Mikrosekunden-Latenz, Millionen Operationen pro Sekunde und integrierten Nachrichtenwarteschlangen. | [](https://www.nuget.org/packages/NewLife.Redis) |
| [NewLife.RocketMQ](https://github.com/NewLifeX/NewLife.RocketMQ) | Vollständig verwalteter RocketMQ-Client für Apache RocketMQ und Alibaba Cloud Message Queue. | [](https://www.nuget.org/packages/NewLife.RocketMQ) |
| [NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT) | MQTT-Client und -Server, einschließlich Alibaba Cloud IoT-Anbindung. | [](https://www.nuget.org/packages/NewLife.MQTT) |
| [NewLife.NovaDb](https://github.com/NewLifeX/NewLife.NovaDb) | Hybriddatenbank in C#: eingebettet oder im Netzwerk, relational, Zeitreihen, Nachrichtenwarteschlange und KV in einem. | [](https://www.nuget.org/packages/NewLife.NovaDb) |
| [NewLife.MySql](https://github.com/NewLifeX/NewLife.MySql) | MySql-Treiber und Hilfsschicht auf Basis des NewLife-Datenstacks. | [](https://www.nuget.org/packages/NewLife.MySql) |
| **Web, KI & verteilt** | | |
| [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | Schnelles Framework für Administrationsplattformen: Berechtigungen, SSO, OAuth-Server und CRUD-Gerüst. | [](https://www.nuget.org/packages/NewLife.Cube) |
| [Stardust](https://github.com/NewLifeX/Stardust) | Verteilte Dienstplattform: Knotenverwaltung, APM, Konfigurationszentrum, Registry und Release-Center. | [](https://www.nuget.org/packages/NewLife.Stardust) |
| [AntJob](https://github.com/NewLifeX/AntJob) | Plattform für verteilte Aufgaben und Echtzeit-Datenplanung mit Sharding, Wiederholungen und Backfill. | [](https://www.nuget.org/packages/NewLife.AntJob) |
| [NewLife.AI](https://github.com/NewLifeX/NewLife.AI) | Einheitlicher Client für 46 LLM-Anbieter plus ChatAI, eine sofort einsatzbereite Web-Chat-Anwendung. | [](https://www.nuget.org/packages/NewLife.AI) |
| **Industrie & IoT** | | |
| [NewLife.IoT](https://github.com/NewLifeX/NewLife.IoT) | IoT-Standardbibliothek mit Protokollverträgen und Geräteabstraktionen. | [](https://www.nuget.org/packages/NewLife.IoT) |
| [NewLife.Modbus](https://github.com/NewLifeX/NewLife.Modbus) | Modbus-TCP/RTU/ASCII-Implementierung auf Basis von NewLife.IoT. | [](https://www.nuget.org/packages/NewLife.Modbus) |
| [NewLife.Siemens](https://github.com/NewLifeX/NewLife.Siemens) | Siemens-SPS-Protokoll auf Basis von NewLife.IoT. | [](https://www.nuget.org/packages/NewLife.Siemens) |
| [NewLife.Omron](https://github.com/NewLifeX/NewLife.Omron) | Omron-SPS-Protokoll auf Basis von NewLife.IoT. | [](https://www.nuget.org/packages/NewLife.Omron) |
| [NewLife.Melsec](https://github.com/NewLifeX/NewLife.Melsec) | Mitsubishi-Melsec-SPS-Protokoll auf Basis von NewLife.IoT. | [](https://www.nuget.org/packages/NewLife.Melsec) |
| [NewLife.OPC](https://github.com/NewLifeX/NewLife.OPC) | OPC-Client für industriellen Datenzugriff. | — |
| [NewLife.BACnet](https://github.com/NewLifeX/NewLife.BACnet) | BACnet-Protokollstack für die Gebäudeautomation. | [](https://www.nuget.org/packages/NewLife.BACnet) |
| [ZeroIoT](https://github.com/NewLifeX/ZeroIoT) | Leichtgewichtige Open-Source-IoT-Plattform mit Gateway- und Geräteverwaltung. | — |
| **Fahrzeugtelematik** | | |
| [NewLife.JT808](https://github.com/NewLifeX/NewLife.JT808) | JT/T-808-Fahrzeugortungsprotokoll: über 70 Nachrichtenkörper, 2011/2013/2019. | [](https://www.nuget.org/packages/NewLife.JT808) |
| [NewLife.JT809](https://github.com/NewLifeX/NewLife.JT809) | JT/T-809-Plattform-zu-Plattform-Protokoll für Verkehrsbehörden. | [](https://www.nuget.org/packages/NewLife.JT809) |
| [NewLife.JT1078](https://github.com/NewLifeX/NewLife.JT1078) | JT/T-1078-Fahrzeugvideo: RTP-Parsing, FLV/fMP4-Remuxing und Live-Streaming. | [](https://www.nuget.org/packages/NewLife.JT1078) |
| **Domänenkomponenten** | | |
| [NewLife.Office](https://github.com/NewLifeX/NewLife.Office) | Ein Paket für Excel, Word, PPT, PDF und über 15 Dokumentformate. | [](https://www.nuget.org/packages/NewLife.Office) |
| [NewLife.Audio](https://github.com/NewLifeX/NewLife.Audio) | Plattformübergreifendes Audio: Codecs, Geräte-I/O, DSP, Container und Streaming. | [](https://www.nuget.org/packages/NewLife.Audio) |
| [NewLife.Video](https://github.com/NewLifeX/NewLife.Video) | Videocodecs, Containerformate, Frame-Verarbeitung und Streaming. | [](https://www.nuget.org/packages/NewLife.Video) |
| [NewLife.Map](https://github.com/NewLifeX/NewLife.Map) | Einheitliche Schnittstelle für Baidu, AMap, Tencent und Tianditu mit Geokodierung und Koordinatenumrechnung. | [](https://www.nuget.org/packages/NewLife.Map) |
| [NewLife.IP](https://github.com/NewLifeX/NewLife.IP) | IPv4-Geolokalisierung mit einer offline speichergemappten Datenbank und einer Online-API als Fallback. | [](https://www.nuget.org/packages/NewLife.IP) |
| **Werkzeuge & Produkte** | | |
| [CrazyCoder](https://github.com/NewLifeX/XCoder) | Entwickler-Toolbox: Netzwerk, serielle Schnittstelle, Krypto, Regex, Modbus und MQTT. | [](https://www.nuget.org/packages/NewLife.XCoder) |
| [GitCandy](https://github.com/NewLifeX/GitCandy) | Selbst gehostetes Git-Quellcode-Verwaltungssystem. | — |
| [LuckyClover](https://github.com/NewLifeX/LuckyClover) | Installiert automatisch die passende .NET-Laufzeit, wenn es von einem älteren Host gestartet wird. | — |
> Die Badges zeigen das primäre Paket jedes Projekts; Theme-, Erweiterungs- und Satellitenpakete sind auf den jeweiligen NuGet-Seiten aufgeführt.Die hier nicht aufgeführten über 30 Pakete (FTP, LoRa, Office-Erweiterungen, Protokolltreiber und mehr) sind in der [NewLifeX-Organisation](https://github.com/NewLifeX) und auf [newlifex.com](https://newlifex.com) verfügbar.
---
## Team
<img src="https://newlifex.com/logo.png" width="48" align="right" alt="NewLife" />
NewLife wurde 2002 gegründet und widmet sich seit mehr als zwei Jahrzehnten dem .NET- und IoT-Ökosystem, betreut fast 100 Open-Source-Projekte (34 davon Hauptprojekte) und liefert integrierte Hard- und Softwarelösungen für die Bereiche Energie, Logistik, Gesundheitswesen, Industrieautomation und Internet. Unser Leitspruch lautet „Lernen kennt kein Dienstalter – wer es beherrscht, wird zum Lehrmeister“.
Die Open-Source-Komponenten wurden <!--nuget-total:start-->6.48M<!--nuget-total:end--> Mal von NuGet heruntergeladen (ökosystemweit, Stand 2026-10).
Website: https://newlifex.com · Open-Source-Organisation: https://github.com/NewLifeX
<details>
<summary>WeChat-Offizieller Account: 智能大石头 (zum Folgen scannen)</summary>

</details>
---
## Lizenz
MIT © NewLife. Kommerzielle Nutzung und Weiterentwicklung sind willkommen.
|