您的位置:首页 > 其它

EngineeringData深入剖析-结构篇

2011-10-17 21:46 246 查看

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();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: