ppn-systems/nalix

GitHub: ppn-systems/nalix

Nalix 是基于 .NET 10 的模块化高性能 TCP/UDP 网络框架,提供零分配热路径、内置加密和可插拔协议栈,用于构建低延迟、高安全的实时服务端应用。

Stars: 37 | Forks: 12

Nalix Banner Claude Code mascot jumping

.NET License NuGet Downloads

Issues PRs Repo Size Commit Activity

文档 · 示例 · 基准测试 · 贡献

## 📖 关于 **Nalix** 是一个模块化、高性能的 .NET 10 网络框架。它提供了构建实时服务器应用的完整技术栈——从底层传输 (TCP/UDP) 到 middleware 管道、packet 路由和 client SDK——重点关注零分配热路径、可插拔协议和企业级安全性。 ## 🛠️ 构建状态 | 平台 | 状态 | | :--- | :--- | | ![Linux](https://badgen.net/badge/icon/Ubuntu%20Linux%2022.04%20x64?icon=terminal&label&color=orange) | [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5fde8cb3e6070539.svg)](https://github.com/ppn-systems/Nalix/actions/workflows/ci-linux.yml) | | ![Windows](https://badgen.net/badge/icon/Windows,.NET%2010?icon=windows&label&list=1) | [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/65e75bb03d070540.svg)](https://github.com/ppn-systems/Nalix/actions/workflows/ci-windows.yml) | ## ✨ 特性 | 类别 | 亮点 | | :--- | :--- | | 🖥️ **跨平台** | 支持 .NET 10+,可在 Windows、Linux 和 macOS 上运行。 | | ⚡ **高性能** | 零分配序列化、分片感知调度和缓冲池,支持数千个并发连接。 | | 🔐 **安全第一** | AEAD 加密 (ChaCha20-Poly1305),支持服务器身份固定的 Static-Ephemeral X25519 (Noise Protocol),以及零 RTT 会话恢复。 | | 🔌 **可插拔协议** | 无需修改核心逻辑即可替换网络、序列化或安全协议。 | | 🛤️ **Middleware 管道** | 内置身份验证、速率限制、流量整形和审计日志——也支持自定义编写。 | | 📡 **实时更新** | 即时消息传递、状态同步和实时事件广播。 | | 🛠️ **可扩展** | 基于属性的 packet 路由、自动发现的 controller 以及流畅的 builder API。 | | 🧩 **SOLID 与 DDD** | 遵循 SOLID 原则和领域驱动设计模式的整洁架构。 | | 💻 **现代 C#** | 利用 C# 14 特性——`Span`、`ref struct`、模式匹配等。 | ## 🔧 要求 | 需求 | 版本 | | :--- | :--- | | .NET SDK | [10.0+](https://dotnet.microsoft.com/download/dotnet/10.0) | | C# 语言 | 14+ | | IDE | [Visual Studio 2026](https://visualstudio.microsoft.com/downloads/) / [VS Code](https://code.visualstudio.com/) / [Rider](https://www.jetbrains.com/rider/) | ## 💻 技术

Technologies

- **语言**: 基于 .NET 10 的 C# 14 - **测试**: xUnit + BenchmarkDotNet - **CI/CD**: GitHub Actions (Linux 和 Windows) - **打包**: NuGet ## 📈 基准测试 ### 环境 - CPU: 13th Gen Intel Core i7-13620H (10C/16T) - Runtime: .NET `10.0.5` (X64 RyuJIT, Server GC) - SDK: .NET SDK `10.0.201` - 作业配置: `IterationCount=15`, `LaunchCount=3`, `WarmupCount=10`, `RunStrategy=Throughput` ### 🔒 信封加密 | 方法 | 负载 (B) | 算法 | 平均值 | 分配内存 | | :--- | :---: | :---: | ---: | ---: | | Encrypt | 128 | SALSA20 | 356 ns | — | | Decrypt | 128 | SALSA20 | 281 ns | 48 B | | Encrypt | 8192 | CHACHA20_POLY1305 | 48,649 ns | — | | Decrypt | 8192 | CHACHA20_POLY1305 | 26,153 ns | 48 B | ### 🏎️ X25519 ECC | 方法 | 密钥 | 平均值 | 分配内存 | | :--- | :---: | ---: | ---: | | GenerateKeyPair (CSPRNG + 标量乘法) | 1 | 65.36 μs | 112 B | | GenerateKeyFromPrivateKey (仅标量) | 1 | 67.35 μs | 112 B | | Agreement (共享密钥) | 1 | 66.59 μs | 56 B | ### 🔄 序列化 | 方法 | 元素数量 | 平均值 | 分配内存 | | :--- | ---: | ---: | ---: | | LiteSerializer Serialize | 16 | 148.4 | 152 B | | LiteSerializer Serialize | 128 | 298.2 | 600 B | | LiteSerializer Deserialize | 16 | 165.0 | 392 B | | LiteSerializer Deserialize | 1024 | 1,048.9 | 4,424 B | | MessagePack Serialize | 128 | 262.0 | 240 B | | MessagePack Deserialize | 128 | 851.4 | 840 B | | System.Text.Json Serialize | 128 | 1,266.8 | 856 B | | System.Text.Json Deserialize | 128 | 3,695.8 | 2,584 B | ## 📦 NuGet 包 Nalix 由多个模块化包组成——只需安装您需要的部分。 ### 🏗️ 基础层 | 包 | 描述 | | :--- | :--- | | **[Nalix.Common](src/Nalix.Common)** | Nalix 生态的基础抽象、枚举和共享契约。 | | **[Nalix.Framework](src/Nalix.Framework)** | 高性能核心:密码学、身份标识、DI、序列化和任务编排。 | | **[Nalix.Runtime](src/Nalix.Runtime)** | packet 调度、middleware 管道、保护原语和限流。 | ### 📡 网络与托管 | 包 | 描述 | | :--- | :--- | | **[Nalix.Network](src/Nalix.Network)** | 高性能 TCP/UDP 传输、连接管理和会话持久化。 | | **[Nalix.Network.Hosting](src/Nalix.Network.Hosting)** | 用于快速引导的 Microsoft 风格 host 和 builder API。 | ### 🛠️ 实用程序与工具 | 包 | 描述 | | :--- | :--- | | **[Nalix.Logging](src/Nalix.Logging)** | 具有可插拔 sink 和高吞吐量批处理的异步日志记录。 | | **[Nalix.SDK](src/Nalix.SDK)** | 客户端 SDK:传输会话、请求/响应模式和加密。 | | **[Nalix.Analyzers](src/Nalix.Analyzers)** | 用于强制执行 Nalix 最佳实践的 Roslyn 分析器和代码修复。 | ## 🚀 快速入门 在几分钟内构建一个高性能的网络应用程序: ``` using Nalix.Network.Hosting; // Initialize and configure the application host using var host = NetworkApplication.CreateBuilder() .AddTcp() .AddHandler() .Configure(opt => opt.Port = 8080) .Build(); // Run the server await host.RunAsync(); ``` ## 📦 安装 ``` # 核心服务器设置 dotnet add package Nalix.Network.Hosting # 可选:structured logging dotnet add package Nalix.Logging # 可选:客户端 SDK dotnet add package Nalix.SDK # 可选:Roslyn analyzers dotnet add package Nalix.Analyzers ``` ## 🏗️ 架构概览

Nalix Architecture

## 🛠️ 贡献 请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解开发工作流、提交约定和 Pull Request 指南。请遵循我们的[行为准则](CODE_OF_CONDUCT.md),并在提交 PR 时附上相应的文档和测试。 ## 🛡️ 安全 请查阅我们的[安全策略](SECURITY.md)以了解支持的版本和漏洞报告程序。 ## 📜 许可证 Nalix 版权所有 © PhcNguyen —— 基于 [Apache License, Version 2.0](http://apache.org/licenses/LICENSE-2.0.html) 提供。 ## 📬 联系方式 如有问题、建议或需要支持,请在 [GitHub](https://github.com/ppn-systems/Nalix/issues) 上提出 issue,或通过 [ppn.system@gmail.com](mailto:ppn.system@gmail.com) 联系维护者。

Give a ⭐️ if this project helped you! Footer

Nalix divider
标签:IP 地址批量处理, .NET 10, NuGet, Socket编程, TCP, UDP, 中间件, 低延迟, 分布式系统, 响应大小分析, 实时通信, 开源框架, 持续集成, 服务端开发, 消息传递, 游戏服务器, 网络协议栈, 网络框架, 网络通信, 请求拦截