DDD框架基础知识
DDD框架基础知识
参考:
https://www.cnblogs.com/zhili/p/OnlineStorewithDDD.html(领域驱动设计,分层架构)
https://www.cnblogs.com/zhili/p/SpecificationPattern.html(规约,后续研究)
一.什么是DDD?
DDD是Domain Driven Design的缩写,是通过建立领域模型解决复杂领域问题。是一种编程思想,方便业务人员及开发人员与领域专家的交流。
二.什么是领域?
领域指的就是某一产品或某一系统,比如:论坛,电商,医疗,物流等,都各自属于一个领域,通过与领域专家交流,了解当前领域中的业务及可能存在的问题域并解决即可。
三.什么是设计?
在DDD中领域模型设计是核心,通过设计领域模型来解决复杂的领域问题。领域模型
四.什么是驱动?
四.DDD如何分层?
DDD可以看作是一个四层架构:基础设施层,领域层,应用层,用户界面层,相互协助解决领域问题。
用户界面层:可以有mvc,webform,webapi,控制台,winform等,提供界面展示及请求响应渲染。
应用层:不包含任何业务逻辑,是用户界面层与领域层的桥梁,WCF就在该层。
领域层(核心):包含领域对象(实体,值对象),领域事件,领域服务,规约,工厂,接口,仓储接口等,重点就是领域对象。
领域对象:
1.实体,值对象
2.聚合根(聚合根也是实体,但与实体不同的是,聚合根是由实体和值对象组成的系统边界对象),聚合
根据面向接口编程原则,我们在领域模型中应该定义一个实体接口和聚合根接口,而因为聚合根也是属于实体,所以聚合根接口继承于实体接口
实体可以认为对应于数据库的表,而值对象一般定义在实体类中。
基础设施层:
1.提供通用的框架(缓存,日志,事务处理等)
2.仓储实现(也可以单独一个层【仓储层】)
三.
DDD框架基础知识的更多相关文章
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类
一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...
- 4-1 Spring框架基础知识
Spring框架基础知识 1.Spring 框架作用 主要解决了创建对象和管理对象的问题. 自动装配机制 2.Spring 框架 (Spring容器,JavaBean容器,Bean容器,Spring容 ...
- Spring框架基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...
- ABP VNext框架基础知识介绍(1)--框架基础类继承关系
在我较早的时候,就开始研究和介绍ABP框架,ABP框架相对一些其他的框架,它整合了很多.net core的新技术和相关应用场景,虽然最早开始ABP框架是基于.net framework,后来也全部转向 ...
- .NET面试题系列[2] - .NET框架基础知识(2)
3 程序集 面试出现频率:虽然很重要但不怎么出现,可能会考你定义,以及程序集包括什么,然后自然的话题就跑到反射上去了. 重要程度:8/10,很重要 需要理解的程度:知道程序集包括IL和元数据.知道元数 ...
- ABP VNext框架基础知识介绍(2)--微服务的网关
ABP VNext框架如果不考虑在微服务上的应用,也就是开发单体应用解决方案,虽然也是模块化开发,但其集成使用的难度会降低一个层级,不过ABP VNext和ABP框架一样,基础内容都会设计很多内容,如 ...
- Mock平台2-Java Spring Boot框架基础知识
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 认识Spring Boot 在N年前的大学时代想要开发一个Web服务使用的还是SSH框架(struts+spring+hibernate) ...
- 集合框架基础知识-----java基础知识
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...
随机推荐
- C#专业的音视频采集录制类库SharpCapture介绍
SharpCapture是高性能.轻量级.接口清晰.使用简单的C#语言编写的.NET音视频采集.屏幕录制类库.本类库可以采集系统声卡.麦克风.摄像头.屏幕画面,支持声卡和话筒混音采集. 可以应用到直播 ...
- Markdown温故知新(0):导航目录
Markdown温故知新(0):导航目录 Markdown温故知新(1):Markdown面面观 Markdown温故知新(2):详解七大标准语法 Markdown温故知新(3):六个实用扩展语法 M ...
- 纯C语言实现线性链表
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode{ ElemT ...
- jQuery每秒刷新
显示当前时间 setInterval( function getNowTime() { var nowTime = new Date(); var nowYear = nowTime.getFullY ...
- vue+element拖动排序功能
项目中老大心血来潮设计了一可以拖动达到排序的功能,感觉没什么用,但是没办法,实现吧! 这功能肯定不会手撸了,直接上插件 使用Sortable.js,对vue不友好,拖拽有时候乱跳;改用vuedragg ...
- Python与设计模式之单例模式
一.什么是单例 即单个实例,指的是同一个类实例化多次的结果指向同一个对象,用于节省内存空间 如果我们从配置文件中读取配置来进行实例化,在配置相同的情况下,就没必要重复产生对象浪费内存了 # setti ...
- Linux的yum管理
前面介绍了软件的管理的方式rpm.但有个缺点,rpm不能解决依赖. 下面介绍的yum软件管理.可以完美的解决这个问题. 使用yum的方式管理rpm软件 优势:自动解决软件的依赖关系 ...
- vmware虚拟机安装T6客户端
1.虚拟机安装T6 经过测试,vmware 里系统装T6 网络适配器必须使用桥接,nat模式是无法连接数据库的
- node中glob模块总结
参考文章: githup_glob node-glob学习 前言: 最近在学习webpack配置, 其中有一项glob配置入口文件, 来获取对应的文件名, 达到入口entry和output文 ...
- nc用法
NC 在客户端 和 服务器执行------------------------------------------------------------------------------------- ...