RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架
大石头 authored at 2022-08-10 13:26:19
26.81 KiB
NewLife.Remoting
# NewLife.Remoting — Единый фреймворк удалённого взаимодействия (RPC + HTTP + WebSocket + SRMP) ![GitHub License](https://img.shields.io/github/license/NewLifeX/NewLife.Remoting?logo=github) ![NuGet Downloads](https://img.shields.io/nuget/dt/NewLife.Remoting?logo=nuget) ![NuGet](https://img.shields.io/nuget/v/NewLife.Remoting?logo=nuget) ![NuGet prerelease](https://img.shields.io/nuget/vpre/NewLife.Remoting?label=dev%20nuget&logo=nuget) ![NuGet Downloads (Extensions)](https://img.shields.io/nuget/dt/NewLife.Remoting.Extensions?logo=nuget) ![NuGet (Extensions)](https://img.shields.io/nuget/v/NewLife.Remoting.Extensions?logo=nuget) ![NuGet prerelease (Extensions)](https://img.shields.io/nuget/vpre/NewLife.Remoting.Extensions?label=dev%20nuget&logo=nuget) [![NativeAOT](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/aot.yml/badge.svg?branch=master)](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/aot.yml) [![test](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/NewLifeX/NewLife.Remoting/actions/workflows/test.yml) <!-- metrics:start --> [![AOT smoke](https://img.shields.io/badge/AOT%20smoke-23%2F23-brightgreen?logo=dotnet)](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/AOT兼容性分析.md) [![TFM](https://img.shields.io/badge/TFM-7%20%28net45%20%E2%86%92%20net10.0%29-512BD4?logo=dotnet)](https://www.nuget.org/packages/NewLife.Remoting) [![locales](https://img.shields.io/badge/locales-31-2ea44f?logo=dotnet)](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/Doc/多语言本地化接入.md) <!-- metrics:end --> ![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20Android%20%7C%20iOS-blue) ![arch](https://img.shields.io/badge/arch-x64%20%7C%20arm64%20%7C%20loongarch64%20%7C%20riscv64%20%7C%20s390x-orange) [![contributors](https://img.shields.io/github/contributors/NewLifeX/NewLife.Remoting?logo=github)](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) | [日本語](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.ja.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.ko.md) | [العربية](/NewLife/NewLife.Remoting/Blob/v4.0.2026.1024/README.ar.md) <!-- lang:end --> NewLife.Remoting — единая инфраструктура удалённого взаимодействия стека NewLife, поставляемая двумя пакетами 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) | Архитектура сервера: сервисный слой, основные сценарии (вход/регистрация/выход/heartbeat/обновление/события/команды), жизненный цикл сессий, кластер | | [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--> проверенных сценариев (smoke <!--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) | Правила порядка, скрипты и CI-контроль для 11 языков README | --- ## Ключевые возможности | Возможность | Описание | |:---------|------| | **Ядро RPC** | Протокол SRMP, JSON/бинарные кодеки, конвейер запросов, клиент/сервер, управление кластером, метаданные, повторы, полностью асинхронный сервер, трассировка по TraceId | | **STRM-потоки** | Server-Streaming: `IAsyncEnumerable<T>` передаётся поэлементно через SRMP и SSE | | **CLNT-клиент** | Вход/heartbeat/обновление/команды/события в одном месте, автоматическое переключение WS/SSE | | **UPGD-обновление** | Поиск → загрузка → проверка → распаковка → замена → перезапуск | | **SRV-сервер** | ApiController/BaseController/BaseDeviceController, TokenService, IDeviceService; один и тот же протокол доступен через MVC и Minimal API (зеркальные реализации, закреплённые тестами) | | **CMD-команды** | SessionManager + широковещательная шина событий + каналы WS/SSE/Ping | | **L10N-локализация** | Сообщения времени выполнения используют английский как исходный текст; `Locales/*.yml` содержат встроенные таблицы для 31 языка (включая упрощённый и традиционный китайский), при отсутствии перевода — английский; без ResourceManager и сателлитных сборок | | **Поддержка AOT** | Постоянный анализ AOT для net8.0+ (0 предупреждений в основной библиотеке и Extensions) + собственный генератор кода (таблица диспетчеризации, потоковые насосы, сохранение сигнатур); NativeAOT проверен на <!--aot-scenarios:start-->23<!--aot-scenarios:end--> сценариях, 11 сценариях Minimal API и 6 сценариях устройств XCode (см. документ AOT §8) | ## Быстрый старт **Пять строк на сервере, пять на клиенте — 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 мкс | — | | Поддерживаемые платформы | net45 / net461 / netstandard2.0 / netstandard2.1 / net6.0 / net8.0 / net10.0 (в соответствии с NewLife.Core v12; NativeAOT с net8.0) | ## Обновление до v4 v4 соответствует NewLife.Core v12 и меняет сетевой уровень. Перед обновлением: - **Два порта**: основной порт обслуживает только SRMP; для HTTP явно задайте `HttpPort` (по умолчанию отключён). - **SRMP через WebSocket больше не поддерживается**: адреса `ws://`/`wss://` теперь вызывают `NotSupportedException`; используйте `tcp://`/`udp://` для SRMP и `http(s)://` для HTTP-вызовов. - **Собственные типы кодеков удалены**: `WsClient`, `HttpCodec`, `WebSocketClientCodec`, `WebSocketServerCodec` и методы кадров `HttpMessage` удалены; HTTP обрабатывает `HttpServer` из Core, а для пользовательского кадрирования реализуйте `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 | Распределённый кэш / очередь сообщений для общих сессий и fan-out | | Stardust | Регистрация узлов, центр конфигурации, APM, центр публикации | | AntJob | Планирование задач и распределённые вычисления через ClientBase | | NewLife.MQTT / Modbus / IoT | Сбор данных устройств и передача через Remoting | ## Участие и обратная связь Приветствуются: сообщения об ошибках, PR по производительности, новые кодеки, примеры контроллеров, документация и новые переводы. В issue указывайте: окружение, целевую платформу, минимальный пример и фрагмент журнала. --- ## Карта экосистемы NewLife — это многоуровневая экосистема независимо версионируемых open-source проектов. Карта ниже дословно используется во всех репозиториях NewLife; каждый проект ссылается на свой репозиторий и свой основной пакет NuGet. | Проект | Что делает | Загрузки | | --- | --- | --- | | **Базовый** | | | | [NewLife.Core](https://github.com/NewLifeX/X) | Логирование, конфигурация, кэширование, сеть, сериализация, планирование и APM-трассировка. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Core?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Core) | | [NewLife.XCode](https://github.com/NewLifeX/NewLife.XCode) | Промежуточное ПО данных: отдельные таблицы масштаба десятков миллиардов строк, автоматическое секционирование, разделение чтения и записи, более 10 баз данных. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.XCode?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.XCode) | | [NewLife.Net](https://github.com/NewLifeX/NewLife.Net) | Высокопроизводительная сетевая библиотека: 1,77M pps / 14,5 Гбит/с на машину (TCP 1KB, 2026-10), 4M долгоживущих TCP-соединений. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Net?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Net) | | [NewLife.Remoting](https://github.com/NewLifeX/NewLife.Remoting) | Протокольная связь и RPC-фреймворк для клиент-серверных приложений и IoT-устройств. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Remoting?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Remoting) | | [NewLife.Agent](https://github.com/NewLifeX/NewLife.Agent) | Устанавливает .NET-приложения как демоны ОС: службы Windows и systemd в Linux. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Agent?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Agent) | | [NewLife.Templates](https://github.com/NewLifeX/NewLife.Zero) | Шаблоны проектов `dotnet new` для консоли, web, API, службы, данных и IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Templates?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Templates) | | **Данные и обмен сообщениями** | | | | [NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis) | Клиент Redis с микросекундной задержкой, миллионами операций в секунду и встроенными очередями сообщений. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Redis?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Redis) | | [NewLife.RocketMQ](https://github.com/NewLifeX/NewLife.RocketMQ) | Полностью управляемый клиент RocketMQ для Apache RocketMQ и Alibaba Cloud Message Queue. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.RocketMQ?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.RocketMQ) | | [NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT) | Клиент и сервер MQTT, включая подключение к Alibaba Cloud IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.MQTT?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.MQTT) | | [NewLife.NovaDb](https://github.com/NewLifeX/NewLife.NovaDb) | Гибридная база данных на C#: встроенная или сетевая, реляционная, временных рядов, очередь сообщений и KV в одном. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.NovaDb?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.NovaDb) | | [NewLife.MySql](https://github.com/NewLifeX/NewLife.MySql) | Драйвер MySql и вспомогательный слой на основе стека данных NewLife. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.MySql?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.MySql) | | **Web, AI и распределённые системы** | | | | [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | Фреймворк быстрой разработки админ-платформ: права, SSO, сервер OAuth и CRUD-скаффолдинг. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Cube?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Cube) | | [Stardust](https://github.com/NewLifeX/Stardust) | Распределённая сервисная платформа: управление узлами, APM, центр конфигурации, реестр и центр публикации. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Stardust?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Stardust) | | [AntJob](https://github.com/NewLifeX/AntJob) | Распределённая платформа задач и планирования данных в реальном времени с секционированием, повторами и дозаполнением. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.AntJob?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.AntJob) | | [NewLife.AI](https://github.com/NewLifeX/NewLife.AI) | Единый клиент для 46 поставщиков LLM плюс ChatAI — готовое веб-приложение для чата. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.AI?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.AI) | | **Промышленность и IoT** | | | | [NewLife.IoT](https://github.com/NewLifeX/NewLife.IoT) | Стандартная библиотека IoT, определяющая контракты протоколов и абстракции устройств. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.IoT?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.IoT) | | [NewLife.Modbus](https://github.com/NewLifeX/NewLife.Modbus) | Реализация Modbus TCP/RTU/ASCII поверх NewLife.IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Modbus?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Modbus) | | [NewLife.Siemens](https://github.com/NewLifeX/NewLife.Siemens) | Протокол Siemens PLC поверх NewLife.IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Siemens?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Siemens) | | [NewLife.Omron](https://github.com/NewLifeX/NewLife.Omron) | Протокол Omron PLC поверх NewLife.IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Omron?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Omron) | | [NewLife.Melsec](https://github.com/NewLifeX/NewLife.Melsec) | Протокол Mitsubishi Melsec PLC поверх NewLife.IoT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Melsec?style=flat-square&logo=nuget&label=downloads)](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. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.BACnet?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.BACnet) | | [ZeroIoT](https://github.com/NewLifeX/ZeroIoT) | Лёгкая open-source платформа IoT с управлением шлюзами и устройствами. | — | | **Телематика транспорта** | | | | [NewLife.JT808](https://github.com/NewLifeX/NewLife.JT808) | Протокол позиционирования транспорта JT/T 808: более 70 типов сообщений, 2011/2013/2019. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.JT808?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.JT808) | | [NewLife.JT809](https://github.com/NewLifeX/NewLife.JT809) | Межплатформенный протокол JT/T 809 для органов управления транспортом. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.JT809?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.JT809) | | [NewLife.JT1078](https://github.com/NewLifeX/NewLife.JT1078) | Автомобильное видео JT/T 1078: разбор RTP, ремультиплексирование в FLV/fMP4 и прямая трансляция. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.JT1078?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.JT1078) | | **Прикладные компоненты** | | | | [NewLife.Office](https://github.com/NewLifeX/NewLife.Office) | Один пакет для Excel, Word, PPT, PDF и более 15 форматов документов. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Office?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Office) | | [NewLife.Audio](https://github.com/NewLifeX/NewLife.Audio) | Кроссплатформенное аудио: кодеки, ввод-вывод устройств, DSP, контейнеры и потоковая передача. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Audio?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Audio) | | [NewLife.Video](https://github.com/NewLifeX/NewLife.Video) | Видеокодеки, форматы контейнеров, обработка кадров и потоковая передача. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Video?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Video) | | [NewLife.Map](https://github.com/NewLifeX/NewLife.Map) | Единый интерфейс к Baidu, AMap, Tencent и Tianditu с геокодированием и преобразованием координат. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.Map?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.Map) | | [NewLife.IP](https://github.com/NewLifeX/NewLife.IP) | Геолокация IPv4 с офлайн-базой, отображаемой в память, и онлайн-API как резервом. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.IP?style=flat-square&logo=nuget&label=downloads)](https://www.nuget.org/packages/NewLife.IP) | | **Инструменты и продукты** | | | | [CrazyCoder](https://github.com/NewLifeX/XCoder) | Инструменты разработчика: сеть, последовательный порт, шифрование, регулярные выражения, Modbus и MQTT. | [![NuGet](https://img.shields.io/nuget/dt/NewLife.XCoder?style=flat-square&logo=nuget&label=downloads)](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" /> Команда NewLife основана в 2002 году и более двух десятилетий работает в экосистеме .NET и IoT, поддерживает около 100 проектов с открытым кодом (34 из них — основные) и предлагает интегрированные программно-аппаратные решения для энергетики, логистики, здравоохранения, промышленной автоматизации и интернет-отрасли. Мы следуем девизу «в учении нет старших — мастерство приносит уважение». Open-source компоненты скачали <!--nuget-total:start-->6.48M<!--nuget-total:end--> раз с NuGet (по всей экосистеме, по состоянию на 2026-10). Сайт: https://newlifex.com · Организация open source: https://github.com/NewLifeX <details> <summary>Официальный аккаунт WeChat: 智能大石头 (отсканируйте, чтобы подписаться)</summary> ![智能大石头](https://newlifex.com/stone.jpg) </details> --- ## Лицензия MIT © NewLife. Коммерческое использование и доработка приветствуются.