1

我是CMSes可擴展性的粉絲。您可以上傳一些代碼(通常是PHP),從CMS管理面板對其進行授權並運行。如何爲Google App Engine設計可擴展的CMS?

我想知道在Google App Engine中是否有可能。我還沒有檢查現有的CMS App for Google App Engine的可擴展性,但是如果它們中的任何一個支持插件,我想知道他們是如何做到的,以及它們是否只是JS插件,或者它們是否支持Python/Java插件也是如此。

回答

1

其實我沒有看到支持App Engine應用程序插件的概念問題。例如,在Java上,您可以從數據存儲或memcache(在應用程序初始化階段)將內容插入到內存中,然後根據需要使用自定義類加載器加載插件類。實際上,您甚至可以從請求數據中加載類並在需要時即時評估它們(我們如何在AppWrench Java控制檯中執行此操作)。

Regards, Pavel。

+0

你知道如果在Python中可能也是這樣嗎? –

+1

Python是腳本語言並具有eval()函數,所以這絕對應該是可能的。 –

2

Google的Nick Johnson寫了一篇關於如何編寫blog system for app engine的完整博客文章系列。如果它沒有做到你想要的,我相信你可以擴展它,但通常一個博客系統對於大多數人來說是足夠的CMS。

+0

尼斯鏈接!謝謝! –

+0

尼克約翰遜尚未達到「可擴展性」部分,但這是他說他會添加的功能之一 –

2

我沒有公開的示例指向(抱歉),但我可以確認可以爲App Engine項目創建Python插件。幾個月前,我完成了一個項目,做了這樣的事情。事物的癥結歸結爲蟒蛇的單行:

exec plugincode in someDict 

上面的「plugincode」是包含一些Python代碼來執行字符串,而someDict是全局的字典中執行它這無疑是比使用eval()更清潔。在我們的例子中,globals字典包含一個插件代碼用來與系統通信的對象實例。我不能想到這個(或類似的)方法的任何主要限制。例如plugincode可以聲明一個類,並將該類的一個實例註冊爲回調處理程序等等。

在我們的例子中,我們將插件代碼存儲在Data Store中,並在適當的時候加載它(例如,應用程序已啓動)。

相關問題