读书人

初识三层架构…为何要分层

发布时间: 2013-01-20 10:22:41 作者: rapoo

初识三层架构……为什么要分层?

随着对三层分层设计的学习(网上搜集资料、小demo的实现),对分层逐步有个一定的了解,起码别人问起来不会像以前那样,啥也不知道要好的多啦,继续积累ing,下面是自己学习的一些学习笔记

基本概念

三层架构通常意义上的三层是:表现层(UI)、业务逻辑层(BLL)、数据访问层—AL)。

三层不是一定得分三层,我们可以根据项目的大小、复杂程度来多分一点层次也是不可厚非的,三层、四层、五层等要根据实际项目来抉择。

初识三层架构…为何要分层

为什么要分层?

解耦

上一层依赖于下一层,如果测试下一层没有问题,那么问题就只有可能发现在本层了,便于发现和改正BUG。体现了“高内聚,低耦合”的思想。

复杂问题简单化

各个层次分工明确,将一个复杂问题简单拆分了。

便于系统维护与升级

各层间通过接口解耦,接口与实现分离,从而可以非常简单的替换掉实现,或者实际实现等。

逻辑复用(代码复用)和劳动成本的减少

例如我们现在常用的是SQL数据库,如果我们要变为Orcel数据库的话,只要数据访问层接口不变,我们可以很轻松的实现对不同数据库的实现。

团队合作开发,提高我们的工作效率

只要各层的接口在开发前规定好,那么各层开一独立开发,进行维护等等。

我们以前不分层的话,团队中每个人都需要从业务的需要分析到具体实现都要独自完成,这样的敝处:项目开发过程中对每个人的技术能力要求很高,设计的面也很广,有时也增加了开发人员的压力,最后的代码的测试、维护等等工作都会增加很多麻烦,但是多层次开发是可以解决这些问题的,分工合作、规范代码,我们可以分为需求人员、界面设计人员、代码编码人员、数据库设计人员,分工明确,都各负其职的负责好自己的任务就好,应为都流出了接口,到时之间实现不同接口的实现即可,对于人员的分配,技术强点的可以负责重要的部门的开发工作,对于简单的工作(重复性)安排新手来完成,大大的提高了我们的开发效率。

代码规范

对于每次的代码规范我们都实现制定好,制定好固定的语言开发的风格。

方面部署

将各层开发成组件,开一独立部署(现在还没有接触)。

代码的复用和劳动成本的减少

分层的根本在于代码的复用和劳动成本的减少。分层的最理想化的结果是实现层与层之间的互不依赖的内部实现,所谓的即插即用!

为了管理和维护

使软件开发有条理有秩序,一目了然,让非IT人员也能看得懂软件的框架。

分层注意的问题

更加注意的问题是:分层不是分的越多越好,过多的分层限制了开发人员与客户对系统的理解能力,限制了客户与开发人员的交流。并且会在性能、复杂性等难度上带来不良影响(并非全是),分层越多的话,可靠性有时也是不稳定; 项目开发中实在是要具体分析,盲目套用耦合不降反升,效率不高反低,维护不便反繁。

分层不是目的,是软件发展的产物和毕竟之路。层化是把软件横向切了几刀,模块化是把软件纵向切了几刀。

分层最大的好处就是分布式系统。但是一般的大中型项目是没有必要分层的。

我们也要时刻谨记:不能盲目分层,不应分层而分层不应模式而模式。这是很重要的。不然只能增加开发的负担(在今后的实践中更好的体会)。

10楼yingjiebohe昨天 21:10
挺好,理论写的很清晰。
Re: lishehe昨天 22:27
回复yingjiebohen结合实践练习ing
9楼LX_PEANUT昨天 13:56
赚积分
8楼yefighter昨天 13:50
写的 不错
Re: lishehe昨天 13:50
回复yefightern共同学习
7楼dyx1024昨天 13:49
个人觉得概念很好理解,关键是要搞懂如何抽象各层,以及层间交互接口如何设计。
Re: lishehe昨天 13:50
回复dyx1024n嗯,在思考这些问题……今后的实践中在深深体会
6楼hellolonewolf昨天 13:48
呵呵
5楼yihuayanwuqing昨天 11:25
嗯,还行
Re: lishehe昨天 11:26
回复yihuayanwuqingn继续努力ing
4楼liutengteng130前天 08:30
学习了,还是感觉有点抽象啊。
Re: lishehe前天 09:45
回复liutengteng130n结合实例会好的了,加油哈
3楼fengjin69前天 08:30
写的很清晰,解释很到位
Re: lishehe前天 08:30
回复fengjin69n实践的有点少,期待后期的实践哈,到时再总结提高
2楼han_yankun2009前天 23:12
学习啦
1楼qianzhaotu前天 12:27
mark
Re: lishehe前天 21:17
回复qianzhaotun呵呵

读书人网 >编程

热点推荐