传统三层架构及其面临的挑战

随着面向对象分析、面向对象设计、面向对象原则、设计模式、企业架构模式等理念以及方法论的不断发展,从为用户提供功能以及有效组织软件结构的角度考虑,系统中不同职责的部分逐渐被定义在不同的层次,每一层负责的部分更趋向于具体化、细致化,于是软件的三层架构逐渐出现了。三层架构通常包括表示层、业务逻辑层以及数据访问层。

三层架构的出现解决了系统之间调用复杂、职责不清的问题,也有效降低了层与层之间的依赖关系,成为软件架构的经典设计模式之一。

虽然三层架构将系统在逻辑上分层了三层,但它并不是物理意义上的分层。也就是说对于不同层的代码而言,经历编译、打包、部署之后,所有的代码最终还是运行在同一个进程之中。

对于这种功能集中、代码中心化、一个发布包、部署后运行在同一个进程中应用程序,我们称之为单块架构应用。 随着业务的增加,需求功能的迭代,单块架构已经很难满足业务快速变化的需要。一方面,代码的可维护、扩展性、灵活性在降低;另一方面,系统的修改成本、构建以及维护成本在增加,因此单块架构的改造与重构势在必行。


1、什么是三层架构

三层架构通常包括表示层、业务逻辑层以及数据访问层

表示层

表示层通常指当用户使用应用程序时,看见的、听见的、输入的或者交互的部分。比如有可能是信息的显示、音乐的播放、可以输入的文本框、单选按钮以及可以点击的按钮等。通过这些元素,用户可以跟软件进行交互并获取期望的结果。目前用户接口大部分情况下是WEB方式,当然也可能是桌面软件的形式。

业务逻辑层

业务逻辑部分是根据用户输入的信息,进行逻辑计算或者业务处理,业务逻辑层主要是程序对业务逻辑的处理,以及业务流程的操作,它是大部分软件系统区别于其他系统的核心。

数据访问层
用户同应用程序交互时,会产生一些数据,这类数据需要通过某种机制被有效的保存下来,并在将来能够被重复使用,或者提供给其他系统。这种机制或者方法是数据访问层最关注的部分。也就是说,它关注的是应用程序如何有效的将数据存储在数据库、文件系统或者其他存储介质中。需要注意的是它关注的是原始数据的操作,而非原始数据存储介质本身。


2、三层架构的优势

三层架构的出现,一方面是为了解决应用程序中代码之间调用复杂,代码职责不清的问题;通过各层之间定义接口的形式,并将接口与实现分离,可以很容易的用不同的实现来替换原有的实现,从而有效的降低层与层之间的依赖关系。这种方式不仅有利于整个团队理解整个应用架构,降低后期维护成本,同时也有利于制定整个应用程序架构的标准。

另一方面三层架构的出现从某种程度上解决了企业内部如果有效的根据技能调配技术人员,提高生产效率的问题,在大环境下,有效的分层能使不同职责的人各司其职,聚焦于个人专业技能的发展与培养上。

三层架构的出现不仅标准化了复杂系统的逻辑划分,更帮助企业解决如果有效的形成技术人员组织机构的问题,因此在很长的一段时间内,它一直是软件架构设计的经典模式之一。


3、面临的挑战

随着互联网行业的飞速发展,随着业务不断的扩张,需求不断的增加以及用户量的不断增加,单块架构模式的优势已逐渐无法适应互联网时代的快速变化,面临着越来越多的挑战。一方面随着用户量的不断增加,如何为用户提供可靠的服务,如何有效的处理用户量增多后导致的并发请求增多和响应慢的问题,以及如何有效的解决用户量增多后带来的大量数据的问题。另一方面随着公司/组织不断扩张,需求不断增加,越来越多的人加入到团队中去,代码库也急剧膨胀,在这种情况下,单块架构的可维护性、灵活性在降低,而测试成本、构建成本以及维护成本却在显著增加。


小结

综上所述,随着项目或者产品的不断扩大,单块架构应用的改造与重构就势在必行了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值