【三层】大神与菜鸟的区别

     经过几天的奋战,终于对三层的概念有了大概的了解,不免有些小激动!因为过了三层即将来临的就是机房收费重构了。从软件工程开始,UML、C#、设计模式、VB.NET,再到现在的三层,都是在为机房收费的重构做准备。。俗话说,光说不练假把式!有了一肚子墨水却写不出好文章,那就成了书呆子啦。。

     步入正题,三层学完,看看我的收获吧!


     一、设计分层的原则

     1、逻辑分组。

     例如,对用户界面,业务逻辑和数据访问组建应该使用不同的层。例如,A层可以访问B层,但B层不能访问A 层。

     2、高内聚、低耦合。

     如业务层组建仅应提供与业务逻辑相关的操作,而不是提供其他操作。

     3、考虑物理边界。

     在设计的每一个层接口时,如果通信扩大了物理边界,使用基于消息操作;否则使用基于对象操作。

     4、尽量使用Interface定义接口

     这将允许你创建该接口的不同实现,提高可测性。

     5、实现基于消息的接口

     对于Web应用程序,在表示层和业务逻辑层之间实现基于消息的接口是一个好主意,即使这两层没有跨越物理边界。基于消息的接口更适合于无状态的Web操作。


     二、定义

     1、表示层(UI):展现给用户的界面,即用户在使用一个系统的时候他的所见所得。   

     2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。   

     3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

  

     三、作用

     表示层:

     用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

     业务逻辑层:

     1、对数据层的操作,对数据业务逻辑处理。

     如果说数据层是积木,那逻辑层就是对这些积木的搭建。它是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计。

     2、它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。

     层与层之间是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言,是没有任何影响的。所以,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。

     依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。  

     数据访问层:

     实现对数据表的Select,Insert,Update,Delete的操作。

     如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。

   

     四、调用

     微软的DNA架构定义了三个层:UI、BLL、DAL。具体又分为:界面外观层、界面规则层、业务接口层、业务逻辑层、实体层、数据访问层、数据存储层共七层。其具体的调用如图所示:

 

     五、优缺点

     优点

     整体上实现了高内聚、低耦合的原则(面向对象)

     1、可维护

     2、可复用

     3、可扩展

     4、灵活性好

     缺点

     1、降低了系统的性能。

     这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。   

     2、导致级联的修改。

     这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。   

     3、增加了开发成本。

 

     六、与MVC的区别

      定义

     MVC也是一种架构设计,在《大话设计模式》中有提到过。MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。

     Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。

     View层用于与用户的交互,通常用JSP来实现。

     Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

 

     VS

     同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。   

     在三层架构中没有定义Controller的概念;而MVC没有把业务的逻辑和数据的访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。

     当然,在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与数据访问组成的。

 

     小结

     一个好的分层式结构,可以使得开发人员的分工更加明确。一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并发。虽然三层架构仍有不可避免的缺陷,但是软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。通过对三层的学习,对软件体系结构又有了更深入的了解。

     以上所写,就是大神与菜鸟的区别!这句话起到辉映标题的作用。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值