01 2011 档案

摘要:根据wikipedia中关于“事件”的描述,“事件”可以被看成是“状态的一次变化”。例如:当一个客户购买了一台汽车,汽车的状态就从“待售”转变为“已售”。汽车销售系统则把这种状态的改变看成是一次事件的产生、发布、检测以及被更多其它应用程序所使用的过程。对于CQRS架构的应用程序而言,事件产生于领域模型,并由领域模型发布事件同时由领域模型首次捕获并处理,因此,我们称之为领域事件(Domain Events)。在Apworks开发框架中,与领域事件相关的代码都被定义在Apworks.Events命名空间下。请使用下面的步骤为TinyLibraryCQRS解决方案添加领域事件。在 Solution 阅读全文
posted @ 2011-01-26 16:10 dax.net 阅读(5471) 评论(13) 推荐(2) 编辑
摘要:由于事件溯源(Event Sourcing)的需要,领域事件需要被保存到外部的存储系统中。由于事件本身描述了在特定对象上所发生的事情,因此,为了能够跟踪对象状态的变化过程以获得Event Audit的能力,我们总是将事件的数据保存在存储系统中,而从来不去删除它们。或许你会认为,这样做有点极端,时间长了,存储系统中的数据量将变得非常庞大。遇到这种情况,你需要引入备份和归档策略,而不是直接将过期的数据删除,因为,存储成本是便宜的,但数据却是有价值的。对于一些生命周期比较长的领域对象而言,发生在它们身上的事件数量会随着时间的推移而增大,甚至会变得巨大。于是,通过使用这大量的事件数据来重建领域模型将变 阅读全文
posted @ 2011-01-26 15:08 dax.net 阅读(3657) 评论(7) 推荐(1) 编辑
摘要:领域模型是应用程序的核心,它包括了领域对象、状态、方法、事件、业务逻辑以及对象之间的关系。现在,我们来为Tiny Library CQRS创建一个领域模型项目。在 Solution Explorer 下,右键单击TinyLibraryCQRS项目,单击 Add | New Project… 菜单,这将打开 Add New Project 对话框 在 Installed Templates 选项卡下,选择 Visual C# | Windows,然后选择 Class Library ,确保所选的Framework版本是.NET Framework 4,在 Name 文本框中,输入TinyLibr 阅读全文
posted @ 2011-01-26 15:07 dax.net 阅读(4129) 评论(2) 推荐(0) 编辑
摘要:在Apworks框架发布Alpha版本的时候,我已经针对其开发案例:Tiny Library CQRS写了Walkthrough文档,地址是:http://apworks.org/custom/documents/wlkthr_BuildAppsUsingApworks/。为了走国际化道路,这篇文章是全英文的,社区里有不少网友表示难以理解。趁着这几天不算很忙,我抽空将其又翻译回中文,并加入更多的批准内容,供爱好DDD、CQRS和架构设计的朋友阅读参考,也希望大家能够积极参加讨论。简介Apworks是一套应用程序开发框架,软件架构师和开发人员可以使用这套开发框架开发出面向领域(Domain-Ce 阅读全文
posted @ 2011-01-26 15:05 dax.net 阅读(7273) 评论(5) 推荐(3) 编辑
摘要:今天整理磁盘,发现了我以前在DOS下编写的一些小软件,于是萌发了一种将其发布到博客以表纪念的想法。纯粹是为了回忆和纪念,正如我们会经常回忆那些80后所看的经典动画片、所吃过的零食那样,当我看到这些曾经为之振奋而充满激情的“作品”时,不免会回想起当时写这些软件时的情景,进而感叹:时间过的真快,软件技术发展得真快。这些软件基本上是基于Quick Basic和C/C++编写的,BASIC语言嘛,是我的入... 阅读全文
posted @ 2011-01-19 21:27 dax.net 阅读(6563) 评论(56) 推荐(27) 编辑
摘要:这个问题来源于Apworks应用开发框架的设计。由于命令与查询职责的分离,使得基于CQRS体系结构风格的应用系统的外部存储系统的结构变得简单起来:在“命令”部分,简单地说,只需要Event Store和Snapshot Store来保存Domain Model;而“查询”部分,则又是基于事件派送与侦听的系统集成。之前我也提到过,“查询”部分由于不牵涉到Domain Model,于是,它的设计应该随... 阅读全文
posted @ 2011-01-19 12:34 dax.net 阅读(10221) 评论(4) 推荐(6) 编辑
摘要:有不少网友仍然对CQRS与事件溯源(Event Sourcing)不是很了解,对经典的应用系统架构与CQRS架构之间的差别没有一个大概的认识。本文基本上摘自Greg Young的CQRS Documents一文(由daxnet本人翻译并做了简要的注释),希望能够对应用系统架构的爱好者有所帮助。【注:本文主体内容节选并翻译自Greg Young的CQRS Documents。如需查看原文,请单击此处】一、经典的应用系统结构在了解基于领域驱动设计(Domain Driven Design, DDD)的应用系统之前,首先让我们了解一下经典的应用系统结构。这种经典的应用系统结构往往被认定为设计与开发分 阅读全文
posted @ 2011-01-06 19:50 dax.net 阅读(18601) 评论(3) 推荐(8) 编辑
摘要:领域仓储(Domain Repository)与事件存储(Event Store)是CQRS体系结构应用系统中C部分(Command部分)的重要组件。虽然都是存储机制,但两者有着本质的区别:领域仓储是属于领域层的,而事件仓储则是属于基础结构层的。领域模型产生事件,领域仓储负责保存、发布事件,并通过事件序列重塑领域模型。由于领域仓储的存在,使得“内存领域模型(In-memory Domain)”成为可能。在上文中我已经对对象的状态做了一些介绍,通过这些介绍我们能够了解到,在应用系统中,是领域事件导致了对象状态的变化,于是,我们只需要把这些领域事件按顺序记录下来,我们就有能力将领域模型还原到任何. 阅读全文
posted @ 2011-01-04 19:45 dax.net 阅读(6062) 评论(4) 推荐(2) 编辑

点击右上角即可分享
微信分享提示