EngineeringData深入剖析-结构篇
1. EngineeringData介绍
EngineeringData是针对工程建设过程的不同阶段所形成的工程资料或文件的编制、收集、整理等管理定制研发的软件产品,完全符合国家《建筑工程质量质量验收统一标准(GB50300-2002)》和各省市《建筑工程统一用表》要求。
2. 结构分析
2.1. 表示层
表示层为客户端提供对应用程序的访问。这一层是由CnToSoft. EngineeringData.sln 解决方案文件中的 Windows窗体应用程序项目实现的。表示层由 Windows窗体和代码隐藏文件组成。Windows窗体只是提供用户操作及界面排版,而代码隐藏文件实现各种控件的事件处理。
2.2. 数据接口层
数据接口层为表示层定义了一系列属性、方法和事件。这一层是由 CnToSoft. EngineeringData.sln 解决方案文件中的 CnToSoft.EngineeringData.IDal项目实现的。
2.3. 数据层
数据访问层为表示层不仅提供数据服务,以及各种业务规则和逻辑的实现。这一层是由 CnToSoft. EngineeringData.sln 解决方案文件中的 CnToSoft.EngineeringData.Dal项目实现的。
3. 设计思想
参考Martin Fowler的Domain Model中,我们可以清楚的把4个类分成三层架构来设计我们的系统。
1、 实体类层,在这里我们用DataSet来代替。
2、 DAO层,即数据操作的接口及实现类。
3、 业务逻辑层,即向表示层提供统一的服务调用。
因考虑到典型的EngineeringData这个项目,简单的CRUD操作占据了业务逻辑的绝大多数比例,因此把业务逻辑层合并到DAO层。这样做的优点是:避免了业务逻辑不得不大量封装DAO接口的问题,简化了软件架构设计,节省了大量的业务层代码量。这种方案的缺点是:把DAO接口方法和业务逻辑方法混合到了一起,显得职责不够单一化,软件分层结构不够清晰;
以下是EngineeringData的结构关系图:
4. 代码示例
表示层调用数据层
TreeNode node = treeView1.SelectedNode;
IEngineering engineeringDal = new EngineeringDal();
engineeringDal.RestoreRecycleNode(node.Name);
数据层接口定义
void RestoreRecycleNode(string nodeId);
数据层实现
public void RestoreRecycleNode(string nodeId)
{
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
{
try
{
connection.Open();
using (DbTransaction transaction = connection.BeginTransaction())
{
try
{
RestoreRecycleNode(nodeId, db, transaction);
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
}
}
finally
{
connection.Close();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述