zoukankan      html  css  js  c++  java
  • Nhibernate三层结构

    文简单比较了动软三层结构和“Nhibernate三层结构”。  

      (1)动软三层架构

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

     项目常用算法之Nhibernate三层结构

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

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

      (2)Nhibernate三层结构

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

    项目常用算法之Nhibernate三层结构

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

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

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

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/luluping/p/1587612.html
Copyright © 2011-2022 走看看