不知不觉来博客园已经快两半了,时间过的真快。

  这次的目标是再回顾一下传统的N层架构并且分析一下在DDD中的N层架构。

一、先来看一看传统的N层架构 

 N-层架构的出现,主要是由于观注点的分离而产生,这三层中BL层的职责一般比较难理清,具体请看下图.

接下来我们关注一下层间交互(分离出角色与职责以后,如何交互将成为架构或模式的主要特征)

然而在实际项目中我们也会出现这样的状况

这里存在一个反模式

二、传统的N层架构与DDD中N层架构的关系

三、分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合,所以可以分为严格分层架构,如上面的图中都是。另一种是松散分层架构如下图

四、采用依赖倒置的N层架构

依赖倒置的两个原则:

    1 高层模块不应该依赖于低层模块,丙都都应该依赖于抽象。

    2 抽象不应该依赖于细节,细节应该依赖于抽象。

举个例子:用户接口层中定义了它需要访问的基础设施层的接口,而基础设施层只要实现这个接口就好。

对于用户接口层来说它依赖的是 它定义的基础设施层的接口。而基础设施层也依赖于这个接口。

由于使用依赖倒以后层间相互依赖于接口。实际上高层低层并不明显,相当于把整个架构都推平了。这也会后面的六边形架构

的引入奠定了基础。但这里需要注意的一点就是在依赖倒置这幅图中的用户接口的交互行为,它已经被限定了只能和应用层交互。

再来看看六边形架构

这是具有一种对称性特征的架构风格

对称性特征?=> 不同的客户将通过"平等"的方式与系统交互。

这里主要讲一下六边形架构的内部,其实是依赖倒置后有一个交互限制的松散藕合的N层架构。

简单理了一下N层架构,并顺代说了下DDD中的实现方式,完全是自己的理解,有对的肯定也有错的,希望大家多提宝贵意见。

最新文章

  1. 上传文件报错System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。
  2. 《BI那点儿事》SQL Server 2008体系架构
  3. Cornerstone无法上传静态库文件(.a文件)
  4. FastJSON 简介及其Map/JSON/String 互转
  5. IOS开发—UIDatePicker 日期/时间选取器(滚轮)
  6. PLSQL存储过程校验身份证
  7. UVA 10806 Dijkstra, Dijkstra.(费用流)
  8. ZOJ 3609 Modular Inverse
  9. cocos2d-x学习笔记
  10. poj 2406 Power Strings【最小循环节】
  11. 每天进步一点点——Linux文件锁编程flock
  12. POJ 3139 Balancing the Scale
  13. Office 365开发概述及生态环境介绍(二)
  14. Html 经典布局(二)
  15. python基础(八)生成器,迭代器,装饰器,递归
  16. .NET CORE迁移踩坑
  17. 物联网架构成长之路(29)-Jenkins环境搭建
  18. openshift 容器云从入门到崩溃之五《部署应用》
  19. tensorflow之分类学习
  20. FreeRTOS 调度锁,任务锁和中断锁

热门文章

  1. Appium之python API
  2. 渐变算法的 Java 实现
  3. 解决Strokeit在win8下的图标问题和开机启动问题
  4. opencv 小任务1 图片的缩放
  5. SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试 [T]
  6. (转)Tomcat数据源连接池加密
  7. [CentOS7服务器] 更改系统时间
  8. python爬取数据保存入库
  9. 虚拟化 模板制作 rhev笔记
  10. 基于内存,redis,mysql的高速游戏数据服务器设计架构