DDD与Grails

时间:2010-03-04 09:25:17

标签: grails domain-driven-design

我无法找到有关使用Grails执行Domain Driven Design(DDD)的任何信息。

我正在寻找任何最佳实践,体验笔记甚至开源项目,这些都是使用Grails的DDD的好例子。

7 个答案:

答案 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的限制和复杂性   框架“。

http://www.infoq.com/articles/klein-grailsquickstartguide

答案 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用户。