114 lines
4.6 KiB
Markdown
114 lines
4.6 KiB
Markdown
# Sharp-Basic Framework
|
||
|
||
[](https://gitea.duyl328.org/jimmy/sharp-basic)
|
||
[](LICENSE)
|
||
[](https://dotnet.microsoft.com/)
|
||
|
||
一个基于 .NET 8 的现代化工业自动化与企业级应用开发套件,采用模块化架构设计,提供了从底层通信、基础设施到上层 UI 的完整解决方案。
|
||
|
||
## 📋 项目信息
|
||
|
||
- **版本**: 1.0.1
|
||
- **作者**: [duyl328](https://seyl.me/)
|
||
- **仓库**: [https://gitea.duyl328.org/jimmy/sharp-basic](https://gitea.duyl328.org/jimmy/sharp-basic)
|
||
- **许可证**: AGPL-3.0-or-later
|
||
|
||
## 🏗️ 架构概览
|
||
|
||
本项目包含以下核心模块,旨在实现高内聚、低耦合的开发体验:
|
||
|
||
### 🔌 核心基础设施
|
||
- **[Sharp.Common](Common/README.md)**: 基础工具库。提供轻量级 DI 容器 (`Global`)、函数式结果模式 (`Result<T>`)、以及丰富的扩展方法(String, DateTime, Encryption, Reflection)。
|
||
- **[Sharp.Config](Config/README.md)**: 强大的配置管理。支持 JSON/XML/INI/TOML 多源聚合、强类型绑定和数据注解验证。
|
||
- **[Sharp.Log](Log/README.md)**: 统一日志门面。基于 Serilog 封装,支持一行代码接入,提供结构化日志和文件滚动策略。
|
||
- **[Sharp.EventBus](EventBus/README.md)**: (开发中) 轻量级事件总线。
|
||
|
||
### 💾 数据与存储
|
||
- **[Sharp.Data](Data/README.md)**: 极简数据访问层。基于 EF Core,提供开箱即用的仓储模式、自动审计(创建人/时间)、软删除和分页支持。
|
||
- **[Sharp.Repository](Repository/README.md)**: 数据库集成模块。通过配置切换 SQL Server/MySQL/PostgreSQL/Sqlite,支持自动迁移。
|
||
|
||
### 🌐 网络与通信
|
||
- **[Sharp.NetServer](NetServer/README.md)**: 轻量级 Web 框架。基于 `HttpListener`,提供类似 ASP.NET Core 的 Controller/Route/Middleware 开发体验,适合嵌入式或桌面应用内嵌 Web 服务。
|
||
- **[Sharp.NetClient](NetClient/README.md)**: 强类型 HTTP 客户端。集成 Polly 重试策略、Bearer Token 认证和 multipart 上传。
|
||
- **[Sharp.Ports](Ports/README.md)**: 串口通信库。提供串口发现、连接管理、数据监听和诊断工具。
|
||
|
||
### 🏭 工业互联 (IIoT)
|
||
- **[Sharp.Plc](Plc/README.md)**: PLC 通信抽象层。定义了统一的读写、订阅接口。
|
||
- **[Sharp.Plc.Siemens](Plc.Siemens/README.md)**: 西门子驱动实现。支持 S7-200/300/400/1200/1500,内置智能批量读取优化算法(自动合并相邻地址请求)。
|
||
|
||
### 🖥️ 桌面应用 UI
|
||
- **[Sharp.Wpf](Wpf/README.md)**: WPF 基础库。提供 MVVM 基类、全局异常捕获、常用转换器、对话框服务和行为扩展。
|
||
- **[Sharp.Client](Client/README.md)**: 综合客户端示例。集成 PLC 监控、串口调试和用户登录功能的工业控制台应用。
|
||
- **[Sharp.Server](Server/README.md)**: 服务器控制台示例。展示了如何在一个 WPF 应用中托管 NetServer Web 服务,并提供可视化管理界面。
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 环境要求
|
||
- .NET 8.0 SDK
|
||
- Visual Studio 2022 或 VS Code
|
||
|
||
### 构建项目
|
||
```bash
|
||
# 还原依赖
|
||
dotnet restore
|
||
|
||
# 编译解决方案
|
||
dotnet build Sharp.sln -c Debug
|
||
```
|
||
|
||
### 运行示例
|
||
|
||
**1. 运行 WPF 客户端:**
|
||
```bash
|
||
dotnet run --project Client/Client.csproj
|
||
```
|
||
|
||
**2. 运行嵌入式 Web 服务器:**
|
||
```bash
|
||
dotnet run --project Server/Server.csproj
|
||
```
|
||
|
||
**3. 运行 NetServer 纯控制台示例:**
|
||
```bash
|
||
dotnet run --project NetServer/Examples
|
||
```
|
||
|
||
## 🧪 测试
|
||
|
||
项目包含完整的单元测试,位于解决方案同级的 `test` 目录中。
|
||
|
||
```bash
|
||
# 运行所有测试
|
||
dotnet test Sharp.sln
|
||
```
|
||
|
||
## 🤝 贡献指南
|
||
欢迎提交 Pull Request 或 Issue。请确保:
|
||
1. 代码风格符合 .NET 规范。
|
||
2. 新增功能包含对应的单元测试。
|
||
3. 提交信息简洁明了。
|
||
|
||
## 📄 许可证
|
||
|
||
本项目采用 [GNU Affero General Public License v3.0 或更高版本](LICENSE) (AGPL-3.0-or-later) 开源协议。
|
||
|
||
**关键要求**:
|
||
- ✅ 可以自由使用、修改和分发
|
||
- ✅ 必须保持开源(包括网络服务)
|
||
- ✅ 修改后必须使用相同许可证
|
||
- ⚠️ **网络服务条款**:如果您修改本软件并通过网络提供服务(如 Web API),必须向用户提供修改后的源代码
|
||
|
||
如需商业许可或有疑问,请联系作者。
|
||
|
||
## 👤 作者
|
||
|
||
**duyl328**
|
||
- 网站: [https://seyl.me/](https://seyl.me/)
|
||
- 仓库: [https://gitea.duyl328.org/jimmy/sharp-basic](https://gitea.duyl328.org/jimmy/sharp-basic)
|
||
|
||
查看 [AUTHORS](AUTHORS) 文件了解完整贡献者列表。
|
||
|
||
---
|
||
|
||
Copyright © 2024-2025 duyl328. All rights reserved.
|