欢迎光临汤雪华的博客

一个人一辈子能坚持做好一件事情就够了!坚持是一种刻意的练习,不断寻找缺点突破缺点的过程,而不是重复做某件事情。
posts - 141, comments - 2102, trackbacks - 0, articles - 0
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 - DDD 案例分析

摘要:邮箱核心业务场景: 发邮件 收邮件 查看邮件 邮箱业务我们关注的核心信息 草稿箱 收件箱 已发送邮件 未读邮件 重要邮件 垃圾邮件 已删除邮件 核心领域模型文字版 共2个模型,如下: 邮件(Mail,聚合根): ID 标题 内容 附件 是否重要:是、否 发送人邮箱地址 收件人邮箱地址列表(支持多个, 阅读全文

posted @ 2019-07-04 16:35 netfocus 阅读 (895) | 评论 (0) 编辑

摘要:浅谈12306核心模型设计思路和架构设计[推荐] DDD部分核心概念的个人理解 DDD CQRS架构和传统架构的优缺点比较[推荐] DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考 ENode 2.6 架构与设计简介以及全新案例分享[推荐] ENode框架Conference案例分析系列 阅读全文

posted @ 2016-02-17 23:15 netfocus 阅读 (5574) | 评论 (6) 编辑

摘要:前言 春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为是针对商品的。当用户发起购买行为时, 阅读全文

posted @ 2016-02-12 23:41 netfocus 阅读 (37873) | 评论 (88) 编辑

摘要:前言本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果。我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东西。我觉得,任何设计的结果可能看起来很高大上,一张图即可,但背后的思考,才是更有价值的东西。本篇文章想... 阅读全文

posted @ 2015-07-06 22:15 netfocus 阅读 (3672) | 评论 (6) 编辑

摘要:前言Conference案例是使用ENode框架来开发的。之前我没有介绍过ENode框架是如何启动的,以及启动时要注意的一些点,估计很多人对ENode框架的初始化这一块感觉很复杂,一头雾水。所以,本文想简单介绍一下在做一个实际项目时,我们该如何初始化ENode。使用ENode开发的项目的顶层宿主工程... 阅读全文

posted @ 2015-06-30 23:24 netfocus 阅读 (2710) | 评论 (2) 编辑

摘要:前言前面的文章,我介绍了Conference案例的业务、上下文划分、领域模型、架构,以及代码整体流程。接下来想针对案例中一些重要的场景,分别做进一步的分析。本文想先介绍一下Conference案例的核心业务场景 - 订单处理减库存的设计。下单以及订单处理流程描述下单过程预订者浏览某个已发布的会议;进... 阅读全文

posted @ 2015-06-30 00:38 netfocus 阅读 (4897) | 评论 (19) 编辑

摘要:项目源代码地址:https://github.com/tangxuehua/conference 阅读全文

posted @ 2015-06-28 11:54 netfocus 阅读 (4623) | 评论 (5) 编辑

摘要:前言前一篇文章介绍了Conference案例的架构设计,本篇文章开始介绍Conference案例的代码实现。由于代码比较多,一开始就全部介绍所有细节,估计很多人接受不了,也理解不了。所以,我先进行一次QuickStart的介绍,即选取某个简单典型的场景从前到后过一下每个环节。这样大家就能够快速对代码... 阅读全文

posted @ 2015-06-27 16:48 netfocus 阅读 (5111) | 评论 (30) 编辑

摘要:Conference架构概述先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的。Conference后台会议管理:http://www.enode.me/conferenceConference前台预定座位:http://www.enode... 阅读全文

posted @ 2015-06-24 12:52 netfocus 阅读 (4131) | 评论 (14) 编辑

摘要:前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下:业务描述Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台。这个系统的用户有两类:1)客户,可以创建和管理会议;2)会议座位预定者,可以预订会议座位。具体的关键业务描述如下:... 阅读全文

posted @ 2015-06-22 00:55 netfocus 阅读 (4298) | 评论 (26) 编辑

摘要:前言ENode是一个应用开发框架。通过ENode,我们可以方便的开发基于DDD+CQRS+EventSourcing+EDA架构的应用程序。之前我已经写了很多关于ENode的架构以及设计原理的文章,但是因为没有和具体的例子结合来进行分析,所以可能很多人还是无法理解ENode的功能和设计。所以,接下来... 阅读全文

posted @ 2015-06-21 00:34 netfocus 阅读 (3335) | 评论 (7) 编辑

摘要:上周六很高兴参加了博客园组织的DDD分享交流会,我有幸给参会者分享了我对DDD的一些理论理解、案例分析,以及最后简要介绍了一下ENode框架。这次分享重点分享了几个DDD的小型建模案例,并在会上与大家进行了讨论。为了推广DDD,吸引更多的人去了解DDD,我把PPT转成pdf在博客园分享下,方便其他人... 阅读全文

posted @ 2015-05-18 23:18 netfocus 阅读 (2839) | 评论 (3) 编辑

摘要:问题背景Conference案例,是一个关于在线创建会议(类似QCon这种全球开发者大会)、在线管理会议位置信息、在线预订某个会议的位置的,这样一个系统。具体可以看微软的这个项目的主页:http://cqrsjourney.github.io。然后我们设计了一个Conference聚合根,对应领域中... 阅读全文

posted @ 2015-05-06 23:41 netfocus 阅读 (2800) | 评论 (8) 编辑

摘要:关于借书场景的领域建模,我从以下几个方面进行分析:分析模型静态结构我分析一个领域模型的静态结构的思路一般是:先找出我们需要关心的对象,对于借书这个场景,我们关心的有:1. Account(账号):Id(账号唯一标识,自动生成), Number(卡号), Owner(账号当前拥有者用户信息), Bor... 阅读全文

posted @ 2013-04-08 22:51 netfocus 阅读 (5659) | 评论 (5) 编辑

摘要:前言ps: 由于本篇文章是我早期所写,文中的思想已经和我现在的想法完全不同了。目前我所理解的领域模型,是被调用的,应用层使用领域模型,调用领域模型中的各种构造块完成用例场景。另外,关于银行转账,我们还可以使用另一种更好的实现方案,即最终一致性的方案,通过事件驱动的流程的方式来实现转账。具体实现见EN... 阅读全文

posted @ 2011-04-17 21:53 netfocus 阅读 (10316) | 评论 (27) 编辑