随笔分类 - DDD(领域驱动)
Domain-Driven Design,领域驱动设计
摘要:回到目录规 约(Specification)模式:第一次看到这东西是在microsoft NLayer项目中,它是微软对DDD的解说,就像petshop告诉了我们MVC如何使用一样,这个规约模式最重要的作用是实现了查询语句与查询条件的 分离,查询语句在底层是稳定的,不变的,而查询条件是和具体业务,具体领域有关的,是易变的,如果我们为每一个领域的每一个新需求都写一个新的方法,那就 会出现很多重复的代码,不利于程序的最终扩展!下面我们来看一个经典例子一个IOrderRepository的接口,定义了一个订单仓储 Order_Info GetOrder_InfoById(int ord...
阅读全文
摘要:回到占占推荐博客索引DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界!DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它更加运用自如,它DDD模式里,你可能会涉及到IoC,AOP,OOP,OOD等设计模块,也可能会涉及到mv...
阅读全文
摘要:回到目录之所以把发消息拿出来,完全是因为微软的orchard项目,在这个项目里,将公用的与领域无关的功能模块进行抽象,形成了一个个的组件,这些组件通过引用和注入的方式进行工作,感觉对于应用程序的扩展性上有很大的提高,消息组件的提出是因为它的不固定性,从小方面说,项目模块的发消息的方式可能是不同的,有过模块是email,有的是数据库,有的是短信;而从大的方面说,对于项目与项目来说,它们发消息的方式也可能不同,所以,把它抽象出来,就显得很必要了。对于一个消息来说,它的行为很固定,即发消息,Send,而考虑到网络阻塞问题,我们也同样提供了异常消息的发送,接口规范如下: /// /// Me...
阅读全文
摘要:回到目录事情是这样的,前台网站有些数据不希望每次都从数据库里读,所以,应该做个缓存,而引起缓存更新的入口来自网站的后台管理,而前台和后台被部署在不同的网站中,这时缓存的更新就成了问题,前台的缓存与后台的操作不能联系到一起,为了解决这个问题,我引入了WCF作为中间件,所以与数据库的操作,读,写都来自一个入口,那就是WCF,WCF用户告诉你是否从缓存取数据,所有缓存的数据也缓存在WCF中,OK,想法不错,下面来说一下具体的实现步骤。一 首先看一下结构图:注意看我的结构图,前台aop_cache和后台aop_cache_background项目都引用aop_cache_webservice项目,而它
阅读全文
摘要:回到目录看了传说中的弦哥对园子里.Net项目分层与文件夹结构大全(最佳架子奖,吐槽奖,阴沟翻船奖揭晓),我也来说说我的DDD架构吧,主要是看了微软NlayerApp之后,自己写的一个,以后将会应用到我的项目之中。架构说明:0-Modeling and Design:架构的UML层次图,我认为每个项目的架构都应该先有UML图,再是进行具体的代码设计1-Presentation:UI层,它的实现是多种的,你可以是B/s的webpage,web mvc,web api,也可以是C/s的winform,wpf等等2-Application:这一层是网络应用层,它可以进行邮件,短信等功能的实现3-Ser
阅读全文
摘要:回到目录上一讲介绍了DDD中的领域层,并提到下次要讲Unity,所以这篇文章当然就要介绍它了,呵呵,Unity是Microsoft.Practices中的一部分,主要实现了依赖注入的功能,或者叫它控制反转,对于控制反转(IoC)的文章我介绍了不少,Autofac,Castle等等,今天主要说一下Unity!在我的DDD架构项目中,各层间实现IoC使用的是Unity,因为考虑到AOP,cache等功能,所以就直接用Microsoft.Practices组件了,它真的很强大!这次的项目在业务上采用WCF实现,所以WCF业务与基础设施之间会有通信,而基础设施只是去实现Domain定义的功能,所以这两
阅读全文
摘要:回到目录再论Domain与Infrastructure在面向领域的设计中,领域层(Domain)实现上是位于最底层的,其它层有对它的引用,包括基础设施层(Infrastructure)也是去引用领域层的,我认为,这是对的,事实上,在Domain中会规定如何去进行数据持久化的操作,包括方法名,方法签名等等,而采用哪种架构去实现这种持久化的方法则是Infrastructure层需要做的,这种设计绝对是把领域,业务放在第一位的,完全符合Eric 的DDD。Domain.Core Layer & Domain Layer我们在进行软件设计时,一个习惯就是把仅供代码抽象出来,这是对的,也是符合标
阅读全文
摘要:回到目录规约(Specification)模式:第一次看到这东西是在microsoft NLayer项目中,它是微软对DDD的解说,就像petshop告诉了我们MVC如何使用一样,这个规约模式最重要的作用是实现了查询语句与查询条件的分离,查询语句在底层是稳定的,不变的,而查询条件是和具体业务,具体领域有关的,是易变的,如果我们为每一个领域的每一个新需求都写一个新的方法,那就会出现很多重复的代码,不利于程序的最终扩展!下面我们来看一个经典例子一个IOrderRepository的接口,定义了一个订单仓储 Order_Info GetOrder_InfoById(int orderI...
阅读全文
摘要:回到目录如果你想学好一样东西,一定要看高手是如何做的如果你想学好.net,一定要看.net framworks源代码如果你想学好分层结构,一定要去看petshop项目如果你想学好MVC,一定要去看dinner项目如果你想学好DDD,一定要去看Microsoft NLayerApp项目呵呵,今天主题是DDD,所以,我们主要看一下NLayerApp的项目结构,在微软架构师开发一个项目时,他的心中一定对自己系统的架构很清晰,这时,他会使用一定工具把它的思想写出来,以便更好的让开发人员看到。表现层如图:分布层服务层如图:应用层如图:领域层如图:基础设施层如图:事实上,我们在设计一个系统时,从架构师的角
阅读全文
摘要:回到目录最近被DDD吸引了阿,在这里感谢一下小佟,呵呵,领域驱动设计是个不错的东西,帮助我们把问题清晰化,这候对于复杂业务逻辑是很重要的,今天这一讲主要说一下DDD中的基础设施层(Infrastructure)是如何被我实现的。Infrastructure Layer:主要功能是对领域模块进行持久化的,在这个层中你需要把领域对象序列化到指定的元件中,可能是数据库,文件或者内存对象,当然它也要提供从物理元件取出数据到领域模型的功能,这是对应的。目前的DDD项目结果如下对于Infrastructure这个层我不去定义接口而是让它去实现Domain层的接口,即一切从领域出发,而Infrastruct
阅读全文
摘要:回到目录这几年,状态依旧不好,但在23点以后,状态还可以,所以,静下来,看点DDD,并把相关信息记载一下,今天是除夕,不过,我写文章时已经是大年初一了,呵呵,外面的炮声响亮,但我的内心很平静,也许是年龄大了,对于过年的感觉也已经淡化了吧,再或许是有些事情还放不在。任务与目标今年的任务挺多的,目标也确实有点大,压我的有点喘不过气来,对于年未,我们是放松的,因为一年的任何已经完成,目录也已经完成,所以是放松的;但当新的一年真的到来时,意味着你要去实现今年定的目标了,我们需要紧张起来了,需要向着那个目标去奋斗了,这种感觉是我喜欢的!失血模型失血模型简单来说,就是domain object只有属性的g
阅读全文
摘要:回到目录概念中的DDDDDD: 领域驱动设计,它是对面向对象的的分析和设计(OOAD,Object Orient Analysis Design)的一个补充,对技术框架进行了分层规划,同时对每个类进行了策略和类型划分。领域模型是领域驱动的核心 ,采用DDD的设计思想,业务逻辑不再集中在几个大型的类上,而是在大量相对小的领域对象上,这些类具有自己的状态和行为,每个类都是完成的独立的,并与现实领域的业务对象形成一种映射。基于DDD的架构设计,保证了系统的可维护性,扩展性和敏捷性,在处理复杂业务逻辑方面有着明显的优势!编程世界观的改变以下信息是从http://www.jdon.com/ddd.htm
阅读全文