【问题标题】:Are Apps for the Google App Engine usable on other servers?Google App Engine 的应用程序可以在其他服务器上使用吗?
【发布时间】:2009-01-24 23:29:04
【问题描述】:

Google App Engine 的应用程序的便携性如何?这些是否永远绑定在 GAE 上?

【问题讨论】:

标签: google-app-engine


【解决方案1】:

有一些软件可以在 Google 之外运行 App Engine 应用程序,其中最著名的两个是 AppScaleTyphoonAE

【讨论】:

  • 有没有人真正设法让 AppScale 在生产环境中工作?当我们研究迁移到 EC2 时,我曾尝试过它,启动和运行并非易事,最终我们决定使用 Jetty 并重写 GAE 特定(DataStore、Memcache)代码。
【解决方案2】:

如果你不使用谷歌自己的 WebApp 框架,而是依赖更标准化的工具(我这里不是说 Django),那么与核心应用程序逻辑隔离并使其可插拔/可交换的东西很少:

  • 存储,这似乎是最烦人的部分,但如果您不过度使用 GQL(数据存储 API 类似于可供 Python 尝试的足够多的其他 ORM);
  • 身份验证,看似简单,但需要编写完整的后端;
  • 内存缓存,memcache API 与 Memcached 有些不同(差异很小,因此应该很简单,因为两个系统的操作是相同的);
  • 应用程序启动,您必须编写自己的 WSGI 启动器(使用 Werkzeug 非常简单)。

在我看来 - 值得一试。

【讨论】:

  • 是的,为了便于移植,存储可能是最难容纳的,其他一切都应该相对容易更换。
【解决方案3】:

您可以使用 gae2django 将 AppEngine 应用程序转换为 Django 应用程序。

如本文所述 http://code.google.com/appengine/articles/pure_django.html

gae2django http://code.google.com/p/django-gae2django/

【讨论】:

  • 只有当你首先在 django 中编写你的应用程序时才会起作用。 OP 没有提及 django。除了 django 之外,还有很多编写应用程序的方法
【解决方案4】:

作为一名优秀的顾问,我会说答案是“取决于”。

首先,您始终可以在 SDK 中运行 GAE 项目。所以在那个程度上你不受约束。除此之外,这取决于您使用的其他 API。 webapp 库与其他一些库非常相似,但我不认为它可以作为独立库使用;不过,GAE 也支持 Django 作为 Web 框架,当然也可以单独使用。

代码只是 Python。但有些 API,比如数据 API,实际上是为了与谷歌云交互;您不能确定是否可以将任意 GAE 程序移动到另一个平台而无需返工。

【讨论】:

    【解决方案5】:

    如果您使用 Django 0.96,您可以在进行一些小工作后将代码移动到不同的主机。您需要将模型从数据存储更改为另一个数据库。您将不得不停止使用 google 提供的 User 类和可能的其他 google 特定 API。

    我已经顺利地将 Django 应用程序移植到 GAE。

    【讨论】:

      【解决方案6】:

      我已经为应用引擎 (java) 开发了几个月了。
      从理论上讲,如果您坚持使用 JPA 或 JDO 等标准进行数据访问
      并且不要使用任务队列等高级功能,你不应该有太多
      将您的应用移植到另一个环境时出现问题。

      话虽如此,我经常发现自己使用低级别的 google api 来访问数据存储区以避免噩梦般的性能问题。如果您的应用设计具有模块化数据访问层,则可以在一定程度上减少此问题的副作用。

      另一方面,如果我有一个应用程序在 app-engine 上运行顺利,我想不出任何理由将它移到其他任何地方。

      【讨论】:

        猜你喜欢
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 1970-01-01
        • 2016-11-02
        相关资源
        最近更新 更多