在最开始编程的时候相信你们都写过下面这种架构,界面代码,业务代码,数据库链接所有在工程面完成。固然这种架构在处理很小的程序的时候依然有生命力数据库
后来咱们发现数据访问的代码大量重复,应该进行抽象,因而单独将数据访问相关的代码封装出一个数据访问层,就是用Sqlhelper将数据库访问的方法封装,用DataTable返回到ui之中使用。编程
随着业务规模的增长,UI层代码愈来愈多,而且有大量逻辑重复的代码,因而将UI曾中业务逻辑代码抽象出一层,放到BLL中,UI只处理一些界面展现,跳转,参数校验等相关内容,可是此时咱们用的数据结构大部分状况下仍是放在一个集中的工程Data中。api
当业务复杂度继续提升的时候,你会发现以下问题:数据结构
在领域中运用以下战术设计解决上述问题架构
随着对业务的理解,会造成一组一组这种概念(领域的划分)。微服务
若是咱们引入领域驱动中六边形架构以后(六边形架构其实能够认为是领域分层的一种实现方式):ui
一个六边形理解为一个模块编码
恰如其分的架构中提到三种设计方式:设计
最近很流行微服务,都拿微服务和单体架构作对比,可是若是初期就设计一个微服务那么架构和维护成本过高,不少产品初期团队根本不具有这样的资源,可是若是开始就设计一个单体架构可能又知足不了将来业务的发展.若是微服务架构是一个计划式设计的话,那单体架构就是一个演进式架构。可是这种演进的成本很高,甚至面临着重作的风险。代理
若是咱们引入六边形架构这种最小化设计,再结合api容器就能够几乎0成本的将单体架构切换到微服务.
PS:每一个架构演化均可以说不少,网上已经有不少这种说明,这里就没有详细的说明,有兴趣的能够留言讨论.