wiki:zsjheng/GoogleAppEngine/1.Introduction_To_GAE

Version 2 (modified by zsjheng, 16 years ago) (diff)

--

.......未完待續先存檔........

1. Google App Engine介紹

* Web應用程式

什麼是Web應用程式

什麼是一個Web應用程式 (Web Application)? 簡單地說就是一個提供特定服務能夠讓使用者經由internet或者intranet透過瀏覽器來讀取、互動的應用程式。 更明確地來說,開發人員利用瀏覽器所支援的語言(例如. HTML, Java Script, Java, PHP等等)來開發的一個應用程式,且能夠透過瀏覽器來產生執行結果,即可稱之為一個Web應用程式。(參考:wikipedia)

傳統的Web網頁能夠提供使用者瀏覽大量的文字或者圖片資料。然而隨著越來越多的網頁技術推陳出新,以及Web 2.0時代的來臨,Web網頁所扮演的資訊提供者(provider)已經不足以滿足使用者的需求;使用者需要的是能夠與其『互動』的網頁而不僅僅只是靜態的網頁呈現,因此,越來越多開發人員投入Web應用程式開發的領域,不管是底層架構(framework)的設計、後端網頁程式設計甚至到了前端互動技術(例如. AJAX, Asynchronous JavaScript and XML);一個能夠針對由上到下(Top-Down)提供完整解決方案的Web應用平台對於開發人員來說,能夠提高。

建置、發表一個Web應用程式

該如何建置一個Web應用程式並發表在internet或者intranet上供其他使用者使用呢? 首先我們必須要先建置一個網路伺服器來提供服務。 首先當然是得先準備伺服器的硬體及所需之網路設備,此外電源供應也是一個大問題。 準備好硬體設備、插入插座打開電源後下一步就是安裝作業系統了;目前的各種作業系統諸如Microsoft的Windows server系列、SUN Solaris、各種Linux發行套件甚至是Apple的MAC OS都能夠來當作網路伺服器提供服務。

接下來為了能夠讓其他使用者搜尋到自己所提供的Web應用程式之服務,就得申請IP位置以及網域名稱對應到自己的伺服器,接下來就是選擇合用的Web伺服器了。 目前最普遍的Web伺服器就是Apache Web伺服器,此外由Microsoft所提供支援的IIS (Internet Information Service)也是一種選擇;若是想要利用Microsoft的ASP/ASP.NET來開發Web應用程式,則使用後者能帶來最大的支援度,然而則須考量使用Microsoft系統可能涉及的版權及付費問題。 而若以Open source的Apache

當然還有更快的方式且更安全、穩定的方式來建置Web伺服器的執行環境,那就是透過目前許多虛擬伺服器提供者所提供的虛擬主機環境。 這些提供者能夠提供非常完整的且全日的安全機制來保護使用者的Web應用程式內容不會遭到惡意使用者的入侵、修改、竊取,甚至有額外的電源備援機制來支持開發者的Web應用程式提供24*7不停機的持續性服務;此外高速的網路頻寬、高運算效能的CPU和大容量的記憶體及硬碟空間,再加上作業系統及網路伺服器的合法使用權和即時更新,讓開發人員無後顧之憂地專注於自己所開發的Web應用程式上。

天下沒有白吃的午餐,想要享用這樣安全、快速、穩定的開發、執行、服務環境以及完善的支援,您也需要更多的小朋友來支援您! 如果只是想要測試一個小小的Web應用程式的功能也得付出這麼大的成本嗎? 難道沒有又便宜又穩定,且支援度高的Web應用程式開發環境供開發人員來開發、部署自己開發的Web應用程式?且又有免費的資料庫資源能夠來存取並搜尋呢?

* Google App Engine簡介

Google App Engine是什麼?

承上章,Google App Engine想要提供使用者的,就是這樣一個.....

目前支援,其他不同語言的執行環境則需等Google釋出支援.App Engine的Python執行環境包含了Python語言的直譯器 Python標準函式庫 以及 App Engine的函式庫以及API 以及對於Web server layer的一個標準介面(a standard interface to the web server layer).

Google App Engine是什麼呢?簡單地說就是一個提供開發人員建置及架設Web應用程式網站的平台。透過Google App Engine這樣的一個平台,開發人員能夠專注於開發自己的Web應用程式而無須耗費心力於平台的建置與管理,更無須花費任何金錢即可享有由Google提供的雲端運算環境所帶來的強大運算資源、大量儲存空間以及高速頻寬。目前Google App Engine平台對於每一個Web應用程式的免付費使用限制為:每個Web應用程式可使用500MB儲存空間、每一個月每個Web應用程式5百萬個頁面瀏覽數(目前國內的許多熱門網站也鮮少能夠突破這個瀏覽數量,所以可以不必擔心瀏覽數上限的問題)及每天2億個CPU clock cycle運算。 由於Google App Engine於2008年四月才由Google釋出,所以目前仍然在Beta的階段;Google也提供了免費測試帳號供有興趣的開發人員申請可以在Google App Engine平台上建置、部署自己的Web應用程式。即使沒辦法連上網路或者沒有申請到測試用的帳號也沒關係,只要安裝好Python以及Google App Engine執行環境,開發人員也能在自己的電腦上編譯程式碼並以 http://localhost:8080/ 來檢視自己撰寫的Web應用程式執行結果(當然若是使用到需要Google App Engine提供的服務則可能無法使用)

  • Google App Engine帶來的好處
  • Google平台簡介

Django

Django為一種以Python程式語言為基礎的Web應用程式基礎架構,發音為/ˈdʒæŋgoː/。

GFS

BigTable

* 建置開發環境

於Linux平台建置Python執行環境

在Linux上(在此以Ubuntu 8.04 LTS版本為例),一般的套件版本都已經在作業系統安裝時就已預先安裝Python的執行環境。可開啟終端器輸入

#python -V

來檢視目前系統所安裝的python版本。若是沒有安裝或者版本較2.5.2來得舊,建議都請安裝2.5.2以上的版本! 在Ubuntu上可利用apt-get來安裝

#sudo apt-get install python

於Windows平台建置Python執行環境

在Microsoft Windows上安裝就簡單得多了,只要下載到目前最新版本的安裝程式,按照以下步驟下一步、下一步就能夠完成安裝。

* Hello World'''

Google App Engine也是Web應用程式的一種.

安裝完Python以及Google App Engine的執行環境之後,我們先來寫一個簡單的Hello World Web應用程式,在本機上執行體驗一下Google App Engine的執行結果,並了解如何編譯、執行Google App Engine的程式碼。 首先先在Google App Enigne的安裝目錄(預設為google_appengine)下先新增一個文字檔取名為 hello.py,接著編輯hello.py加入以下幾行字*並存檔。

 print 'Content-Type: text/plain'
  print ' '
  print 'Hello, world!'

*hello.py範例程式節錄自Google App Engine。基本上只要 print 'Hello, world!' 這段程式碼即可正常執行,第一行的 print 'Content-Type: text/plain' 用意僅在metadata的宣告,不加入亦可正常執行。 接下來我們再新增一個文字檔取名為app.yaml,這是一個設定檔且檔案名稱是固定的,請不要隨意更換名稱避免造成無法編譯的錯誤。當我們下指令編譯hello.py或者任何一個我們要開發的Google App Engine Web應用程式時,Google App Engine都會先讀取這個檔案內容來取得相關的資訊:應用程式名稱、應用程式版本編號、執行環境、API版本編號以及handler程式檔案目錄等等。 接下來我們先在app.yaml這個檔加入以下的內容。

 application: helloworld
  version: 1
  runtime: python
  api_version: 1

  handlers:
  - url: /.*
    script: helloworld.py

首先application就是指我們所開發的Google App Engine Web應用程式名稱,這裡先暫定為helloworld;因為application名稱必須和上載到Google Appspot網站上的Web應用程式帳號名稱一致才行,否則會有錯誤的情形發生,不過目前我們僅先在本機測試,因此將會把這個問題留到後面章節來討論。version則是指這個應用程式的版本;runtime則是指我們用來開發這個Google Ap Engine Web應用程式的所使用的執行環境,預設當然就是Google目前唯一使用的Python語言;api_version則是。

Attachments (1)

Download all attachments as: .zip