首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Grails是否适合复杂的应用程序?

Grails是否适合复杂的应用程序?
EN

Stack Overflow用户
提问于 2011-10-23 22:57:33
回答 4查看 1.2K关注 0票数 4

我们的组织计划使用Grails来实现一个具有REST接口的复杂应用程序。鉴于以下情况,我对框架的可伸缩性感到关切:

  • 域类肯定会大量使用多态性。我听说人们在Grails中有继承问题,例如因为JIRA的这个问题
  • 对象树将保存在数据库中。在GORM中,这可能是这样的: 类节点{静态def hasMany =子节点:节点} 我想我们可以利用级联操作来管理依赖关系,但我不确定在这种情况下它将如何工作。
  • 数据库应该增长到存储数百万个对象,并且应该与Oracle、Server和PostgreSQL一起工作。依靠Grails映射来实现这种免费兼容性有多现实呢?
  • 我们计划利用自定义域约束来检查域对象的一致性。但我觉得在验证器中所能做的事情是有限的(例如,我不确定是否可以加载一组其他对象)。
  • 在服务中实现的业务逻辑将是多线程的。

书籍和网络上的大多数示例都显示了非常简单的应用程序,对独立的对象集进行CRUD操作。

当应用程序增长时,我恐怕会使用Grails特性的一个非常小的子集,因为脚手架、web流、ajax,甚至域类生成的DB模式都可能不完全符合我的应用程序的需求。

有没有人可以分享在这样一个应用程序中使用Grails的经验?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-24 18:24:20

域类肯定会大量使用多态性。我听说人们在Grails中有继承的麻烦,例如因为JIRA上的这个问题。

Grails 2.0中的继承得到了改进。请参阅关于抽象继承的部分。报告的JIRA错误中提到的问题可以通过声明该属性为临时属性来解决。

对象树将保存在数据库中。在GORM中,这可能是这样的:

自我参照关系很好。有关更多信息,请参见“行动中的Grails”第3章。

数据库应该增长到存储数百万个对象,并且应该与Oracle、Server和PostgreSQL一起工作。依靠Grails映射来实现这种免费兼容性有多现实呢?

Grails构建在Hibernate之上,Hibernate是一个企业质量ORM层,用于各种大型J2EE应用程序。根据您正在运行的查询类型,您可能需要在该级别使用标准并对其进行调整,但是Grails没有提供任何固有的限制来阻止它的扩展。

我们计划利用自定义域约束机制来检查域对象的一致性。但我觉得在验证器中所能做的事情是有限的(例如,我不确定是否可以加载一组其他对象)。

您可以使用进行跨字段验证。您还可以定义自己的自定义验证器类

在服务中实现的业务逻辑将是多线程的。

建议不要将状态存储在服务中。,但您可以在多线程操作中使用它们,因为有不同的可用范围。当然,控制并发访问的责任由您来承担。

我们的组织计划使用Grails来实现一个具有REST接口的复杂应用程序。

REST接口在Grails中非常有趣和容易。见Grails在行动中第11章或开始Groovy和Grails从新手到专业人员第9/13章。

Grails是建立在经过验证的J2EE技术(如春天Hibernate )之上的。虽然“开箱即用”可能只会带您到目前为止,但框架可以在不同级别上进行配置,以满足您的需求。因此,您本质上是在问J2EE是否能很好地扩展。很多人似乎都答应了

票数 8
EN

Stack Overflow用户

发布于 2011-10-24 00:50:19

Twitter最初是用Rails发布的。最终,他们出现了可扩展性问题,不得不替换部分(他们选择用Scala来完成)。最近,他们用Java替换了Ruby/rails的所有其他部分,因为提高了效率,允许他们重新使用9/10的服务器。

那么问一下Ruby/Rails是否满足了他们的需求?

见鬼是的。他们很快就有了一种产品在市场上销售,员工可以使用他们所知道的一种语言,使他们能够到达那里。

后来,当他们有一桶钱来解决这个问题时,他们做到了。

对于Rails、Java和敏捷思维,我发现这是一个伟大的成功故事。

您将在Grails中找到一个类似的故事(它可能不太受支持,但随后将更接近于架构(J2EE),允许您在必要时进行扩展)。

票数 7
EN

Stack Overflow用户

发布于 2011-10-24 09:18:21

(1)可以与类一起工作。不是最好的解决方案,但可能会工作到您需要多重继承。毕竟,你不必处理与Grails的那种关系。

(2)取决于你需要什么。Grails和Hibernate 支持树映射.顺便说一句,如果你不知道它应该如何表现,这是一个迹象,你将需要手工一些复杂的行为无论如何。

(3)确实如此。我们在DB2、MySQL、hsql和Postgre中确实有数十万条记录。它已经被时间证明是冬眠了。

(4)是的,最好不要在验证器中对DB进行任何查询--至少是通过GORM,因为它将flush()当前不一致的会话。不过,我相信您仍然可以在其中使用SQL或withNewSession{}

(5)我认为服务中的多线程没有任何问题。您可以很好地控制服务实例化,就像请求作用域服务可以使用Singleton服务(如果需要一个Singleton服务)一样,后者的编写完全尊重并发线程。

是的,当市场时间很重要的时候,Grails是一个很好的快速开始.

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7869868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档