谷歌应用引擎上的Grails

12

grails和google app engine部署的当前状态如何?我对app engine还不熟悉,但想知道是否值得去探索。以下是一些具体问题:

  1. 最新的插件有什么限制吗?还是它与所有gorm功能都可以无缝配合?
  2. grails应用程序启动时间高会有什么问题。在实际场景中(使用典型的小规模和大规模应用程序),情况如何?
  3. 其他grails插件(如shiro,joda time,nimble等)怎么样?我想它们可能不太兼容。因此,直接使用这些库才是更好的选择。
  4. 如果决定放弃google-app作为部署选项,切换到常规环境有多容易?JPA支持确保与其他传统数据库的兼容性吗?

不确定还有哪些主要问题...可能这是进行良好讨论的基础。
谢谢。


1
截至10天前,另一位用户得出结论,Grails在GAE上并不是很适合。请查看他的答案以获取详细信息:https://dev59.com/L07Sa4cB1Zd3GeqP2EIt。 - David Underhill
谢谢提供链接。我看到有人投票支持这个问题并将其收藏,但是没有任何Grails经验丰富的人发表评论。我了解到Shiro(不是插件)已经与GAE兼容,并且其他库也在做类似的努力。我更加好奇的是,Grails针对GAE的插件是由Grails的关键人物Graeme Rocher开发的。已经有20人投票支持它,所以人们正在使用它。也许我应该查看一下Grails邮件列表。 - bsr
1个回答

2

我从grails邮件列表中收到了一些好的回复,结论与David的评论相同。请查看线程这里

以下是几个相关的回复:

来自Tomas Lin:

如果你真的想在App Engine上构建项目,我建议你去研究一下Gaelyk。它是从头开始以App Engine为目标引擎构建的,因此可以避免由于Spring和Hibernate导致的长时间加载问题。新引入的插件机制保证了您的Gaelyk应用程序可以在GAE上扩展并能够正常工作。

Gaelyk有自己的本地实体持久化DSL,比基于App Engine的JPA/JDO抽象更加简洁。

我目前在App Engine和Grails中看到了很多HardDeadlineExceeded异常。它现在并不适合与Spring很好地配合使用。希望随着Groovy、Grails和Spring / Google合作推出的后续版本的发布,这种情况会得到改善,但我不认为Grails在GAE上已经可以投入生产使用。

即使是在Gaelyk中,也有慢速性能的问题报告。因此,想象一下在更大的Grails堆栈中可能会出现的困难。

应用引擎自带基于GMail账户的用户/安全管理系统。如果您只想提供管理员/非管理员实现,则支持在应用程序配置中进行设置。无法评论Shiro。

请注意,App Engine的主要限制之一是无法编写文件,因此即使是Spring中的基本文件上传也会出现问题,因为默认机制会写入临时文件。我认为,大多数插件在不深入挖掘其代码并进行更改的情况下可能无法立即正常工作。

我认为这里最大的问题是缺乏对本地JDBC的支持。 JPA的支持不如纯JDBC GORM好,例如命名查询可能无法立即正常工作,需要进行改装。如果您想使用最新和最先进的Grails部分,考虑其他托管解决方案可能是值得的。

来自Aaron Eischeid

1. GAE插件和JPA-GORM插件组合起来不能无缝地获得所有GORM功能。尽管您应该获得基础功能,如.save()、.delete()和可能的.list(),但动态查找等等都将无法使用(至少目前是这样)。我可能完全错了,但我认为大部分/全部依赖Hibernate的功能都将无法使用或被替换为其他内容(因为它在底层依赖于SQL,而GAE目前没有基于SQL的数据库...),因此例如任何标准生成器都无法使用。对我来说不清楚您可以在对象上做多少点钻研。例如,不确定您是否可以执行以下操作:

def b = new Book() def stores = b.authors.publishers.bookstores

需要一些指导的地方是如何在领域类中使用JPA。我相信有很好的信息可以找到,但我还没有找到。

  1. 不确定

  2. 包括领域类或操作当前领域类的grails插件,由于您必须以不同的方式构造领域类以与JPA兼容,因此可能会出现问题,这是必要的,因为Google Datastore并非像关系型数据库那样。另一方面,您可以使用Google内置的安全性,因此您不一定需要像Acegi或Shiro这样的插件。

  3. 这可能归结为您可以在控制器和服务中使用不同级别的GORM以及定义领域类的不同方法。除非JPA与SQL数据库一样与Googles Datastore兼容,否则某些重构似乎是不可避免的。如果JPA可以像这样移动,那么转移应该很容易,但是通过使用JPA-GORM,您放弃了一些您可能希望拥有的东西,如果您没有从GAE中受益,则可能不会受益。

渴望听取他人的意见,

Aaron


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接