歡迎您光臨本站 註冊首頁

學習使用 Agavi 框架構建可伸縮的 Web 應用程序

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
這是分為 5 部分的系列文章的第 1 部分。該系列是為對開源、靈活並且可伸縮的 Agavi 框架感興趣的 PHP 開發人員編寫的。在第一篇文章中,您將學習該框架和其他所需組件的安裝步驟,大體了解 Agavi 及其功能,並創建您的第一個 Web 應用程序。

簡介

如果您是一位嚴肅的 PHP 開發人員,您可能已經了解(甚至使用過)PHP 應用程序開發框架,比如 Symfony、CakePHP 和 Zend Framework。這些框架提供全面的 API,幾乎囊括大部分應用程序的需求,並且是 PHP 應用程序開發的堅實基礎。您可以輕鬆地將它們與第三方庫或社區開發的組件集成起來,以實現其他功能。

儘管以上列出的框架無疑是最流行的,但它們卻不是僅有的;每個月都會有新的框架出現。這個系列關注一個框架:Agavi,它是一個靈活並且可伸縮的框架,值得專業的 PHP 開發人員考慮採用。

在這個系列文章中,我將通過 Agavi 引領您了解基於 MVC 的應用程序開發的基礎知識,向您介紹基礎的框架概念,並演示如何利用 Agavi 的獨特方法快速高效地從頭構建一個功能齊全的 Web 應用程序。經歷這個過程之後,您將了解這個框架的細微之處,理解保證它的安全性和可擴展性的設計決策,並且將這個很有價值的框架添加到您的 PHP 開發工具箱中。現在,我們開始出發!





為什麼選擇 Agavi?

常用縮略詞
  • API:應用程序編程介面(Application program interface)
  • CRUD:創建、讀取、更新和刪除(Create Read Update Delete)
  • CSS:層疊樣式表(Cascading stylesheet)
  • CVS:併發版本系統(Concurrent Versions System)
  • DNS:域名系統(Domain Name System)
  • HTML:超文本標記語言(Hypertext Markup Language)
  • HTTP:超文本傳輸協議(Hypertext Transfer Protocol)
  • MVC:模型-視圖-控制器(Model-View-Controller)
  • OOP:面向對象編程(Object-oriented programming)
  • ORM:對象關係映射(Object-Relational Mapping)
  • PEAR:PHP 擴展和應用程序儲存庫(PHP Extension and Application Repository)
  • RSS:真正簡單的聯合(Really Simple Syndication)
  • SQL:結構化查詢語言(Structured Query Language)
  • SVN:Subversion
  • URL:統一資源定位器(Uniform Resource Locator)
  • XML:可擴展標記語言(Extensible Markup Language)
  • XSL:可擴展樣式表語言(Extensible Stylesheet Language)

我首先回答一個非常基礎的問題:什麼是 Agavi,它有哪些獨特的特性?

根據該框架的官方 Web 站點的說法,Agavi 是 “一個強大並且可伸縮的採用 MVC 範式的 PHP5 應用程序框架。”它為構建和部署基於 PHP 的 Web 應用程序提供全面的工具,並為安全性、數據緩存、國際化、輸入驗證和資料庫抽象提供內置支持。它原來是 Mojavi 項目的一部分,目前由德國的一家軟體公司 Bitextender GmbH 維護,並根據 GNU Lesser General Public License 2.1 向社區發布。

Agavi 的有趣源於多種原因。下面給出我認為最重要的 3 個原因:

  1. 首先,它強烈關注代碼的可重用性,從而允許開發人員輕鬆創建通嚮應用程序的某項功能的不同介面。這對經常需要向內部公開 HTML 和 SOAP 介面的 Web 應用程序尤為重要。例如,假設您想要構建一個通嚮應用程序的現有搜索引擎功能的 SOAP 介面。通過使用 Agavi,這就像定義一個新的輸出類型一樣簡單,或者像定義一個以新的格式輸出現有函數的呈現器一樣簡單。沒有必要修改現有的功能,從頭構建的過程是很簡單的,並且很容易實現。
  2. 其次,Agavi 提供一個高級的 URL 路由機制,允許進行大量配置,確定 URL 路由如何映射到應用程序函數。這個路由機制支持可選和必選參數、默認值、嵌套路由以及回調函數。它是 Agavi 的最重要特性之一。這個路由機制就像 Agavi 應用程序的其他配置一樣,完全使用 XML 表示,並且 Agavi 的配置子系統允許在運行時訪問全局的應用程序設置和變數。
  3. 再次,Agavi 以開箱即用的方式提供極度嚴格的請求過濾和輸入驗證。過濾器可用於提前或推遲處理控制器方法。在每次請求時都驗證請求參數,並且 Agavi 會自動刪除未知參數,從而大大降低 SQL 注入和類似攻擊的風險。Agavi 包含大量用於執行常見任務的內置驗證器,比如驗證字元串、數字、時間戳、電子郵件地址和文件。對於內置驗證器不足的情形,還可以使用正則表達式或定義定製驗證器來執行驗證。所有這些特性使得 Agavi 成為開發 Web 應用程序的最安全框架。

除了以上特性之外,Agavi 還提供:

  • 一個條件緩存引擎。
  • 支持最常見的資料庫系統(包括 MySQL、PostgreSQL 和 SQL Server)和 ORM(包括 Propel 和 Doctrine)
  • 一個會話管理引擎。
  • 可定製的模板;完全遵從 OOP 原則。

總而言之,這個框架非常酷……現在讓我們開始使用它!





安裝 Agavi

在這個系列文章中,我將假設您已經設置好 Apache/PHP/MySQL 開發環境,了解 PHP 和 XML,以及習慣使用 PHP 的簡單和複雜數據類型。您應該基本了解 OOP 和 SOAP 概念,以及使用 PHP 的 Document Object Model (DOM) 擴展生成 XML 樹。本系列使用 PHP V. 5.2.6 和 Apache V. 2.2.11。

在開始之前,通過以下步驟創建 Agavi 應用程序所需的基本目錄結構:

步驟 1:創建應用程序目錄結構

轉到 Web 伺服器的文檔根目錄(通常為 /usr/local/apache/htdocs on Linux® 或 C:\Program Files\Apache\htdocs on Windows®)並為應用程序創建一個新的子目錄。將該目錄命名為 wasp/,我隨後會解釋這樣做的原因。

shell> cd /usr/local/apache/htdocs  shell> mkdir wasp  			

在本文中,將這個目錄稱為 $WASP_ROOT。

在這個目錄內,創建另一個名為 lib/ 的子目錄。

shell> cd wasp  shell> mkdir lib  			

步驟 2:定義虛擬主機設置

為了更方便地訪問應用程序,需要定義一個新的虛擬主機並將其設置為該應用程序的 Web 根目錄。雖然這個步驟是可選的,但是我推薦您使用它,尤其是用於開發的機器包含多個正在開發的應用程序時,因為它能夠創建一個更密切的目標部署環境副本。

要為應用程序設置一個已命名的虛擬主機,請打開 Apache 配置文件(httpd.conf or httpd-vhosts.conf)並添加以下行:

NameVirtualHost 127.0.0.1  <VirtualHost 127.0.0.1>      DocumentRoot "/usr/local/apache/htdocs/wasp/pub"      ServerName wasp.localhost  </VirtualHost>  

這些行定義一個新的虛擬主機 http://wasp.localhost/,它的文檔根目錄對應於 $WASP_ROOT/pub/ 目錄。重啟 Web 伺服器激活這些新的設置。注意,您可能需要更新網路的本地 DNS 伺服器,讓它知道新的主機。

步驟 3:下載和安裝 Phing

Agavi 利用 Phing 版本系統自動為操作、視圖、模板和驗證器生成代碼。Phing 要求使用 PHP 5.0 或更高版本。安裝 Phing 的最簡單方式是使用自動的 PEAR 安裝程序,後者應該默認包含在您的 PHP 版本中。

要按照 Phing,僅需在命令提示符處發出以下命令:

shell> pear channel-discover pear.phing.info  shell> pear install phing/phing  			

現在,PEAR 安裝程序將連接到新的通道,下載文件包並將其安裝到系統的恰當位置上。本文使用 Phing V. 2.3.3。

如果要手動安裝文件包,請訪問主頁,下載源代碼壓縮文件,並手動地將其解壓到任意目錄。要獲得主頁的鏈接,請查看本文的 參考資料 小節。注意,手動安裝要求具備一些關於 PEAR 的包組織結構的知識。


[火星人 ] 學習使用 Agavi 框架構建可伸縮的 Web 應用程序已經有460次圍觀

http://coctec.com/docs/linux/show-post-68765.html