有研究领域驱动设计的么 DDD,感觉很难理解里面的概念,有好书推荐么?

2017-09-21 15:28:51 +08:00
 me15000
.net 领域驱动设计
涉及很多知识点
10202 次点击
所在节点    程序员
20 条回复
pming1
2017-09-21 15:31:47 +08:00
看 abp 项目和文档
hantsy
2017-09-21 15:45:41 +08:00
这方面经典著作不少。。。
Lenhoon
2017-09-21 17:04:35 +08:00
昨天三面就被问到这个,准备学习下
hantsy
2017-09-21 21:43:59 +08:00
1. Eric 的 DDD 一书是经典,虽然过去十几年,但它是 DDD 鼻祖。国内已经出版多次,有中文版本,和英文版本。
2. InfoQ 上有一个 DDD Quickly,同样有中文版本,免费。
3. Vaughn Vernon 的几本书对 DDD 进行延深,也是经典读物(我还没读过),https://vaughnvernon.co/?page_id=168,不过此人博客文章可以仔细阅读。
4. 作为 DDD 的延深阅读,可以了解 CQRS 和 Event Sourcing, 实现 Microservice 必备知识,http://cqrs.nu/ 这个网站不错

DDD 经典例子:
1. Eric 的 DDD 原书的例子是一个 Spring 程序。
2. Oracle 官方 Java EE 7 演示程序 https://javaee.github.io/cargotracker/,用 Java EE 7 重新实现了 Eric 原书例子。
3. https://github.com/VaughnVernon,Github 上有原书 IDDD ( Implement Domain Driven Design )的 Java 和 C# Demo。
hantsy
2017-09-21 22:02:24 +08:00
另外微软有一本 CQRS Journey 也不错,可以免费下载,这个我没仔细看。
qinxg
2017-09-21 22:12:30 +08:00
跟你一样有这个烦恼
WispZhan
2017-09-21 23:21:17 +08:00
DDD 思想是一样的,无所谓.NET 还是 JAVA。目前比较系统的书就几本 《领域驱动设计 软件核心复杂性应对之道》和《实现领域驱动》

要么就是 Youtube 上的 视频。

---
另外我找工作 Java 方向想找个使用 DDD 的团队好难。
WispZhan
2017-09-21 23:24:28 +08:00
@WispZhan 另外上面那两本书里或者说 DDD 概念里很多知识点都是 Martin Fowler 书或者 Blog 里的内容。
WispZhan
2017-09-21 23:27:55 +08:00
me15000
2017-09-22 09:22:45 +08:00
@WispZhan 可以加盟创业型公司,给他们用上 DDD
me15000
2017-09-22 09:24:20 +08:00
@pming1 感谢提醒,已经找到了,之前也看到 abp 还没弄懂是什么,现在算是明白了,这个就是基于 DDD 的框架

http://www.cnblogs.com/farb/p/ABPTheory.html
hantsy
2017-09-22 10:07:22 +08:00
@WispZhan 在 DDD 方面 Martin Fowler 属于后知后觉。
hantsy
2017-09-22 10:12:42 +08:00
@WispZhan 国内没多少公司会去用 DDD 思想设计软件的,大多数虽然用 Java,C #,连基本的 OOP 概念不够深入。在面对一个项目时,什么业务一上来都能直接与 RDBMS 扯上关系,怎么可能去实现。
hantsy
2017-09-22 10:15:30 +08:00
像我上面提及的几个例子,本身业务都不复杂,如果给一些人去看,我可能会听到一句话,“建几个表就解决了,搞得那么复杂,根本就看不懂”。
pming1
2017-09-22 10:26:04 +08:00
@me15000 不客气,刚好自己也在看~
WispZhan
2017-09-22 10:32:07 +08:00
@hantsy 后知后觉也没什么,经验总结已经足够了。Eric Evans 也是 引用了不少 内容。只能说 Martin 到 DDD 应该是水到渠成,顺水推舟了。只是 Eric 总结的这整套软件设计方法更完善。
最近刚刚准备把 Eric 的 DDD 里引用的《分析模式》拿来读一读。可惜发现中文版已经绝版了。只能硬着头皮看看原版或者收二手了。
---
确实是这样,今年刚刚到深圳,之前一直在武汉。还是从嵌入式转到 Java 的,目前大概 2 年经验吧。目前面了好多公司,也在几家公司呆过试用期,都是试用期没多久就走了。
原因就是,你说的这些现象。目前接触到的大部分人,不管是什么工作经验的人,基本上就是拿着需求就上代码,对 OOP 概念的理解,也是很糟糕。
特别是最近去的一家公司,居然还是上的微服务,然而服务边界一团糟。关键是强度又大,还天天加班,于是前几天离职了
---
真的是感同身受
hantsy
2017-09-22 10:44:04 +08:00
DDD 更多是理论,只是比 SOLID 具体一些,与 GOF,Patterns of Enterprise Application Architecture 相比,站在一个更高角度分析问题。

我从来不相信用一个具体所谓的 DDD 框架 就能够用好 DDD,它必须是经历长期实践的结果,这些框架永远不会教你去怎么理解具体业务中 Domain,怎么去划分 BoundedContext。同理,我也不相信,用 Spring Cloud 的公司或者个人就懂了 Microservice。

如果要将这些软件开发理论与实践和工具分层,分级(个人观点):
1. SOLID
2. DDD
3. GOF,Patterns of Enterprise Application Architecture,Refactoring 等
4. Framework,Libraries 等
5. 具体的 API

国内就看到最多的人,什么框架,理论等,在一些人眼里,都只是 APIs。

甚至有一些 [ XXX 内幕] , [XXX 微服务架构] 的书籍,满纸都是 APIs,贴代码,不讲其背后的设计理念(写书的人很多我相信没什么相关方面的实践),一些书不如叫 [XXX API 中文解释] 更贴切。
min
2017-09-22 15:41:22 +08:00
ddd 本身概念就比较杂而且庞大,我感觉比较好的学习方式不是去找一个两个好的资料,而是把你能找到的资料都快速通读一遍,反而会有助于理解。

举个例子说微软的 cqrs journey 个人感觉就写得不咋地,万一在上面花很多时间,反而误入歧途。
hantsy
2017-09-22 20:53:43 +08:00
@WispZhan 国内大多数公司做项目都这样,乱七八糟的,习惯了就好了。

有些公司上级技术管理层大都也就写了两年程序,本来肚子没什么水,就开始享受领导别人的乐趣,这样的公司那来的技术氛围。

有些技术出身的创始人开的公司对于技术人员可能还是不错的,但对于一些混日子,天天加班讨好老板,写工作报告写得天花乱坠的人可能恰好相反。

但再好的公司,一旦大了,什么鸟都有,即使那些在你心中曾经是好的公司,何况我们几千年官僚文件传统还在。刚开始工作的那几年,都是激情四射,总想把工作做得尽善尽美。结果基本上都是吃力不讨好,你想做得太好,一群人会袖手旁观的看着你做。要么就 V 站常见的那句话,”不要坑队友“,上什么新技术,搞什么模式,能跑就行了,对他们来讲又要面临学习成本。

有机会还是好好挑选一下公司吧,不要工资放在第一位,虽然鱼龙混杂,还是可以发现一些不错的公司。
WispZhan
2017-09-22 22:40:55 +08:00
@hantsy 非常赞同,受教了。感觉你是我在 V 站看到三观最正的人之一了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392565

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX