如何设计分层架构和交互接口 API ?

架构设计流程

在「 如何创建架构师的立体化思惟? 」这篇文章中,老兵哥 跟你们一块儿聊到架构设计涉及业务、技术、系统和时间等几个维度,也知道从技术维度能够将应用分红七层,那具体怎么作呢?今天咱们继续来聊聊分层架构的设计流程,以及接口设计方法等内容。一般,咱们能够将分层架构的设计流程分解为下列 4 个步骤:html

  1. 第一步,结合现实状况,将系统划分红多个层次。
  2. 第二步,肯定层与层之间的关系,梳理出层与层之间的交互接口。
  3. 第三步,将功能相近的接口划归到一个模块,确保模块高内聚,对外低耦合。
  4. 第四步,在此基础上进一步明晰接口的参数列表。

仅仅四个步骤就完成了架构设计吗?这会不会太简单空洞了呢?各位看官,不要着急,请听蔡老师慢慢道来,每一个步骤都有极具可操做性的方法及工具。程序员

5 架构设计流程面试

层次的切分方法

面对一个庞然大物,你该如何下手呢?不用担忧,这已经给你准备了庖丁解牛的方法,轻轻松松把一个复杂的大系统变得能够掌控了。数据库

  1. 第一刀:按照这套方法论来进行架构设计,最理想的状况是将X轴切分红七层。而第一刀应该先切在业务和领域之间,即经过API把两边解耦。交互和业务跟用户关联度高,常常随需求变化而改动,而领域和资源相对比较稳定。
  2. 第二刀:考虑到要完成某些业务功能,系统可能须要调用外部系统协同完成,为了保证领域层相对稳定,咱们须要隔离外部系统或数据持久层变化带来的影响,那第二刀应该切在领域和资源之间。
  3. 第三刀:考虑到一样的一个业务可能会有多套界面,例若有Web版、桌面版、移动版等,为了提升重用,隔离变动,那接下来要把交互和业务切开。

经过上面这温柔的三刀,咱们就能够把一个大块头切分红七个层次。缓存

接口的设计方法

在肯定分层以后,咱们能够把每一个业务需求的交互时序图画出来,而分层就是交互时序图的主角。这时候咱们就能够清晰的找出层与层之间的交互接口,以及能够初步肯定每一个接口的参数列表。架构

6 业务交互时序图工具

考虑到API、领域模型接口、SPI是最为关键的接口,那良好的设计就显得更为重要。那如何可以设计出良好的接口呢?在这点上,蔡老师也有很是丰富的经验能够分享:post

 

7 接口设计流程图职业规划

  1. 找出领域对象:经过多轮领域访谈,与业务专家一块儿分析出领域对象。另外,也能够经过研究外部接口及数据字典来明晰领域对象,反过来也能够丰富外部接口和数据字典。
  2. 设计领域模型、资源模型、数据模型:在挖掘领域对象的过程当中,咱们就能够开始设计领域模型了,肯定领域对象之间的关联关系。当关联关系逐步清晰以后,咱们还能够根据关联关系的密集程度对领域对象的组织方式作一些调整,找出核心的领域对象集合,其余领域对象能够归类到围绕核心领域对象集合的卫星集合里面。经过多轮调整,咱们能够获得一个可以映射业务、关系简化的领域模型。而后兵分两路启动资源模型和数据模型的设计工做。上述三个模型之间的关系及区别,请参见下文。
  3. 设计领域模型接口、APISPI、数据库:在设计领域模型接口时,咱们要尽可能作到很少很多,这些接口都是对外提供服务所必须的,也是全面的,而且粒度要细。在设计API时,咱们要考虑内外客户的需求和特色,作到方便易用,能够参考RESTful API设计相关的资料。在设计SPI时,咱们要尽可能隔离资源层对领域层的影响。

在完成上述工做以后,咱们就能够进入实施阶段,开始启动代理层、核心层和服务层的代码设计工做。另外,若是是对线上已有系统进行升级,那还要开始制定数据的迁移计划。spa

三个模型之间的关系及区别

  1. 领域模型,映射特定业务领域当中核心领域对象及其关联关系,这些对象及关系的存在都是完成业务规则所必须的,甚至是法律法规等明文要求的,不会轻易变更。
  2. 资源模型,基于领域模型,从为内外客户提供服务的角度分析定义出来的,包含了资源对象及其关联关系。根据内外客户的特色及需求,咱们能够调整资源模型中的内容。
  3. 数据模型,基于领域模型,从存储(持久化或缓存)信息的角度分析定义出来的,包含数据对象及其关联关系。根据存储载体的特色及需求,咱们能够调整数据模型中的内容。

先分享到这里,坚持原创不易,若是你以为有价值,麻烦动动手指点个 「」,老兵哥会更有动力。另外,我还会持续分享职业规划、应聘面试、技能提高、影响力打造等经验,关注 「 IT老兵哥 」,赋能程序人生

近期文章索引:

相关文章
相关标签/搜索