# 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

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`。