我们的组织计划使用Grails来实现一个具有REST接口的复杂应用程序。鉴于以下情况,我对框架的可伸缩性感到关切:
书籍和网络上的大多数示例都显示了非常简单的应用程序,对独立的对象集进行CRUD操作。
当应用程序增长时,我恐怕会使用Grails特性的一个非常小的子集,因为脚手架、web流、ajax,甚至域类生成的DB模式都可能不完全符合我的应用程序的需求。
有没有人可以分享在这样一个应用程序中使用Grails的经验?
发布于 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是否能很好地扩展。很多人似乎都答应了。
发布于 2011-10-24 00:50:19
Twitter最初是用Rails发布的。最终,他们出现了可扩展性问题,不得不替换部分(他们选择用Scala来完成)。最近,他们用Java替换了Ruby/rails的所有其他部分,因为提高了效率,允许他们重新使用9/10的服务器。
那么问一下Ruby/Rails是否满足了他们的需求?
见鬼是的。他们很快就有了一种产品在市场上销售,员工可以使用他们所知道的一种语言,使他们能够到达那里。
后来,当他们有一桶钱来解决这个问题时,他们做到了。
对于Rails、Java和敏捷思维,我发现这是一个伟大的成功故事。
您将在Grails中找到一个类似的故事(它可能不太受支持,但随后将更接近于架构(J2EE),允许您在必要时进行扩展)。
发布于 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是一个很好的快速开始.
https://stackoverflow.com/questions/7869868
复制相似问题