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

文档 · 示例 · 基准测试 · 贡献
## 📖 关于
**Nalix** 是一个模块化、高性能的 .NET 10 网络框架。它提供了构建实时服务器应用的完整技术栈——从底层传输 (TCP/UDP) 到 middleware 管道、packet 路由和 client SDK——重点关注零分配热路径、可插拔协议和企业级安全性。
## 🛠️ 构建状态
| 平台 | 状态 |
| :--- | :--- |
|  | [](https://github.com/ppn-systems/Nalix/actions/workflows/ci-linux.yml) |
|  | [](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/) |
## 💻 技术
- **语言**: 基于 .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
```
## 🏗️ 架构概览
## 🛠️ 贡献
请阅读 [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!
标签:IP 地址批量处理, .NET 10, NuGet, Socket编程, TCP, UDP, 中间件, 低延迟, 分布式系统, 响应大小分析, 实时通信, 开源框架, 持续集成, 服务端开发, 消息传递, 游戏服务器, 网络协议栈, 网络框架, 网络通信, 请求拦截