设计使用和不使用 Google App Engine 部署的应用程序
Posted
技术标签:
【中文标题】设计使用和不使用 Google App Engine 部署的应用程序【英文标题】:Designing an app to be deployed with AND without Google App Engine 【发布时间】:2013-05-18 20:44:06 【问题描述】:在我使用 Google App Engine 完成应用程序开发后,如果我需要在没有 App Engine 的情况下进行分发,它会变得多么容易?我唯一想到的是 GAE 有一些专有的 API 来使用数据存储。因此,如果我需要将我的应用程序作为不会与 App Engine 一起部署的 .war 文件(例如)交付,我需要做的就是首先重构任何获取/存储数据的代码,然后再构建 .war , 对?
我不知道交付成品网络应用产品的标准方法是什么 - 我只使用过 GAE,但我现在正在启动一个项目,但目前还不确定最终交付物的要求。
所以我想知道,如果我为 GAE 开发,那么转换会有多容易?
另外,在为 GAE 撰写文章时,我有什么可以做或考虑的事情,以针对我最终可能拥有的任何打包选项优化项目?
【问题讨论】:
【参考方案1】:只要您的应用不包含任何依赖于 Google App 引擎的元素,您就应该能够在任何地方部署,只要该位置可以支持 Tomcat 或 GlassFish 服务器。有时这需要您手动安装服务器,因此您必须阅读它。有很多 youtube 可以帮助您解决这个问题,只是尝试将您的问题分解为尽可能低的步骤。
我还建议使用像 spring 和 hibernate 这样的框架来帮助减轻头痛。他们需要一段时间才能理解,但如果你想在你的余生中编程,这些都是值得的。
【讨论】:
【参考方案2】:我不同意 Pbrain19。
GAE 数据存储与 SQL 完全不同,它有自己有趣的最终一致的事务行为。这意味着对于任何需要强一致性或事务的事物,您都必须使用适当的祖先来构建数据。这将对您的代码产生相当大的影响。
您还需要对数据结构进行非规范化(与 SQL 相比),以最大限度地降低数据存储成本并提高性能。您还可以在 SQL 中执行许多在 GAE 中无法执行的查询,您必须以解决此问题的方式构建您的应用程序。
一旦您执行了上述任何操作,您可能需要重建很大一部分应用程序。
您也不想使用 Spring,因为它会使您的实例启动时间非常痛苦。
因此,除非它是一个非常简单的 hello world 应用程序,否则重构并非易事 - 尤其是当您开始在任何数据建模中使用祖先时。
如果您使用的是 GAE 数据存储,我建议您不要尝试将您的应用设计为可移植的。
如果您使用 Cloud SQL,那么您在制作便携式应用程序时会更幸运。
【讨论】:
以上是关于设计使用和不使用 Google App Engine 部署的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
复制数据与 Google App Engine 上的多次搜索 - 设计决策
探索Google App Engine背后的奥秘- Datastore的设计
ImportError:没有名为 google_compute_engine 的模块
当我们将 Google Analytics 添加到 iOS 应用程序时,如何指定应该和不应该将哪些内容作为会话(而不是事件)进行跟踪