动软Codematic生成SQL代码与CodeSmith生成NHibernate代码区别

最明显的比较就是动软生成的三层是基于数据库,而CodeSmith是基于NHibernate

1.动软三层架构

  刚开发ASP.Net应用时,使用动软自动生成的三层架构,很适合新手,所有注释都是中文,用起来方便。就是改动起来麻烦。比如要加一个查询数据的方法,先在DAL层添加接口方法,再到SQLServerDAL层添加实现代码,再到BLL层添加一个包装方法。向某个表里添加一个字段,就得重新生成一遍,要不然就自己一层一层改。

 IDAL层,可以由OracleDAL或DB2DAL来实现,目的是屏蔽数据操作的细节。BLL层是有必要的,封装业务处理逻辑。上图展示了数据访问层和业务逻辑层,表示层就是aspx页面了,调用BLL取得数据,然后展示给用户,很多时候会用GridView显示数据。

  在开发时,发现BLL层的两个功能:处理业务逻辑和显示数据,可以分离开来。动软给数据库中的每个表都生成一个BLL层的类,而有的表并不对应具体的业务逻辑(比如公司信息表,个人信息表),有的表需要混合其他表来完成业务逻辑(比如处理网站登陆的表Admin,需要结合用户表,角色表等)。这是可以改进的。对那些只需要提供数据、并不要处理业务逻辑的类(如用户表等),统一交给一个的类来管理,给一个表名(最后用视图封装)和查询条件,那个类就返回相应的数据,这是容易实现的。而把业务逻辑的类抽象出来。

2.Nhibernate三层结构

  Nhibernate作为一种对象关系映射框架,以面向对象的方式来操作数据库,简单方便。以下是项目中使用的“Nhibernate三层结构”:

有NHibernate支持,每个Model层的实体类可以封装数据操作方法(如Save,Update等),BLL层可以方便调用。事实上,BLL大多涉及到单个对象的操作(新增或更新、删除),这个NHibernate的强项,而且能以面向对象的方式很好地配合业务逻辑的实现。

  DataViewer是从原来动软三层架构里的BLL层分离出来的,负责给前台页面提供数据。应该归到表示层。这样,层次就清晰多了。BLL只负责处理业务逻辑,不提供前台展示的数据。或者说BLL层负责修改后台的数据库,而DataViewer不会修改数据库,只负责读数据库,向前台输出组合查询、分页后的数据。

  DataViewer不使用NHibernate的HQL,原因是HQL可能会导致效率的低下,使用原来的SQL查询方式,不用学习新的东西,还能做一些查询优化。DataViewer最好是操作视图,不操作具体的表,方便修改。

原文地址:https://www.cnblogs.com/tweet/p/1665703.html