大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们在开发软件的时候,为了能够更有效的进行系统架构,一般会使用分层架构的形式来进行搭建。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了平南免费建站欢迎大家使用!
下面湖南电脑培训就一起来了解一下关于分层架构的优缺点都有哪些。
什么是分层架构?分层架构是将软件模块按照水平切分的方式分成多个层。
一个系统由多层组成,每层由多个模块组成。
那么到底分几层合适?我认为根据不同的复杂度分成不同的层次,基本的是分层架构是三层,即表现层,领域层和数据持久层。
而《领域驱动设计》EricEvans建议分四层分别是表现层,应用层、领域层和基础层,业务逻辑在领域层,基础层比持久层的范围更大,不仅可以提供持久层服务,还可以提供缓存等服务。
四层中的应用层是对三层架构中领域层进行进一步拆分。
但是无论怎么分层,业务逻辑永远在领域层。
分层架构的好处分层架构的目的是通过关注点分离来降低系统的复杂度,同时满足单一职责、高内聚、低耦合、提高可复用性和降低维护成本。
单一职责:每一层只负责一个职责,职责边界清晰,如持久层只负责数据查询和存储,领域层只负责处理业务逻辑。
高内聚:分层是把相同的职责放在同一个层中,所有业务逻辑内聚在领域层。
这样做有什么好处呢?试想一下假如业务逻辑分散在每一层,修改功能需要去各层修改,测试业务逻辑需要测试所有层的代码,这样增加了整个软件的复杂度和测试难度。
低耦合:依赖关系非常简单,上层只能依赖于下层,没有循环依赖。
可复用:某项能力可以复用给多个业务流程。
比如持久层提供按照还款状态查询信用卡的服务,既可以给申请信用卡做判断使用,也可以给展示未还款信用卡使用。
易维护:面对变更容易修改。
把所有对外接口都放在对外接口层,一旦外部依赖的接口被修改,只需要改这个层的代码即可。
以上这些既是分层的好处也是分层的原则,大家在分层时需要遵循以上原则,不恰当的分层会违背了分层架构的初衷。
分层架构的缺点分层架构也有几个缺点开发成本高:因为多层分别承担各自的职责,增加功能需要在多个层增加代码,这样难免会增加开发成本。
但是合理的能力抽象可以提高了复用性,又能降低开发成本。
性能略低:业务流需要经过多层代码的处理,性能会有所消耗。
可扩展性低:因为上下层之间存在耦合度,所有有些功能变化可能涉及到多层的修改。
建议 楼主了解下MVC
一般的项目大概分为4层
dao 就是数据操作层
一般放对数据库进行操作的方法,比如查找某条数据
biz 业务处理层
对用户的数据进行业务逻辑处理比如注册时,判断用户注册的用户名是否已存在,如果已存在返回用户错误信息,否则将用户注册的信息写入数据库
servlet 逻辑判断层
对页面的请求响应数据进行逻辑处理,如封装等
jsp 表现层
将程序处理的最终结果显示给用户
他们之间的联系就是,比如注册:
用户在jsp页面进行表单填写,点击提交到一个servlet,servlet将注册信息封装成javaBean交给biz层处理,这时候biz层对javaBean解封将用户注册的用户名提取出来调用dao层的checkUserName()进行判断该用户名是否已存在.如果存在返回一个信息给servlet告知用户该用户名已存在,请重新注册.如果该用户名不存在,说明可注册,biz再调用dao层的savaUser()方法将用户的注册信息写入数据库,返回servlet一个注册成功的信息,最后由servlet将这些处理的最终结果返回给jsp页面给用户.
建议楼主去多看看别人的项目,或者自己写些小项目这样在写程序的过程中能更贴切的理解这些过程存在的意义
总之,分层思想的存在是更方便的管理和维护
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。瑭锦TANJURD解释区分层次的目的即为了“高内聚,低耦合”的思想。1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
一般java都是三层架构 数据访问层(dao)、 业务逻辑层(biz 或者services) 、界面层(ui)。
领域中的分层模式(LAYERED ARCHITECTURE)
依次分为用户界面层,应用层,领域层,基础设施层 各层主要任务
用户界面层:想用户显示信息和解释用户指令。
应用层:定义软件要完成的任务,并指挥表达领域概念的对象来解决问题。应用层应尽量简单,不包含业务规则或知识,而只是为下一层中的领域对象协调任务,分配工作,屎他们相互合作。他没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度。
领域层(模型层) :负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现,但是反映业务情况的状态是由本曾控制并使用的。此层是软件的核心。
基础设施层: 为上面各层提供通用的技术能力,为应用层传递消息,为领域层提供持久化机制,为用户界面绘制屏幕组件,等等。基础设施层还能通过架构框架来支持四个层间的交互模式。
例子
为网上银行功能分层
关于系统架构和软件分层的概念我们在前几期的文章中曾经介绍过多次了。
今天,福建java课程就来详细了解一下,软件架构中的分层都有哪些类型。
希望大家通过对本文的阅读,能够对软件架构领域有更多的了解和认识。
经典的三层架构:1.基础层:dao,帮助类,IO读写,资源加载等一些基础设施,他们作为整个系统基础的模块可以组合成业务层和服务层2.业务层和服务层:典型的就是service,这里承载更多的是业务的实现,资源的组合调度,事务实现,等等,这里是整个系统核心的地方,下面整合底层dao以及事务,根据业务和场景灵活的把业务逻辑使用底层的基础单元拼接组合起来,上面为表现层提供具体的业务处理逻辑3.表现层:接受外部的请求,并把调用对应的service操作具体业务,把终结果反馈给调用者或是用户四层架构,在基础层基础之上还可以在分出一层:领域层,基础层还是提供基本的数据操作和IO与网络操作,不过领域层对基础层再来一次封装和整合,目的也是方便整合底层资源方便service层调用,简化业务层和基础层的复杂依赖静态业务对象:ViewObject:VO界面展示用到的数据对象DomainObject:DO领域层对象,一般可以简约的理解为javabean对象,从业务中抽取的基本模型类BussinessObject:BO业务对象一般也在service业务层,如果DO不能完全表达,可以使用BO获取更多信息的表达,并且还可以封装重用DO中的实体信息PersistantObject:PO持久存储对象,一般作用于dao层,和数据库实体对应DataTransferObject:DTO数据传递对象,用于封装参数,数据中转会,重构过程方法列表会用到动态处理对象:Controller控制器,Manager管理类,Service服务类,Repository,DAO数据源,Client客户端,Dispather转发器,Handler处理器,Interceptor拦截器Helper,Utils帮助类动态的配置文件与属性:一些经常用到的开关和阈值一定要写在配置文件中,或有配置中心可以下发,不要在程序中写死,而且要有对相应的刷新机制api接口,调用后强制刷新配置参数常用的比如:活动的开始结束日期业务中的大值,限制值等阈值外界的URI:文件上传地址,静态资源位置,等等.....等等一切可以借鉴Ioc理念抽取出来的配置变量