在《Ajax in Action》這本書裡,the role of the server這一章節被看作了Ajax的核心技術來介紹,可見其重要性。哪在Ajax眼裡究竟什麼是server的role呢。
從最頂上往下看,答案是:Server的角色一是負責把application送到browser;角色二是和client的互動,接受請求,把請求的結果資料返回給client。
如果把上述如此簡潔的答案看作是金字塔的最頂端,那支撐最頂端的下面部分是怎樣的呢。我們要先看看在web裡,Server構架的幾種形式:
1. 最簡單的一種方式是沒有構架。browser過來的每個page請求都被直接處理,沒有中介層存在,資料處理是直接和資料庫發生的。
2. 基於Model2 workflow的構架。應該說這是一種比第一點更層次化,更優的構架。其中,商務程序被組織成workflow的形式,而workflow的處理引擎由一個controller來承擔。controller並不直接存取資料庫,而是由一個業務資料中介層來做介面。這種構架的設計模式是MVC的一種,在controller接收請求,處理請求,返回結果的時候,其page內容的產生由專門的一個View/pages模組負責完成。
3. 基於組件的構架。在server這一側,application被分為不同的組件,每個組件即代表在browser上不同的業務組件模組。在這種構架下,server端同樣有一個centeral controller,由它來統一介面browser,並把請求分發給相應的組件controller。在這裡,每個組件有自己的controller來處理它所負責的商務邏輯,比如資料庫訪問,結果頁面的產生。在請求處理完畢後,由各自組件負責將結果頁面返回給browser。
4. 面向service的構架。這種構架以service為導向,和browser的互動以data中心,而不是content,在此構架下,Ajax client更像一個application,具備一般application所有的獨立性。以service為導向,可以把業務實現的重用性,耦合性做得更好,和上述構架相比,具備更大的靈活性,這種構架也是最適合Ajax發揮其特性。
(待續)