【问题标题】:How to design an extensible CMS for Google App Engine?如何为 Google App Engine 设计可扩展的 CMS?
【发布时间】:2009-12-15 13:09:22
【问题描述】:

我喜欢 CMS 的可扩展性。您可以上传一些代码(通常是 PHP),从 CMS 管理面板授权它并运行。

我想知道在 Google App Engine 中是否可以。我还没有检查 Google App Engine 的现有 CMS 的可扩展性,但是如果它们中的任何一个支持插件,我想知道它们是如何做到的,以及它们是否只是 JS 插件,或者它们是否支持 Python/Java插件也是。

【问题讨论】:

    标签: google-app-engine plugins content-management-system extensibility


    【解决方案1】:

    来自 Google 的 Nick Johnson 写了一整篇关于如何编写 blog system for app engine 的博文系列。如果它不能满足您的要求,我相信您可以对其进行扩展,但对于大多数人来说,通常一个博客系统对于 CMS 来说就足够了。

    【讨论】:

    • Nick Johnson 尚未达到“可扩展性”部分,但这是他表示将添加的功能之一
    【解决方案2】:

    我没有公开的示例可以指向(抱歉),但我可以确认可以为 App Engine 项目创建 Python 插件。几个月前我完成了一个类似这样的项目。事情的症结归结为一行python:

    exec plugincode in someDict
    

    'plugincode' 上面是一个字符串,其中包含一些要执行的 python 代码,而 someDict 是一个全局字典,可以在其中执行它。这可以说比使用 eval() 更干净。在我们的例子中,全局字典包含插件代码用来与系统通信的对象的实例。我想不出这种(或类似的)方法有任何重大限制。例如plugincode 可以声明一个类,并将该类的实例注册为回调处理程序等。

    在我们的例子中,我们将插件代码存储在数据存储中,并在适当的时间(例如,当应用实例启动时)加载它。

    【讨论】:

      【解决方案3】:

      实际上,我认为在 App Engine 应用程序中支持插件没有概念上的问题。例如,在 Java 上,您可以从数据存储或内存缓存(在应用程序初始化阶段)将插件 jar 提取到内存中,然后根据需要使用自定义类加载器来加载插件类)。实际上,您甚至可以从请求数据中加载类并在需要时动态评估它们(我们如何在AppWrench Java 控制台中执行此操作)。

      问候, 帕维尔。

      【讨论】:

      • 你知道在 Python 中是否可以这样做吗?
      • Python 是脚本语言,有 eval() 函数,所以这肯定是可以的。
      猜你喜欢
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2011-08-22
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多