# LinkForge
**Repository Path**: linkforge/link-forge
## Basic Information
- **Project Name**: LinkForge
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-03-14
- **Last Updated**: 2026-03-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LinkForge
面向 `.NET` 的工业通讯库仓库,目标是沉淀一组可独立发布为 `NuGet` 的工业协议与传输组件。
## 🧱 当前结构
- `assets/branding`
品牌图标与 README 展示资源。
- `src/LinkForge.Abstractions`
统一通道契约与基础异常模型。
- `src/LinkForge.Transports.Tcp`
不依赖第三方库的 TCP 通道实现。
- `src/LinkForge.Modbus`
第一个协议闭环,当前提供 `Modbus TCP` 保持寄存器读取能力。
- `samples/LinkForge.Sample.ModbusTcp`
最小可运行调用示例。
## ✅ 当前能力
- `LinkForge.Transports.Tcp`
提供零第三方依赖的 TCP 通道实现,支持连接、发送、接收、超时控制。
- `LinkForge.Modbus`
当前已支持以下 `Modbus TCP` 功能码:
- `0x01` 读线圈
- `0x02` 读离散输入
- `0x03` 读保持寄存器
- `0x04` 读输入寄存器
- `0x05` 写单个线圈
- `0x06` 写单个寄存器
- `0x10` 写多个寄存器
- 协议层已包含:
- MBAP 头校验
- 事务标识符校验
- 单元标识符校验
- 异常响应转换为 `ModbusException`
- 响应超时与半包接收处理
## 🎯 设计原则
- `KISS`
先打通一个完整纵切面,不提前引入串口、重试、日志、连接池等复杂能力。
- `YAGNI`
只实现当前明确需要的公共契约、TCP 传输与 `Modbus TCP` 最小读能力。
- `DRY`
协议层只依赖 `IChannel`,后续 `UDP`、串口、网关通道都可以复用同一套协议处理代码。
- `SOLID`
传输层与协议层解耦,协议客户端不直接绑定 `TcpClient` 等具体实现。
## 📦 打包方式
```powershell
dotnet build "LinkForge.sln"
dotnet pack "LinkForge.sln" -c Release
```
生成的包默认输出到 `artifacts/packages`。
NuGet 包图标统一使用 `assets/branding/linkforge-icon.png`。
## 🧪 验证方式
```powershell
dotnet test "LinkForge.sln"
dotnet run --project "samples/LinkForge.Sample.ModbusTcp/LinkForge.Sample.ModbusTcp.csproj" -- --host 192.168.0.10 --port 502 --unit 1
```
也可以通过环境变量传参,例如:
```powershell
$env:LINKFORGE_MODBUS_HOST="192.168.0.10"
$env:LINKFORGE_MODBUS_PORT="502"
$env:LINKFORGE_MODBUS_UNIT_ID="1"
dotnet run --project "samples/LinkForge.Sample.ModbusTcp/LinkForge.Sample.ModbusTcp.csproj"
```
## 🚀 下一步
1. 补充回归验证工程,覆盖异常响应、断连、超时、半包与事务号不匹配场景。
2. 视协议规划新增 `LinkForge.Transports.Serial`,再扩展 `Modbus RTU`。
3. 完成正式发布前的许可证、仓库地址与发布说明元数据补齐。
4. 当抽象稳定后,再继续落地 `S7`、`MC`、`OPC UA` 等独立包。
## 📄 许可证
本仓库使用 `Apache License 2.0`,详见根目录 `LICENSE`。