DDD中的分层架构
DDD中的分层架构很好的应用了关注点分离原则Separation of Concerns(SOC),每一层做好自己的事情,减少交叉

表现层
表现层提供用来完成任务的用户界面,如webform wpf asp.net mvc 以及winform等,
一般而言,我们把表现层显示的任何数据称为视图模型,把任何从屏幕离开触发一个后台操作的数据称为输入模型,大多数时候这两个模型是相同的。
就分层应用程序而言,MVC,MVP,MVVM都是表现层的模式,
应用程序层
应用程序层是一个附加层,介于领域层和UI之间,是你编排用例实现的地方,其中包含的方法几乎一一对应于表现层的用例,
一般情况下,应用程序层和表现层一一对应,因为不同的表现层可能会有不同的用例,
应用程序层引用领域层和基础设施层,对业务逻辑一无所知,不包含任何与业务相关的状态信息,
应用程序层有时候需要调用外部服务,比如WCF或者WebApi,又或者是第三方的服务,这种情况一般是把对外部服务的调用封装成适配器,放在基础设置层,
这样就把对外部服务的调用转化成了对基础设施层的调用。
领域层
领域层包含了几乎所有的业务逻辑,由一组领域模型和一组服务构成,
领域模型:
包含数据和行为,与之相对的一个是贫血模型,什么是贫血模型,如果只是类缺少方法,对象模型并不算是贫血,如果实体的逻辑
放在了实体类的外面,那才是真的贫血,毕竟如果把逻辑放到了实体类的外面,他实际上是违反了说,别问原则
领域服务:
它包含了一些逻辑上有关系并且操作多个实体的行为,
基础设施层
基础设施层是与具体技术有关的东西,比如EF,安全,日志,IOC,跟踪,缓存等,
DDD中的分层架构的更多相关文章
- 应用程序框架实战十三:DDD分层架构之我见
前面介绍了应用程序框架的一个重要组成部分——公共操作类,并提供了一个数据类型转换公共操作类作为示例进行演示.下面准备介绍应用程序框架的另一个重要组成部分,即体系架构支持.你不一定要使用DDD这样的架构 ...
- 应用程序框架实战十三:DDD分层架构之我见(转)
前面介绍了应用程序框架的一个重要组成部分——公共操作类,并提供了一个数据类型转换公共操作类作为示例进行演示.下面准备介绍应用程序框架的另一个重要组成部分,即体系架构支持.你不一定要使用DDD这样的架构 ...
- DDD分层架构之我见
DDD分层架构之我见 前面介绍了应用程序框架的一个重要组成部分——公共操作类,并提供了一个数据类型转换公共操作类作为示例进行演示.下面准备介绍应用程序框架的另一个重要组成部分,即体系架构支持.你不一定 ...
- 说一说Web开发中两种常用的分层架构及其对应的代码模型
昨天妹子让我帮她解决个问题,本以为可以轻松搞定,但是打开他们项目的一瞬间,我头皮发麻.本身功能不多的一个小项目,解决方案里竟然有几十个类库.仅仅搞明白各个类库的作用,代码层次之间的引用关系就花了一个多 ...
- 初探领域驱动设计(2)Repository在DDD中的应用
概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...
- Repository在DDD中的应用
Repository在DDD中的应用2014-10-09 08:55 by Jesse Liu, 98 阅读, 0 评论, 收藏, 编辑 概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值 ...
- 你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
一叶障目 .NET平台上的分层架构(很多朋友称其为“三层架构”),似乎是一个长盛不衰的话题.经常看到许多朋友对其进行分析.探讨.辩论甚至是抨击.笔者在仔细阅读了大量这方面文章后,认为许多朋友在分层架构 ...
- 应用程序框架实战十八:DDD分层架构之聚合
前面已经介绍了DDD分层架构的实体和值对象,本文将介绍聚合以及与其高度相关的并发主题. 我在之前已经说过,初学者第一步需要将业务逻辑尽量放到实体或值对象中,给实体“充血”,这样可以让业务逻辑高度内聚, ...
- 应用程序框架实战十七:DDD分层架构之值对象(层超类型篇)
上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好的实践.但是设计与实践的好与坏,对于不 ...
随机推荐
- mysql配置主从数据库
1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验 ...
- java中常用的空判断
Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字 ...
- CSS中position属性( absolute | relative | static | fixed )详解
我们先来看看CSS3 Api中对position属性的相关定义: static:无特殊定位,对象遵循正常文档流.top,right,bottom,left等属性不会被应用. relative:对象遵循 ...
- 多因子降维法(MDR,multifactor dimensionality reduction)
多因子降维法(MDR,Multifactor Dimensionality Reduction ) MDR是近年统计学中发展起来的一种新的分析方法.其中,“因子” 即交互作用研究中的变量,“维” 是指 ...
- Linux系统迁移
文章来源http://blog.csdn.net/gt945/article/details/12253585 sudo rsync -aAXvP --exclude-from=exclude.txt ...
- Effective java -- 2 对于所有对象都通用到方法
第八条:覆盖equals时请遵守通用约定 什么时候需要覆盖equals方法?类具有自己的逻辑相等概念,并且父类的equals方法不能满足需要.重写equals时需要遵循一下约定: 自反性:非null ...
- win10新特性,ubuntu子系统(安装及配置)
最新版win10下可以直接跑ubuntu镜像,直接入正题. 这里如果你没有可能是你的版本不是最新的,我这里是最新的win10直接是有这个功能的.勾选后会要求重启,确定即可. 然后win键弹出搜索,输入 ...
- javascript中类的属性访问权限研究(1)
本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...
- Java 验证用户名、密码
1. 数据库操作 2.验证用户 2.1. 查询 String sql = String.format("select count(*) from user where name='%s' a ...
- V8编程入门
本文档介绍了V8引擎的一些关键概念,并提供了例子hello world指引你入门. Hello World 让我们看一个Hello World的示例,它将一个字符串参数作为JavaScript语句,执 ...