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