RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架
|
# NewLife.Remoting — 統合リモーティングフレームワーク (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/v4.0.2026.1024/Doc/AOT兼容性分析.md)
[](https://www.nuget.org/packages/NewLife.Remoting)
[](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/多语言本地化接入.md)
<!-- metrics:end -->


[](https://github.com/NewLifeX/NewLife.Remoting/graphs/contributors)
<!-- lang:start -->
🌐 [English](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.md) | [简体中文](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.zh-CN.md) | [繁體中文](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.zh-TW.md) | [Español](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.es.md) | [Deutsch](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.de.md) | [Français](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.fr.md) | [Português](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.pt.md) | [Русский](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.ru.md) | [한국어](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.ko.md) | [العربية](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.ar.md)
<!-- lang:end -->
NewLife.Remoting は NewLife スタックの統合リモーティング基盤で、2 つの NuGet パッケージで構成されます。
| パッケージ | 役割 | 範囲 |
|:---|:-----|:------|
| **NewLife.Remoting** | コア通信ライブラリ | RPC クライアント/サーバー、プロトコルコーデック、接続管理、ストリーミング呼び出し、クライアント基底クラス、コマンド配信パイプライン、自動更新 |
| **NewLife.Remoting.Extensions** | 拡張ライブラリ | サーバーコントローラー基底クラス、Minimal API ホスト、デバイス管理サービス、トークン認証、コマンド応答バス |
ソース: https://github.com/NewLifeX/NewLife.Remoting
> NuGet: `NewLife.Remoting` / `NewLife.Remoting.Extensions`
> ⚠️ 本翻訳は更新が遅れる場合があります。正式な内容は[英語 README](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.md)を参照してください。
## ドキュメント索引
| ドキュメント | 説明 |
|------|------|
| [Doc/需求文档.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/需求文档.md) | 要件定義:ビジョン、目標、機能要件(RPC/STRM/CLNT/UPGD/SRV/CMD/AOT/L10N/EXT) |
| [Doc/架构设计.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/架构设计.md) | アーキテクチャ:レイヤー、主要モジュール、メモリ管理、テスト戦略、設計判断 |
| [Doc/SRV-服务端架构.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/SRV-服务端架构.md) | サーバー業務アーキテクチャ:サービス層、主要フロー(ログイン/登録/ログアウト/ハートビート/更新/イベント/コマンド)、オンラインセッション、クラスタ運用 |
| [Doc/功能清单.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/功能清单.md) | 機能追跡:状態、進行中項目、バックログ |
| [Doc/竞品分析.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/竞品分析.md) | 競合分析:RPC フレームワーク比較と IoT コマンド配信の比較 |
| [Doc/SRMP.MD](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/SRMP.MD) | SRMP プロトコル仕様 |
| [Doc/RPC内存管理设计.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/RPC内存管理设计.md) | ゼロコピーのメモリ管理 |
| [Doc/自动更新机制.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/自动更新机制.md) | 自動更新の全体設計 |
| [Doc/重试策略.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/重试策略.md) | 再試行ポリシー:`IRetryPolicy` と指数バックオフ |
| [Doc/AOT兼容性分析.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/AOT兼容性分析.md) | NativeAOT の対応範囲、<!--aot-scenarios:start-->23<!--aot-scenarios:end--> シナリオ実測(スモーク <!--aot-smoke:start-->23/23<!--aot-smoke:end-->)、利用指針と既知の境界 |
| [Doc/多语言本地化接入.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/多语言本地化接入.md) | 実行時メッセージの英語化、`Locales/*.yml` と `L.T` の導入ガイド |
| [Doc/README多语言规范.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/README多语言规范.md) | README 11 言語の順序規則、生成スクリプト、CI ゲート |
---
## 特長
| 機能 | 説明 |
|:---------|------|
| **RPC コア** | SRMP プロトコル、JSON/バイナリコーデック、要求パイプライン、クライアント/サーバー、クラスタ接続管理、メタデータ伝播、再試行、サーバー全経路の非同期化、TraceId 追跡 |
| **STRM ストリーミング** | サーバーストリーミング:`IAsyncEnumerable<T>` を SRMP と SSE で逐次配信 |
| **CLNT クライアント基底** | ログイン/ハートビート/更新/コマンド/イベントを一括提供、WS/SSE を自動切替 |
| **UPGD 自動更新** | 検出 → ダウンロード → 検証 → 展開 → 上書き → 再起動 |
| **SRV サーバー基底** | ApiController/BaseController/BaseDeviceController、TokenService、IDeviceService。同一エンドポイントを MVC と Minimal API の両方で提供(ミラー実装をテストで固定) |
| **CMD コマンド配信** | SessionManager + イベントバスブロードキャスト + WS/SSE/Ping チャネル |
| **L10N 多言語** | 実行時メッセージは英語を原文とし、`Locales/*.yml` に 31 言語を内蔵(簡体字・繁体字中国語を含む)、未訳は英語へフォールバック。ResourceManager とサテライトアセンブリ不要 |
| **AOT 対応** | net8.0+ で AOT 解析を常時有効(コアライブラリ 0 警告 / Extensions 0 警告)+ 独自ソースジェネレーター(アクション分離表、ストリームポンプ、シグネチャ型保持)。コア <!--aot-scenarios:start-->23<!--aot-scenarios:end--> シナリオ、Extensions Minimal API 11 シナリオ、XCode デバイス経路 6 シナリオを NativeAOT で実測(AOT ドキュメント §8) |
## クイックスタート
**サーバー 5 行、クライアント 5 行で RPC が動作します。**
```csharp
// === サーバー ===
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 | 455,000 msg/s |
| RPC あたりの遅延 | 約 41 μs | — |
| 対応フレームワーク | net45 / net461 / netstandard2.0 / netstandard2.1 / net6.0 / net8.0 / net10.0(NewLife.Core v12 に追随、net8.0+ で NativeAOT) |
## v4 へのアップグレード
v4 は NewLife.Core v12 に追随し、ネットワーク層を変更します。アップグレード前にご確認ください:
- **デュアルポート**:メインポートは SRMP 専用です。HTTP を有効にするには `HttpPort` を明示的に設定してください(既定では無効)。
- **WebSocket 上の SRMP を廃止**:`ws://`/`wss://` アドレスは `NotSupportedException` をスローします。SRMP には `tcp://`/`udp://`、HTTP 呼び出しには `http(s)://` を使用してください。
- **独自コーデック型を削除**:`WsClient`、`HttpCodec`、`WebSocketClientCodec`、`WebSocketServerCodec`、`HttpMessage` のフレームメソッドは削除されました。HTTP は Core の `HttpServer` が処理し、独自フレーミングは `IMessageCodec` を実装してください。
- **英語のメッセージキー**:実行時メッセージは英語原文をキーにします。ローカライズ済み文字列ではなく `ApiCode` またはエラーコードで判定してください。
- **ターゲットフレームワーク**:net5.0/net7.0/net9.0 のアセットは提供されなくなり、NuGet は最も近いサポート対象フレームワークへ自動的にフォールバックします。
完全な一覧は [ChangeLog.md](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/ChangeLog.md) を参照してください。
---
## 他の NewLife コンポーネントとの連携
| コンポーネント | 連携価値 |
| ---- | -------- |
| NewLife.Core | ログ、設定、シリアル化、多言語、オブジェクトプール、TimerX、性能追跡 |
| NewLife.Net | 高性能ネットワークスタック、WebSocket/コーデック、ポート再利用 |
| NewLife.Redis | 分散キャッシュ / メッセージキュー、セッション共有やプッシュ fanout |
| Stardust | ノード登録、設定センター、APM、リリースセンター |
| AntJob | ClientBase 経由でジョブスケジューリングと分散処理 |
| NewLife.MQTT / Modbus / IoT | デバイス層プロトコルを収集し Remoting で上り送信 |
## コントリビュートとフィードバック
歓迎:バグ報告 / 性能改善 PR / 新しいプロトコルコーデック / コントローラー例 / ドキュメント追記 / 新言語の翻訳。
Issue には実行環境、ターゲットフレームワーク、最小再現コード、ログ抜粋を添えてください。
---
## エコシステムマップ
NewLife は、独立したバージョン管理を行うオープンソースプロジェクトの階層型エコシステムです。以下のマップはすべての NewLife リポジトリで逐語的に同一の内容を共有しており、各プロジェクトはコードリポジトリと主要な NuGet パッケージにリンクしています。
| プロジェクト | 概要 | ダウンロード数 |
| --- | --- | --- |
| **基盤** | | |
| [NewLife.Core](https://github.com/NewLifeX/X) | ログ、構成、キャッシュ、ネットワーク、シリアライズ、スケジューリング、APM トレーシング。 | [](https://www.nuget.org/packages/NewLife.Core) |
| [NewLife.XCode](https://github.com/NewLifeX/NewLife.XCode) | データミドルウェア:単一テーブルで数百億件級、自動シャーディング、読み書き分離、10 種類以上のデータベースに対応。 | [](https://www.nuget.org/packages/NewLife.XCode) |
| [NewLife.Net](https://github.com/NewLifeX/NewLife.Net) | 高性能ネットワークライブラリ:単一マシンで 177 万 pps、14.5 Gbps(TCP 1KB、2026-10 実測)、400 万 Tcp 長接続。 | [](https://www.nuget.org/packages/NewLife.Net) |
| [NewLife.Remoting](https://github.com/NewLifeX/NewLife.Remoting) | CS アプリケーションと IoT デバイス向けのプロトコル通信と RPC フレームワーク。 | [](https://www.nuget.org/packages/NewLife.Remoting) |
| [NewLife.Agent](https://github.com/NewLifeX/NewLife.Agent) | .NET アプリケーションを OS デーモンとしてインストール:Windows サービスと Linux systemd。 | [](https://www.nuget.org/packages/NewLife.Agent) |
| [NewLife.Templates](https://github.com/NewLifeX/NewLife.Zero) | コンソール、Web、API、サービス、データ、IoT 向けの `dotnet new` プロジェクトテンプレート。 | [](https://www.nuget.org/packages/NewLife.Templates) |
| **データとメッセージング** | | |
| [NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis) | マイクロ秒級の遅延、数百万 ops/s のスループット、メッセージキュー内蔵の Redis クライアント。 | [](https://www.nuget.org/packages/NewLife.Redis) |
| [NewLife.RocketMQ](https://github.com/NewLifeX/NewLife.RocketMQ) | Apache RocketMQ と Alibaba Cloud Message Queue に対応した純マネージド RocketMQ クライアント。 | [](https://www.nuget.org/packages/NewLife.RocketMQ) |
| [NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT) | MQTT クライアントとサーバー。Alibaba Cloud IoT への接続を含みます。 | [](https://www.nuget.org/packages/NewLife.MQTT) |
| [NewLife.NovaDb](https://github.com/NewLifeX/NewLife.NovaDb) | C# 製ハイブリッドデータベース:組み込み/ネットワークの両モード、リレーショナル、時系列、メッセージキュー、KV を 1 つに。 | [](https://www.nuget.org/packages/NewLife.NovaDb) |
| [NewLife.MySql](https://github.com/NewLifeX/NewLife.MySql) | NewLife データスタック上に構築された MySql ドライバーとヘルパー層。 | [](https://www.nuget.org/packages/NewLife.MySql) |
| **Web、AI、分散** | | |
| [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | 高速管理プラットフォームフレームワーク:権限、SSO、OAuth サーバー、CRUD スキャフォールディング。 | [](https://www.nuget.org/packages/NewLife.Cube) |
| [Stardust](https://github.com/NewLifeX/Stardust) | 分散サービスプラットフォーム:ノード管理、APM、構成センター、登録センター、リリースセンター。 | [](https://www.nuget.org/packages/NewLife.Stardust) |
| [AntJob](https://github.com/NewLifeX/AntJob) | シャーディング、リトライ、バックフィルに対応した分散タスクとリアルタイムデータのスケジューリングプラットフォーム。 | [](https://www.nuget.org/packages/NewLife.AntJob) |
| [NewLife.AI](https://github.com/NewLifeX/NewLife.AI) | 46 社の LLM プロバイダーに統一接続するクライアントと、すぐに使える Web チャットアプリ ChatAI。 | [](https://www.nuget.org/packages/NewLife.AI) |
| **産業と IoT** | | |
| [NewLife.IoT](https://github.com/NewLifeX/NewLife.IoT) | プロトコル契約とデバイス抽象を定義する IoT 標準ライブラリ。 | [](https://www.nuget.org/packages/NewLife.IoT) |
| [NewLife.Modbus](https://github.com/NewLifeX/NewLife.Modbus) | NewLife.IoT 上に実装された Modbus TCP/RTU/ASCII。 | [](https://www.nuget.org/packages/NewLife.Modbus) |
| [NewLife.Siemens](https://github.com/NewLifeX/NewLife.Siemens) | NewLife.IoT 上に実装されたシーメンス PLC プロトコル。 | [](https://www.nuget.org/packages/NewLife.Siemens) |
| [NewLife.Omron](https://github.com/NewLifeX/NewLife.Omron) | NewLife.IoT 上に実装されたオムロン PLC プロトコル。 | [](https://www.nuget.org/packages/NewLife.Omron) |
| [NewLife.Melsec](https://github.com/NewLifeX/NewLife.Melsec) | NewLife.IoT 上に実装された三菱 Melsec PLC プロトコル。 | [](https://www.nuget.org/packages/NewLife.Melsec) |
| [NewLife.OPC](https://github.com/NewLifeX/NewLife.OPC) | 産業データアクセス向けの OPC クライアント。 | — |
| [NewLife.BACnet](https://github.com/NewLifeX/NewLife.BACnet) | BACnet ビル管理プロトコルスタック。 | [](https://www.nuget.org/packages/NewLife.BACnet) |
| [ZeroIoT](https://github.com/NewLifeX/ZeroIoT) | ゲートウェイとデバイス管理を備えた軽量なオープンソース IoT プラットフォーム。 | — |
| **車載テレマティクス** | | |
| [NewLife.JT808](https://github.com/NewLifeX/NewLife.JT808) | JT/T 808 車両位置情報プロトコル:70 以上のメッセージボディ、2011/2013/2019 に対応。 | [](https://www.nuget.org/packages/NewLife.JT808) |
| [NewLife.JT809](https://github.com/NewLifeX/NewLife.JT809) | 運輸管理部門向けの JT/T 809 プラットフォーム間プロトコル。 | [](https://www.nuget.org/packages/NewLife.JT809) |
| [NewLife.JT1078](https://github.com/NewLifeX/NewLife.JT1078) | JT/T 1078 車載ビデオ:RTP 解析、FLV/fMP4 リマックス、ライブ配信。 | [](https://www.nuget.org/packages/NewLife.JT1078) |
| **ドメインコンポーネント** | | |
| [NewLife.Office](https://github.com/NewLifeX/NewLife.Office) | Excel、Word、PPT、PDF など 15 以上のドキュメント形式を 1 パッケージで。 | [](https://www.nuget.org/packages/NewLife.Office) |
| [NewLife.Audio](https://github.com/NewLifeX/NewLife.Audio) | クロスプラットフォーム音声:コーデック、デバイス IO、DSP、コンテナ、ストリーミング。 | [](https://www.nuget.org/packages/NewLife.Audio) |
| [NewLife.Video](https://github.com/NewLifeX/NewLife.Video) | ビデオコーデック、コンテナ形式、フレーム処理、ストリーミング。 | [](https://www.nuget.org/packages/NewLife.Video) |
| [NewLife.Map](https://github.com/NewLifeX/NewLife.Map) | 百度地図、高徳地図、テンセント地図、天地図を統一インターフェイス化。ジオコーディングと座標変換に対応。 | [](https://www.nuget.org/packages/NewLife.Map) |
| [NewLife.IP](https://github.com/NewLifeX/NewLife.IP) | IPv4 位置情報:オフラインのメモリマップデータベースとオンライン API のフォールバック。 | [](https://www.nuget.org/packages/NewLife.IP) |
| **ツールと製品** | | |
| [CrazyCoder](https://github.com/NewLifeX/XCoder) | 開発者向けツールボックス:ネットワーク、シリアルポート、暗号化、正規表現、Modbus、MQTT。 | [](https://www.nuget.org/packages/NewLife.XCoder) |
| [GitCandy](https://github.com/NewLifeX/GitCandy) | セルフホスト型 Git ソースコード管理システム。 | — |
| [LuckyClover](https://github.com/NewLifeX/LuckyClover) | 古いホストから起動した際に対応する .NET ランタイムを自動インストールします。 | — |
> バッジは各プロジェクトの主要パッケージを示します。テーマ、拡張、サテライトパッケージは各 NuGet ページを参照してください。ここに記載していない 30 以上のパッケージ(FTP、LoRa、Office 拡張、各種プロトコルドライバーなど)は [NewLifeX 組織](https://github.com/NewLifeX) と [newlifex.com](https://newlifex.com) で公開しています。
---
## 新生命開発チーム
<img src="https://newlifex.com/logo.png" width="48" align="right" alt="NewLife" />
新生命チームは 2002 年に設立され、20 年以上にわたり .NET と IoT の技術エコシステムに注力し、100 近いオープンソースプロジェクトを主導し(うち 34 が主要プロジェクト)、電力、物流、医療、産業制御、インターネットなどの業界にソフトウェアとハードウェアを一体化したソリューションを提供しています。「学問に先後なし、達する者が師である」を信条としています。
オープンソースコンポーネントは NuGet で累計 <!--nuget-total:start-->6.48M<!--nuget-total:end--> 回ダウンロードされています(エコシステム全体、2026-10 時点)。
ウェブサイト:https://newlifex.com · オープンソース組織:https://github.com/NewLifeX
<details>
<summary>WeChat 公式アカウント:智能大石头(スキャンしてフォロー)</summary>

</details>
---
## ライセンス
MIT © NewLife。商用利用と二次開発を歓迎します。
|