动用分层那件事情看起来非常的粗略,应用分层那件职业看起来很简单

一、写在前面

    
应用分层那件事情看起来异常的粗略,但每种程序员都有协调的1套,哪怕是初大方。怎么着让一家市肆的几百个利用使用统一的道岔结构,并赢得多数程序员的承认吗?那可不是件轻易的事情,接下去以我们真正案例与大家齐声斟酌,先问大家多个技能难题:

    
服务的调用代码你感到放到哪一层好啊?

  • A 表现层
  • B 业务逻辑层
  • C 数据层
  • D 公共层

     怎样组织好 VO(View
Object 视图对象)、BO(Business Object 业务对象)、DO(Data Object
数据对象)、DTO(Data Transfer Object 数据传输对象) 呢?

    
不一致的人会有两样的答案,所以要统一公司采用分层,以压缩支出爱戴学习开销。统1选择分层要可大可小、轻松易用、协理种种现象,大家运用
IPO 格局:I 是 Input、O 是 Output、P 是
Process,壹进1出1处理
。应用系列的精神是机械,是拍卖设备,1进1出一拍卖。

图片 1

                                                                      IPO 原理图

1、写在前面

    
应用分层那件业务看起来异常的粗略,但各种程序员都有谈得来的一套,哪怕是初我们。怎么样让一家商场的几百个应用使用统壹的支行结构,并获得繁多程序员的鲜明吧?那可不是件轻巧的事务,接下去以大家真实案例与大家1块查究,先问大家多个技艺难点:

    
服务的调用代码你以为放到哪一层可以吗?

  • A 表现层
  • B 业务逻辑层
  • C 数据层
  • D 公共层

     怎样协会好 VO(View
Object 视图对象)、BO(Business Object 业务对象)、DO(Data Object
数据对象)、DTO(Data Transfer Object 数据传输对象) 呢?

    
分化的人会有例外的答案,所以要合并公司使用分层,以缩减费用爱戴学习成本。统壹选拔分层要可大可小、轻易易用、援救两种光景,大家选取IPO 方式:I 是 Input、O 是 Output、P 是
Process,一进一出一甩卖
。应用类其余精神是机器,是拍卖装置,一进1出壹处理。

图片 2

                                                                      IPO 原理图

2、统一逻辑架构图片 3

图片 4

                                                      
统一选用分层的逻辑架构图

职责表明:

图片 5图片 6

  • 文件夹分层法:应用分层选取文件夹方式的长处是可大可小、轻巧易用、统壹标准,能够总结5 个体系,也足以包罗 47个品类,以知足全部事情应用的二种区别场景;
  • 调用规约:在开垦进度中,必要遵循分层架构的牢笼,禁止跨层次的调用;
  • 下层为上层服务:以用户为骨干,以目的为导向。上层(业务逻辑层)须要怎么着,下层(数据访问层)提供怎么样,而不是下层(数据访问层)有哪些,就向上层(业务逻辑层)提供哪些;
  • 实体层规约:DO
    是数据表对象,不是数额访问层对象,不是只好给多少访问层使用;DTO
    是互连网传输对象,不是呈现层对象,不是只可以给表现层使用;BO
    是内部存款和储蓄器总括逻辑对象,不是事情逻辑层对象,不是只好给工作逻辑层使用
    。如若只限制在本层访问,则导致单个应用内多量尚未价值的靶子转换。以用户为主导来规划实体类,能够减小无价值再一次对象和失效调换;
  • U
    型访问
    :下行时表现层是 Input,业务逻辑层是 Process,数据访问层是
    Output。上行时数据访问层是 Input,业务逻辑层是 Process,  表现层就
    Output。

二、统壹逻辑架构图片 7

图片 8

                                                      
统一运用分层的逻辑架构图

任务表明:

图片 9图片 10

  • 文件夹分层法:应用分层选拔文件夹格局的优点是可大可小、简单易用、统一规范,能够回顾5 个档次,也得以总结 四二十三个种类,以满意全部职业使用的多种区别场景;
  • 调用规约:在付出进度中,需求遵从分层架构的羁绊,禁止跨层次的调用;
  • 下层为上层服务:以用户为主导,以目的为导向。上层(业务逻辑层)供给怎么样,下层(数据访问层)提供哪些,而不是下层(数据访问层)有如何,就向上层(业务逻辑层)提供什么样;
  • 实业层规约:DO
    是数据表对象,不是数量访问层对象,不是不得不给多少访问层使用;DTO
    是网络传输对象,不是显现层对象,不是不得不给表现层使用;BO
    是内部存款和储蓄器计算逻辑对象,不是业务逻辑层对象,不是不得不给业务逻辑层使用
    。假设只限制在本层访问,则导致单个应用内大气从没有过价值的目的调换。以用户为基本来统一筹划实体类,可以削减无价值再度对象和无效转变;
  • U
    型访问
    :下行时突显层是 Input,业务逻辑层是 Process,数据访问层是
    Output。上行时数据访问层是 Input,业务逻辑层是 Process,  表现层就
    Output。

三、大家的现实性规范

    
此规范大家用了4年,牵涉几百个利用,200
多个研究开发职员,是三个得逞的进行。接下来就借出本文提供下载的
TripOrderService、TripSellerMVCSite 那多少个 德姆o
来拓展具体标准的评释,以下是截图:

图片 11图片 12

图片 13图片 14

三、我们的切实可行标准

    
此标准大家用了四年,牵涉几百个使用,200
三个研究开发职员,是多个成功的施行。接下来就借出本文提供下载的
TripOrderService、TripSellerMVCSite 那多少个 德姆o
来进行实际规范的验证,以下是截图:

图片 15图片 16

图片 17图片 18

三.一、项目命名规则

    
项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
应用名}.{项目任务英文名全称},如:Trip.Seller.DTO。

三.一、项目命名规则

    
项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
应用名}.{项目职分英文名全称},如:Trip.Seller.DTO。

三.贰、业务逻辑层的花色标准

图片 19图片 20

标准表达:

  • 1、项目名的命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.xxxBusiness,如上图的 Trip.Order.Business。
  • 二、类名以 Logic
    结尾,如上航海用教室的 OrderLogic.cs。

三.二、业务逻辑层的连串正式

图片 21图片 22

规范表达:

  • 一、项目名的命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.xxxBusiness,如上航海用教室的 Trip.Order.Business。
  • 二、类名以 Logic
    结尾,如上海体育场面的 OrderLogic.cs。

三.叁、数据操作项目专业

图片 23图片 24

正式表达:

  • 壹、各数据操作项目名根据使用什么数据库进行归类,然后以
    DB 为结尾,具体命名规则是:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.{使用什么数据库}DB,如上海体育场地的 Trip.Seller.MSSQLDB。
  • 2、假如波及到多个数据库访问的,那么数量操作项目下的类公事供给按数据库名称(以
    DB 为末了)成立文件夹分开,如上海教室的 TripOrderDB 文件夹。
  • 三、建议在选用中选择 SQL
    语句,不利用存储进度。在数据库中不新添存款和储蓄进度,但旧的存款和储蓄进度能够持续采纳和修改。
  • 四、分页建议利用数据库(如
    SQLServer)的新星本性开始展览分页,并将各样分页 SQL
    直接写到应用中。

3.叁、数据操作项目正式

图片 25图片 26

正式表达:

  • 壹、各数据操作项目名依照使用什么数据库举办分类,然后以
    DB 为尾声,具体命名规则是:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.{使用什么数据库}DB,如上海教室的 Trip.Seller.MSSQLDB。
  • 二、假如提到到多个数据库访问的,那么数量操作项目下的类公事须求按数据库名称(以
    DB 为最后)创立文件夹分开,如上海体育场所的 TripOrderDB 文件夹。
  • 3、建议在动用中动用 SQL
    语句,不选用存款和储蓄进程。在数据库中不新添存款和储蓄进度,但旧的贮存进度能够持续应用和更改。
  • 肆、分页提议使用数据库(如
    SQLServer)的新星性格开展分页,并将每一个分页 SQL
    直接写到应用中。

三.四、实体类项目正式

数码传输对象 DTO
规范

图片 27图片 28

标准表达:

  • 一、DTO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.DTO,如上海教室的 Trip.Order.DTO。
  • 二、请求参数 DTO
    实体类、响应 DTO 实体类存放规范以及其取名规则:三、如若请求参数 DTO
    实体类、响应 DTO 实体类有基类要接二连三,那么提议为基类取名字为RequestBase.cs、ResponseBase.cs。且那么些基类直接放在 DTO 项目的Common 文件夹下。

    • a、请求参数 DTO 实体类放在 Request 文件夹下,且命名规则为:以
      Request 结尾,如上海体育场面的 SearchOrderRequest.cs。
    • b、响应 DTO 实体类放在 Response 文件夹下,且命名规则为:以
      Response 结尾,如上海体育场所的 SearchOrderResponse.cs。
    • c、如若请求参数 DTO 实体类或响应 DTO
      实体类的习性中有指标或枚举,那么那么些指标所属的类、枚举放在 DTO
      项目标 Common 文件夹下。
  • 叁、假使请求参数 DTO 实体类、响应 DTO
    实体类有基类要一而再,那么建议为基类取名为RequestBase.cs、ResponseBase.cs。且那一个基类直接放在 DTO 项指标Common 文件夹下。

视图对象 VO 规范

图片 29图片 30

专业表明:

  • 一、VO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.ViewModel,如上海教室的 Trip.Seller.ViewModel。
  • 贰、各 VO 实体类,我们用
    Controller 名作为文件夹名进行分离,如上海体育地方的 Order 文件夹。
  • 3、VO
    实体类名的命名提议:

    • a、请求参数 VO 实体类以 Input/Form/Query 结尾,如上海教室的
      SearchOrderInput.cs。
    • b、响应 VO 实体类以 Output/List/Result 结尾,如上海体育场面的
      SearchOrderOutput.cs。

政工对象 BO
规范(可选)

BO 实体类名以 Model
为尾声:

图片 31图片 32

标准表明:

  • 壹、BO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.BO,如上海教室的 Trip.Order.BO;
  • 2、以 Model
    结尾,如上海教室的 OrderModel.cs;
  • 3、为了简化设计,BO
    项目为可选,可在 DO 项目里建文件夹。

数据对象 DO
规范(可选)

图片 33图片 34

业内表达:

  • 壹、DO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.Entity,如上海图书馆的 Trip.Seller.Entity;
  • 贰、假如波及到三个数据库访问的,那么须要按数据库名称(以
    DB 为最后)创设文件夹分开,如上海教室的 TripOrderDB 文件夹;
  • 叁、表名 +Entity
    结尾,如上海图书馆的 OrderEntity.cs;
  • 四、DO
    是数据表对象,供单表 CU路虎极光D
    操作。对于多表查询请求对象和重返对象,可定义新指标或接纳现成对象(DTO/BO)来完结。

3.四、实体类项目专业

数量传输对象 DTO
规范

图片 35图片 36

正规表明:

  • 一、DTO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.DTO,如上海教室的 Trip.Order.DTO。
  • 二、请求参数 DTO
    实体类、响应 DTO 实体类存放规范以及其取名规则:三、如若请求参数 DTO
    实体类、响应 DTO 实体类有基类要继续,那么提议为基类取名称叫RequestBase.cs、ResponseBase.cs。且这个基类直接放在 DTO 项目标Common 文件夹下。

    • a、请求参数 DTO 实体类放在 Request 文件夹下,且命名规则为:以
      Request 结尾,如上海教室的 SearchOrderRequest.cs。
    • b、响应 DTO 实体类放在 Response 文件夹下,且命名规则为:以
      Response 结尾,如上海教室的 SearchOrderResponse.cs。
    • c、假使请求参数 DTO 实体类或响应 DTO
      实体类的性能中有目的或枚举,那么那些指标所属的类、枚举放在 DTO
      项指标 Common 文件夹下。
  • 叁、如果请求参数 DTO 实体类、响应 DTO
    实体类有基类要一而再,那么提议为基类取名称为RequestBase.cs、ResponseBase.cs。且那些基类直接放在 DTO 项目标Common 文件夹下。

视图对象 VO 规范

图片 37图片 38

规范说明:

  • 壹、VO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.ViewModel,如上海教室的 Trip.Seller.ViewModel。
  • 二、各 VO 实体类,我们用
    Controller 名作为文件夹名实行分离,如上海教室的 Order 文件夹。
  • 三、VO
    实体类名的命名提议:

    • a、请求参数 VO 实体类以 Input/Form/Query 结尾,如上海体育场面的
      SearchOrderInput.cs。
    • b、响应 VO 实体类以 Output/List/Result 结尾,如上海教室的
      SearchOrderOutput.cs。

事务对象 BO
规范(可选)

BO 实体类名以 Model
为末段:

图片 39图片 40

正式表明:

  • 一、BO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.BO,如上海教室的 Trip.Order.BO;
  • 2、以 Model
    结尾,如上海教室的 OrderModel.cs;
  • 三、为了简化设计,BO
    项目为可选,可在 DO 项目里建文件夹。

数量对象 DO
规范(可选)

图片 41图片 42

标准表达:

  • 1、DO
    项目命名规则:{产品线英文名全称}.{子系统英文名全称 +
    应用名}.Entity,如上海教室的 Trip.Seller.Entity;
  • 2、倘若波及到多个数据库访问的,那么要求按数据库名称(以
    DB 为尾声)创造文件夹分开,如上海教室的 TripOrderDB 文件夹;
  • 三、表名 +Entity
    结尾,如上海教室的 OrderEntity.cs;
  • 四、DO
    是数据表对象,供单表 CU福特ExplorerD
    操作。对于多表查询请求对象和重回对象,可定义新指标或接纳现存对象(DTO/BO)来成功。

3.五、数据库连接配置标准

图片 43图片 44

规范表达:

  • 1、数据库连接的配备必须读写分离。
  • 2、数据库连接字符串提议加密处理。
  • 三、数据库连接配置名的命名规则:{以
    DB 为终极的数据库名称}_
    读写类型,如:TripOrderDB_SELECT、TripOrderDB_INSERT。

三.伍、数据库连接配置标准

图片 45图片 46

专业表达:

  • 1、数据库连接的铺排必须读写分离。
  • 二、数据库连接字符串提议加密处理。
  • 三、数据库连接配置名的命名规则:{以
    DB 为结尾的数据库名称}_
    读写类型,如:TripOrderDB_SELECT、TripOrderDB_INSERT。

3.陆、配置文件上面的标准

图片 47图片 48

图片 49图片 50

正规表明:

  • 1、全数配置文件(除
    Web.config 文件外)都无法不置于 Config 文件夹下。
  • 二、全体配置文件(除
    Web.config
    文件外)按不一样环境区分开,具体命名规则是:{成效模块英文名}.{环境英文简称名}.config,个中地方环境的英文简称名是
    Dev,测试环境的英文简称名是 Test,正式环境的英文简称名是
    Prod,如上海教室的 AppSetting.Dev.config。
  • 三、保持 Web.config
    配置文件的一尘不染,只留环境设置节点。

3.6、配置文件上边包车型大巴正统

图片 51图片 52

图片 53图片 54

标准表达:

  • 1、全部配置文件(除
    Web.config 文件外)都必须置于 Config 文件夹下。
  • 2、全体配置文件(除
    Web.config
    文件外)按分裂环境区分开,具体命名规则是:{功效模块英文名}.{环境英文简称名}.config,在那之中本土环境的英文简称名是
    Dev,测试环境的英文简称名是 Test,正式环境的英文简称名是
    Prod,如上海体育地方的 AppSetting.Dev.config。
  • 3、保持 Web.config
    配置文件的到底,只留环境设置节点。

三.7、静态能源文件下面包车型地铁正经

图片 55图片 56

行业内部表明:

  • 1、公共的静态财富文件(css、js、image
    等)放在别的的静态站点中,统1由前端实行开采和维护。壹般,css
    文件放在 css 文件夹下,js 文件放在 js 文件夹下,image 图片文件放在
    img 文件夹下。
  • 贰、与某项业务有关的 js
    文件能够放置各自工小说种的变现层 PresentationLayer
    下,以便于开垦人士调试,js 文件可放在项目的 js 文件夹下。
  • 三、静态能源文件必须采用版本号管理,防止更新后由于客户端浏览器缓存而招致站点使用的依然是旧版本的静态能源文件:

<script
src=”~/js/order.js?v=@AppSetting.StaticFileVersion”></script>

3.七、静态能源文件下边包车型地铁规范

图片 57图片 58

正规表达:

  • 一、公共的静态资源文件(css、js、image
    等)放在别的的静态站点中,统一由前端进行开垦和保养。一般,css
    文件放在 css 文件夹下,js 文件放在 js 文件夹下,image 图片文件放在
    img 文件夹下。
  • 二、与某项业务有关的 js
    文件能够放置各自业务品种的变现层 PresentationLayer
    下,以造福开拓职员调节和测试,js 文件可放在项目标 js 文件夹下。
  • 三、静态能源文件必须选取版本号管理,避防更新后由于客户端浏览器缓存而招致站点使用的仍然是旧版本的静态能源文件:

<script
src=”~/js/order.js?v=@AppSetting.StaticFileVersion”></script>

四、写在最后

4、写在最终

     四.一、难点回答

    
问:服务的调用代码应该放置哪一层呢?A 表现层、B 业务逻辑层 、C
数据层、D 公共层。

style=”font-family: Microsoft YaHei”>大家的正儿捌经是联合置于数据财富访问层即
C。上层提供劳动,下层调用服务,中间处管事人情逻辑。

     问:怎样协会好 VO(View
Object 视图对象)、BO(Business Object 业务对象)、DO(Data Object
数据对象)、DTO(Data Transfer Object 数据传输对象) 呢?

style=”font-family: Microsoft YaHei”>常常有两种做法,限定访问范围和不限定访问范围,实际项目中可依据必要接纳、折中或裁剪。大家采纳后者,将
EntityLayer 作为通用对象放置左侧,具体可参照实体层规约:

“DO
是数据表对象,不是多少访问层对象,不是不得不给多少访问层使用;DTO
是互连网传输对象,不是表现层对象,不是不得不给表现层使用;BO
是内部存款和储蓄器总括逻辑对象,不是业务逻辑层对象,不是不得不给业务逻辑层使用
。要是仅限制在本层访问,则导致单个应用内大气尚无价值的指标转变。以用户为着力来布署实体类,能够减弱无价值再度对象和无效调换。”

    
问:应用分层范例代码的编辑撰写要求小心些什么?

style=”font-family: Microsoft YaHei”>应用分层范例的代码要想写好,分外不轻便,很轻巧引起争议,很难让具有人满足。我们在切实施行时遵守以下几点:

style=”font-family: Microsoft YaHei”>应用分层范例的要害价值是引人侧目层的义务和互动,每种层的职责是怎么样,哪些要干,哪些不要干,以及层与层之间依赖和互相;

style=”font-family: Microsoft YaHei”>腹心定制:裁减通用支持类的编撰,假若每二个利用中有雅量同样的增派类,那在架设层面上是有标题。在大家的几百个线上选择中,就算收缩通用的代码,包涵分页帮衬类、数据库补助类、缓存帮忙类、MQ
支持类、日志扶助类、AOP
援救类、线程帮衬类。业务应用的机假设为业务服务,每贰个使用都以尤其的,都亟需私人定制,极少有通用的代码,假使有,那么相应由框架或机件专门消除;

style=”font-family: Microsoft YaHei”>少便是多:应用的现象多,参考职员多,每种人想尽不一致,牵涉的小运长,所以尽量只做我们都承认的正儿8经、正确的政工,要自底向上、要收缩有争议的代码范例,不然叁个张冠李戴将会放大百倍、二个有争持的正规将会很难执行。

style=”font-family: Microsoft YaHei”>追求轻便:代码编写可分为三个层次,轻松、复杂、轻便。第一简约是不精晓的简约,第四个复杂是知情后的扑朔迷离,第四个大约是通晓后有取舍的简易。范例代码要追求轻易,既可轻巧扩张援助复杂气象,又要简明到初级程序员也能操作。

style=”font-family: Microsoft YaHei”>内聚大于解耦:内聚是什么样,内聚是机关内有同步的对象,然后大家牢牢合作。解耦是怎么,解耦是单位间各自职务显然,然后减弱不须求的连日。二个利用就如2个机关,应有一个联袂的对象和义务,然后大家牢牢合作。

style=”font-family: Microsoft YaHei”>换句话说,应用内部应调整和收缩不供给契约接口(就好像公司间才签署合同),收缩不须求的依靠注入完结,减弱不须求且代价过大的解耦。一切以简要实用为主,以应用价值输出、应用的靶子(接口或分界面)为导向。

     四.一、难题答疑

    
问:服务的调用代码应该放置哪1层呢?A 表现层、B 业务逻辑层 、C
数据层、D 公共层。

style=”font-family: Microsoft YaHei”>大家的正统是联合置于数据能源访问层即
C。上层提供劳动,下层调用服务,中间处理业务逻辑。

     问:怎么样组织好 VO(View
Object 视图对象)、BO(Business Object 业务对象)、DO(Data Object
数据对象)、DTO(Data Transfer Object 数据传输对象) 呢?

style=”font-family: Microsoft YaHei”>常常有三种做法,限定访问范围和不限制访问范围,实际项目中可依据须要选拔、折中或裁剪。我们利用后者,将
EntityLayer 作为通用对象放置左边,具体可参看实体层规约:

“DO
是数据表对象,不是数额访问层对象,不是不得不给多少访问层使用;DTO
是互联网传输对象,不是显示层对象,不是只可以给表现层使用;BO
是内部存款和储蓄器总计逻辑对象,不是事情逻辑层对象,不是只可以给职业逻辑层使用
。若是只限制在本层访问,则导致单个应用内大批量未曾价值的指标调换。以用户为主干来规划实体类,能够缩短无价值再次对象和无效调换。”

    
问:应用分层范例代码的编排需求专注些什么?

style=”font-family: Microsoft YaHei”>应用分层范例的代码要想写好,卓殊不易于,很轻松引起争议,很难让具备人满意。我们在切切实实推行时遵从以下几点:

style=”font-family: Microsoft YaHei”>应用分层范例的严重性价值是显眼层的天职和相互,每一个层的任务是怎样,哪些要干,哪些不要干,以及层与层之间注重和互动;

style=”font-family: Microsoft YaHei”>腹心定制:减少通用协理类的编写,若是每3个采纳中有雅量如出一辙的声援类,那在架设层面上是有毛病。在我们的几百个线上行使中,尽管收缩通用的代码,包含分页帮助类、数据库协理类、缓存补助类、MQ
协理类、日志协理类、AOP
帮忙类、线程协理类。业务应用的重中之重是为工作服务,每1个应用都是专程的,都须要私人定制,极少有通用的代码,要是有,那么应该由框架或机件专门化解;

style=”font-family: Microsoft YaHei”>少正是多:应用的景况多,参考职员多,各类人民代表大会费周折差异,牵涉的日子长,所以尽大概只做大家都承认的规范、正确的业务,要自底向上、要削减有争辨的代码范例,不然二个不当将会放大百倍、叁个有争持的科班将会很难试行。

style=”font-family: Microsoft YaHei”>追求轻巧:代码编写可分为多少个层次,轻松、复杂、简单。第一简单易行是不知道的简练,首个复杂是驾驭后的复杂,第一个简易是精通后有取舍的简约。范例代码要追求简单,既可轻易扩大扶助复杂气象,又要简明到初级程序员也能操作。

style=”font-family: Microsoft YaHei”>内聚大于解耦:内聚是怎么,内聚是机关内有三只的靶子,然后我们牢牢同盟。解耦是何等,解耦是单位间各自职务分明,然后减弱不供给的总是。贰个运用仿佛二个机关,应有二个合伙的靶子和职责,然后大家牢牢合营。

style=”font-family: Microsoft YaHei”>换句话说,应用内部应调整和减少不必要契约接口(就像公司间才签署合同),减弱不供给的借助注入实现,收缩不要求且代价过大的解耦。1切以轻松实用为主,以应用价值输出、应用的靶子(接口或分界面)为导向。

     4.2、Demo 下载

     Layer德姆o
下载地址:https://github.com/das2017/LayerDemo

 

小说转发自:http://www.infoq.com/cn/articles/architecture-practice-12-application-layer?utm_source=infoq&utm_campaign=user_page&utm_medium=link

     4.2、Demo 下载

     Layer德姆o
下载地址:https://github.com/das2017/LayerDemo

 

文章转发自:http://www.infoq.com/cn/articles/architecture-practice-12-application-layer?utm_source=infoq&utm_campaign=user_page&utm_medium=link

相关文章