程序员架构修炼:架构思维的动静分层与模式

分层

分层相对重要,架构在设计中要考虑分层,其核心仍然是资源+服务+应用的三大层,这样的分层仍然是SOA参考架构的核心思想。平台+应用更多地只是上面分层模式的一个变形。分层的目的是通过分层理清整个应用的构建过程,并保证了各层之间的独立设计和松耦合。

分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。

在严格分层架构中,某层只能与位于其直接下方的层发生耦合;在松散分层架构中,则允许某层与它的任意下方层发生耦合。

分层架构的好处是显而易见的。首先,层间松散的耦合关系使得我们可以专注于本层的设计,而不必关心其他层的设计,也不必担心自己的设计会影响其他层,对提高软件质量大有裨益。其次,分层架构使得程序结构清晰,升级和维护都变得十分容易,要更改某层的具体实现代码时,只要本层的接口保持稳定,对其他层就可以不必修改。即使本层的接口发生变化,也只影响相邻的上层,修改工作量小且错误可以控制,不会带来意外的风险。

要保持程序分层架构的优点,就必须坚持各层间的松散耦合关系。在设计程序时,应该先划分出可能的层次,以及此层次提供的接口和需要的接口。在设计某层时,应该尽量保持层间的隔离,仅使用下层提供的接口。

分层架构的优点如下。

◎ 开发人员可以只关注某一层。

◎ 可以很容易地用新的实现来替换原有层的实现。

◎ 可以降低层与层之间的依赖。

◎ 有利于标准化。

◎ 有利于各层逻辑的复用。分层架构的缺点如下。

◎ 因为增加了中间层,所以降低了系统的性能,不过可以通过缓存机制来改善。

◎ 可能会导致级联的修改。这种修改尤其体现在自上而下的方向,不过可以通过依赖倒置来改善。

模式

模式是所有思维模式里面的一个重点,架构模式是一个通用的、可重用的解决方案,架构设计中的模式匹配就是将最终的业务域问题匹配到对应的技术实现上,即根据业务需求来挑选最适合的技术,而不是用主流和最先进的技术去反推业务。

架构设计模式一般有分层模式、客户端-服务器模式、主从设备模式、管道-过滤器模式、代理模式、P2P 模式、事件总线模式、MVC 模式、黑板模式和解释器模式,接下来简单介绍这些模式。

分层模式

分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种:严格分层架构和松散分层架构。在严格分层架构中,其中一层只能与其直接下方的层发生耦合;在松散分层架构中,则允许某层与它的任意下方层发生耦合,并且要保持程序分层架构的优点,就必须坚持层间的松耦合关系。在设计程序时,应该先划分出可能的层次,以及此层次提供的接口和需要的接口。在分层设计时,尽量保持层间的隔离,上层调用下层服务只能通过接口来实现。四层架构、五层架构和六边形架构是领域驱动设计分层架构中比较经典的三种架构,下面分别对这3种架构进行讲解。

1.四层架构

四层架构的模式如下图所示。

程序员架构修炼:架构思维的动静分层与模式图4.5

对如上图所示的各层解释如下。

◎ 展示层:展示用户请求返回的数据。用户可以是一个系统,不一定是使用用户界面的人。

◎ 应用层:定义系统需要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是其他系统的应用层进行交互的必要渠道。应用层要尽量简单,不包含业务规则或者知识,只为下一层中的领域对象协调任务、分配工作,使它们互相协作。它没有反映业务情况的状态,却可以具有另外一种状态,为用户或程序显示某个任务的进度。

◎ 领域层:负责表达业务概念、业务状态信息及业务规则。尽管保存业务状态的技术细节是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心,领域模型位于这一层。

◎ 基础设施层:向其他层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为展示层绘制屏幕组件等。基础设施层还能够通过架构框架来支持4个层之间的交互模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵课堂诸葛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值