我无法找到有关使用Grails执行Domain Driven Design(DDD)的任何信息。
我正在寻找任何最佳实践,体验笔记甚至开源项目,这些都是使用Grails的DDD的好例子。
答案 0 :(得分:35)
答案 1 :(得分:7)
目前我不知道任何与Grails和DDD相关的书籍。就个人而言,我不会只专注于Grails。领域驱动设计是一种思维方式,一种组织应用程序和代码的方式。因此,它不受技术约束。
MVC范例不认为模型是数据访问对象。事实上,它甚至没有提到数据访问层,因为它被理解为在模型下面/封装。当尝试将DDD与基于ActiveRecord模式的MVC技术结合使用时,这会引入一些陷阱,ActiveRecord模式将域逻辑和数据访问代码合并到模型中。它工作得非常好......尤其是在具有很少域逻辑的简单应用程序中,没有真正的区别。但是当事情变得更复杂时,应该记住 model!= data access 。
就个人而言,我会考虑提高对DDD的理解:
干杯!
答案 2 :(得分:3)
在阅读完这个问题之后,我对DDD和Grails都进行了一些阅读。我不确定grails是否意味着支持DDD。
但是,我已阅读Grails确实支持DDD Grails and DDD
的一些帖子但我认为Grails主要支持Active记录模式Explained here
对于Grails,每个域对象都是一个聚合根,这本身就是针对DDD的。
Grails Aggregate Root Workaround
DDD Java Implementation,我们可以使用类似的Grails DDD实现示例吗?
很多像存储库这样的东西可以通过Grails轻松实现,我非常喜欢它,并认为它可以提高生产力。
然而,当人们说Grails和DDD齐头并进时,我有疑虑。
答案 3 :(得分:2)
DDD是与技术无关的组织软件的方式。
是DDD可以使用Grails实现。
Sudarshan你已经指出Grails没有处理聚合根的概念。您使用过的任何框架都有聚合根的概念吗?框架本身不应该有DDD的概念(除非它是一个DDD框架,但我还没有遇到过DDD框架。)
这是一个想法,应该与技术无关,因此应用程序开发人员需要合并这些概念。在Grails中,使用静态方法(如Person.get(1)或Person.findByName(“name”))区分实体和聚合根有点困难,但这不是重点。因此,开发人员有责任通过其他方式区分这一点,例如使用惯例。
答案 4 :(得分:0)
我发现这篇文章可能有些兴趣。我引用了主线。
“DK:Grails'动态和可扩展的脚手架使其易于应用 DDD的原则,没有一些DDD的限制和复杂性 框架“。
答案 5 :(得分:0)
www.infoq.com/articles/ddd-in-practice
“像Spring和面向对象(ROO),Hibernate和Dozer这样的框架有助于设计和实现域模型。支持DDD实现的其他框架是JMatter,Naked Objects,Ruby On Rails,Grails和Spring Modules XT框架“。
grails.org/doc/latest/guide/introduction.html
“像Rails,Django和TurboGears这样的动态框架为更加现代的Web应用程序思维方式铺平了道路.Grails构建于这些概念之上,大大降低了在Java平台上构建Web应用程序的复杂性。然而,它是通过构建已经建立的Java技术(如Spring和Hibernate)来实现的。“
对Spring来说很有用,也适用于Grails。
我希望有一天社区能为我们所有人提供用Grails编写的ddd-sample。
dddsample.sourceforge.net
//垃圾邮件mech不允许我在一个帖子中放置两个以上的链接,soz
答案 6 :(得分:-3)
尝试阅读Grails in Action,它在第3章中。它是通过让您处理示例项目,甚至显示如何从头开始构建它以及添加插件等的逐步过程来呈现的。我强烈推荐这本书,非常有价值的参考。
请注意,我也是一个新的grails用户。