Google App Engine有著自身的應用程序環境,這個應用程序環境包括以下特性。
(1)動態網絡服務功能。能夠完全支持常用的網絡技術。
(2)具有持久存儲的空間。在這個空間里面平臺可以支持一些基本操作,如査詢、分類和事務的操作。
(3)具有自主平衡網絡和系統的負載、自動進行擴展的功能。
(4)可以對用戶的身份進行驗證,并且支持使用Google賬戶發送郵件。
(5)有一個功能完整的本地開發環境,可以在自身的計算機上模擬Google App Engine環境。
(6)支持在指定時間或定期觸發事件的計劃任務。
基于這樣的環境支持,Google App Engine可以在負載很重和數據量極大的情況下輕松構建安全運行的應用程序。
最開始Google App Engine只支持Python開發語言,現階段開始支持Java語言。本書案例中,Google App Engine應用程序使用Python編程語言實現。該運行時環境包括完整的Python語言和絕大多數的Python標準庫。在Python運行時環境中使用的是Python2.5.2版本。這里先詳細介紹一下Python運行時環境。
Python運行時環境包括Python標準庫,開發人員可以調用庫中的方法來實現程序功能,但是不能使用沙盒限制的庫方法。這些受限制的庫方法包括嘗試打開套接字、向文件進行寫入操作等。為了便于編程,Google App Engine設計人員將一些模塊進行了禁用,被禁用的這些模塊的主要功能是不受運行時環境的標準庫支持的,因而,開發者在導入這些模塊的代碼時程序將給出錯誤提示。
在Pytiicm運行時環境中,應用程序只能以Python語言編寫,擴展代碼中若有C語言,則應用程序將不受系統支持。Python環境為開發平臺中的數據庫、Google賬戶、網址抓取和電子郵件服務等提供了豐富的Python API。此外,Google App Engine還提供了一個簡單的Python網絡應用程序框架,這個框架稱為Webapp。借助于這個框架,開發人員可以輕松構建自己的應用程序。為了方便開發,Google App Engine還包括了Django網絡應用程序框架,在開發過程中,可以將Django與Google App Engine配合使用。
沙盒是Google App Engine虛擬出的一個環境,類似于PC所使用的虛擬機。在這個環境中,用戶可以開發使用自己的應用程序,沙盒將用戶應用程序隔離在自考的安全可靠的環境中,該環境和網絡服務器的硬件系統及物理位置完全無關,并且沙盒僅提供對基礎操作系統的有限訪問權限。
沙盒還可以對用戶進行如下限制。
(1)用戶的應用程序只能通過Google App Engine提供的網址抓取API和電子郵件服務API來訪問互聯網中其他的計算機,并且其他計算機如請求與該應用程序相連接,只能在標準接口上通過HTTP或HTTPS來進行。
⑵應用程序無法對Google App Engine的文件系統進行寫入操作,只能讀取應用程序代碼上的文件,并且該應用程序必須使用Google App Engine的Data Store數據庫來存儲應用程序運行期間持續存在的數據。
(3)應用程序只有在響應網絡請求時才運行,并且這個響應時間必須極短,在幾秒之內必須完成。與此同時,請求處理的程序不能在自己的響應發送后產生子進程或執行代碼。
簡言之,沙盒給開發人員提供了一個虛擬的環境,這個環境使應用程序與其他開發者開發使用的程序相隔離,從而保證每個使用者可以安全地開發自己的應用程序。
開發人員開發程序必須使用Google App Engine SDK,即Google App Engine軟件開發套件。可以先下載這個套件到自己的本地計算機上,然后進行開發和運行。使用SDK時,可以在本地計算機上模擬包括所有Google App Engine服務的網絡服務器租用應用程序,該SDK包括Google App Engine中的所有API和庫。該網絡服務器租用還可以模擬沙盒環境,這些沙盒環境用來檢查是否存在禁用的模塊被導入的情況,以及對不允許訪問的系統資源的嘗試訪問等情況的發生。
Google App Engine SDK完全使用Python實現,這個開發套件可以在裝有Python2.5的任何平臺上面運行,包括Windows、Mac OS X和Linux等,開發人員可以在Python網站上獲得適合自己系統的Python。
該開發套件還包括將應用程序上傳到Google App Engine之上的工具。用戶創建自己應用程序的代碼、靜態文件和配置文件之后,就可以運行這個工具將數據上傳到平臺上面。在上傳過程中,該工具還將提示開發者輸入Google賬戶和電子郵件地址及密碼等信息。
系統中有一個管理控制臺,這個管理控制臺有一個網絡接口,用于管理在Google App Engine上運行的應用程序。開發人員可以使用管理控制臺來創建應用程序、配置域名、更改應用程序當前的版本、檢査訪問權限和錯誤日志以及瀏覽應用程序數據庫等。