這兩天仔細思考了一下,GAE究竟是什麼?
我作事情,喜歡探討一點背後的東東,抽象的東東,主要是由於這樣能夠更深地幫助我理解這個系統。個人理解,一個系統,只要對其有了必定了解,創建了世界觀,知道它能作什麼,不能作什麼,寫程序就會容易一點,起碼大面上不會有什麼錯誤。
最開始,我覺得GAE是個虛擬主機,提供CGI功能,能夠定製一些比較強大的網站。不事後來從深層次理解,發現這個理解並不正確。由於我發現,僅僅從虛擬主機的角度理解,能夠說,GAE連1%的功能都沒有發揮出來。
咱們來看一臺PC機有什麼。有鍵盤鼠標,這是輸入設備,有顯示器,輸出設備,內部有CPU,總線,內存,硬盤,有的還有光驅,而後有聲卡,顯卡,網卡,USB的其餘設備鏈接手段。固然,電源機箱就不說了。
OK,咱們來爲這個PC機分分類,看咱們你們花了幾千塊錢,到底買了什麼東東:
一、輸入,輸出不說了,這是人機交互的必要手段。USB鏈接槽大約也是爲這個目的服務的,那麼,咱們能夠抽象一下,一臺計算機須要人機交互能力。
二、網線,這個個人理解是「機機交互」能力,你們說是否是,就是兩臺計算設備之間實現數據交互的手段。
三、CPU、總線,個人理解是計算資源,就是完成咱們最核心的數據計算業務。這個不用多說,沒有就不叫計算機了。
四、硬盤,光盤,這個個人理解是永固性存儲手段,其實計算機最大的應用,仍是信息服務,就是把信息存下來,等須要用的時候,調出來使用。所以,永固存儲能力幾乎是每一個完整的計算系統必須的。
五、內存,這個最難以理解,確定不是永固存儲,但說臨時存儲吧,它又是不可或缺的,通常不能用永固存儲替代,由於硬盤什麼的速度和內存比,仍是太慢。同時,裏面存儲的數據很雜,很難歸類,有操做系統的內核代碼,有咱們的程序,有程序的數據。不過,我認爲,若是抽象到業務邏輯來講,內存更像是本次運行,本筆交易,以及某一個系統不一樣交易之間的一個臨時數據存儲區和共享變量交互區。
ok,當咱們把一臺PC機大卸八塊以後,咱們來看一個能幹活的計算機系統須要啥,個人理解包含:計算能力,永固存儲能力,計算中臨時變量存儲能力,多任務多用戶系統中,跨服務,跨交易的數據交互能力,人機交互能力和機機交互能力。
那好,咱們再來看看GAE
一、GAE提供程序開發手段,每一次用戶訪問能確保執行相應的程序模塊,這說明什麼?計算能力有了。
二、GAE提供最低500M永固存儲,以數據庫方式開發(不是關係型,是哈希型),須要的話,用戶還能夠進一步購買,並以Google的商業信譽作數據安全擔保,這是永固存儲能力,而且,我發現,這比咱們PC機安全,由於硬盤可能壞,光盤可能發黴,病毒可能重作系統,而Google的商業化雲計算運行保證,能最大可能保護資料不會丟失。
三、雖然GAE提供的是腳本式執行環境,看似每次用戶訪問交易,彼此之間互相看不到,但GAE同時提供的數據庫訪問和MemoryCache訪問能力,其實已經跨交易實現了共享變量,這很重要,由於不一樣計算元之間的數據互動,是商業化大型系統的基本保證。一個沒有共享變量區的多任務多用戶系統毫無心義,充其量只能是n個小計算機的集合,不能起到1+1>2的做用。
四、機機交互不說了吧,這是網絡服務器集羣哦,天生的。另外一方面,GAE從一開始就沒有侷限在Http服務器的範疇,它叫AppEngine,應用服務引擎,這意味着,客戶端不論是人操做的瀏覽器,仍是一個咱們本身寫的Client,都無所謂,只要符合協議標準,均可以請求服務。
五、人機交互,這個比較靈活,可能這也是GAE最不像計算機的地方。不過,當咱們用瀏覽器打開一個服務,咱們想一想看,瀏覽器的窗口,是否是就是GAE的屏幕?咱們的鍵盤和鼠標,這會是否是已經能夠經過瀏覽器和GAE交互?
六、比較重要的來了。全部開發過多用戶應用程序,尤爲是網絡應用程序的程序員,應該都有體會。系統要提供個性化服務,首先要能區別每一個客戶,這須要一整套用戶管理系統,你們可能都作過相似的練習。用戶管理系統,作起來其實很簡單,就是個簡單的數據庫應用,但實施起來,最大的難度不在技術上,在商業信譽上,爲何呢,人家不信你,不肯意把隱私資料交給你,不少網絡,拼命地用垃圾郵件,拉你們入夥,其實就是想解決這「最後一下回車」的問題。但使用GAE開發部署應用,GAE提供google本身的用戶數據庫驗證訪問,一個客戶,只要註冊過google的郵箱,天生就能夠成爲咱們的客戶,而且,這個有google的商業信譽擔保,用戶比較放心,這其實已經幫助你們解決了一個很大的運營商的難題:用戶不願入網。
七、最重要的來了,GAE提供GData服務,能夠無縫整合Google提供的網頁Office,企業辦公平臺的功能,這意味着什麼,GAE開發的應用,一開始就能夠提供Office辦公能力。你們想一想,目前哪一個公司提供的ERP、EIP平臺,能內置一套Office?說不要本身造輪子,呵呵,這麼大的輪子,我也願意用啊。
綜上所述,咱們來理解一下,GAE究竟是什麼?
一、GAE是一臺計算機,一臺完整的計算設備,其提供的永固存儲能力,安全性還強於目前的PC我的計算設備。
二、GAE提供多任務多用戶訪問能力,應用開發者無需關心用戶管理和個性化服務的困難,而且無需關心服務能力的擴容,一切都是無縫可得到的,而且,價格不貴。
三、GAE是一臺按需定製的計算機,咱們服務的客戶羣小,就免費,客戶多了,就收費,而且能夠無級增長,一點點增長,既知足咱們當前的應用需求,又不會浪費錢。
四、GAE這臺計算機不會貶值。Google建設了一個計算雲,咱們的GAE應用是運行在雲上,咱們不用擔憂PC升級換代致使的淘汰成本。
五、針對目前計算機的兩大應用領域,辦公和娛樂,GAE主要針對辦公應用提出完整解決方案。
這就是目前我想到的幾點GAE的見解,固然,可能還很不完整,這裏我拋磚引玉啊,但願你們多多補充。