Google App Engine 的应用程序的便携性如何?这些是否永远绑定在 GAE 上?
6 回答
如果不使用 Google 自己的 WebApp 框架,而是依赖更标准化的工具(我这里不是说 Django),那么与核心应用程序逻辑隔离并使可插拔/可交换的东西很少:
- 存储,这似乎是最烦人的部分,但如果你不使用 GQL 太多是可行的(数据存储 API 类似于可供 Python 尝试的足够多的其他 ORM);
- 身份验证,似乎很容易,但需要编写完整的后端;
- 内存缓存,memcache API 与 Memcached 有所不同(差异很小,所以这应该很简单,因为两个系统的操作是相同的);
- 应用程序启动,您必须编写自己的 WSGI 启动器(使用Werkzeug非常容易)。
在我看来 - 值得一试。
您可以使用 gae2django 将 AppEngine 应用程序转换为 Django 应用程序。
如本文所述 http://code.google.com/appengine/articles/pure_django.html
gae2django http://code.google.com/p/django-gae2django/
作为一名优秀的顾问,我会说答案是“取决于”。
首先,您始终可以在 SDK 中运行 GAE 项目。所以在那个程度上你是不受约束的。除此之外,这取决于您使用的其他 API。webapp 库与其他库非常相似,但我不认为它可以作为独立库使用;但是,GAE 也支持将 Django 作为 Web 框架,当然它也可以单独使用。
代码只是 Python。但是有些 API,比如数据 API,实际上是为了与谷歌云交互;您不能确定是否可以将任意 GAE 程序移动到另一个平台而无需返工。
如果你使用 Django 0.96,你可以在做一些小的工作后将你的代码移动到不同的主机上。您需要将模型从数据存储更改为另一个数据库。您将不得不停止使用 google 提供的 User 类和可能的其他 google 特定 API。
我已经将 Django 应用程序移植到 GAE 没有太多麻烦。
我已经为应用程序引擎(java)开发了几个月了。
从理论上讲,如果您坚持使用 JPA 或 JDO 等标准进行数据访问
,并且不使用任务队列等高级功能,那么
将您的应用程序移植到另一个环境应该不会有太大问题。
话虽如此,我经常发现自己使用低级别的 google api 来访问数据存储区以避免噩梦般的性能问题。如果您的应用程序设计具有模块化数据访问层,则可以在一定程度上减少此问题的副作用。
另一方面,如果我有一个应用程序在 app-engine 上运行顺利,我想不出任何理由将它移动到其他任何地方。