电竞比分网-中国电竞赛事及体育赛事平台

分享

從頭學習Drupal--基本架構一 | Drupal China

 gaofrank 2008-10-17

從頭學習Drupal--基本架構一

xeopn 于 周五, 2008-06-20 16:05 提交。

前面學習了Drupal的一些基本概念, 其實我們在構建一個系統(tǒng)的時候, 一般都需要從兩個方面來考慮問題:

  1. 業(yè)務模型
  2. 也就是領域模型, 是面向我們所要解決的問題域所構建的模型, 前面我們說的關于內容描述方面的幾個概念, 其實就是對領域內概念,元素進行概括,抽象得出的業(yè)務模型基類. 構建良好的業(yè)務模型, 能有效地將問題域中的對象進行分類,綜合, 理清他們間的關聯(lián), 闡明他們相互間的協(xié)作, 并為最終形成系統(tǒng)的對象數(shù)據(jù)模型打下基礎. 我們所說的面向對象(OO), 其實主要就是一個建模的思想.

  3. 系統(tǒng)架構
  4. 它是從系統(tǒng)的實現(xiàn)角度出發(fā)的, 涉及的概念更多, 它主要是用來解決系統(tǒng)如何構建, 以實現(xiàn)業(yè)務的需求, 它還涉及系統(tǒng)的健壯性, 性能, 可擴展性, 可操作性, 可獲得性等一些其他質量屬性. 比如經(jīng)典的MVC架構, WEB的二層, 三層, 四層架構, 這些都是架構實現(xiàn)的一種形式.

這兩方面相輔相成, 任何一方面設計不好都將極大的影響系統(tǒng)的質量(Quality). 很多人在系統(tǒng)設計時出于某種主觀或客觀原因要么從單方面考慮, 要么是把兩者混淆起來考慮, 這都不是好的系統(tǒng)設計方法, 都有很大的局限性.

說了這么些沒人感興趣的東西, 還是回到我們的主題, Drupal的架構. 其實我目前還是粗略看了Drupal, 主要是爬爬洋文, 大概看了一下bootstrap的代碼; 所以下面的描述主要關注Drupal的主體框架, 對其內部不進行深入描述(能力問題, 象國足看齊); 而且因為我本身的多語言支持(Internationalization)實現(xiàn)的并不太好, 這里記錄下來的就是僅我自己的理解, 供你們參考和指正.

什么是Drupal的架構?
簡單的說, Drupal是一個基于B/S架構的內容管理系統(tǒng)(CMS), 它用PHP語言實現(xiàn), 并以關系數(shù)據(jù)庫為存儲機制. 與其說它是一個CMS, 不如說它是一個CMS框架更好. 單純做博客(Blog), 它不如WordPress簡單快速; 直接當CMS, 它不如Joomla美觀方便, 甚至不如某些國產(chǎn), 但其實經(jīng)過擴展, Drupal能夠做得與它們一樣好, 甚至更好, 這就取決于Drupal幽雅的架構設計. 這里我為啥用幽雅不用優(yōu)雅呢? 其實就在于Drupal的具體實現(xiàn), PHP本身是支持面向對象(OO)的, 但Drupal卻為了兼容老版本并沒有使用, 而是通過一系列的約定俗成的編碼約定(Convention)來達到類似的效果. (期待Drupal 7的到來...)
好了, 下面是一個我簡單畫的Drupal的系統(tǒng)架構圖.
Drupal系統(tǒng)架構圖
我們看到, Drupal主要是一個三層結構: 表現(xiàn)層, 邏輯層數(shù)據(jù)持久層. 顧名思義, 數(shù)據(jù)持久層主要是處理數(shù)據(jù)的持久化, 它是領域模型在具體數(shù)據(jù)庫中的實現(xiàn); 而邏輯層則基于領域模型進行數(shù)據(jù)的業(yè)務邏輯處理, 它是整個結構的核心; 表現(xiàn)層則側重于領域數(shù)據(jù)的呈現(xiàn)和工作流在用戶側的控制表現(xiàn), 它主要基于以用戶為中心來設計(UCD).
邏輯層, 包括兩部分:Drupal的核心庫和模塊組(Modules).
核心庫主要包含Druapl的請求流程(Bootstrap)和一系列常用的公共支撐庫, 比如數(shù)據(jù)庫抽象接口, 多語言支持, 郵件處理, 圖像優(yōu)化等. 當然還有最關鍵的鉤子(hook)框架, 鉤子是貫穿Drupal核心的一個重要特性, 它使得Drupal能高效靈活地協(xié)調模塊們的工作. 這里把它叫做核心庫確實不妥當, 以為它不僅僅是一個庫, 更是一個公共框架.
模塊就是Drupal的功能組件, 它處理具體的業(yè)務邏輯, 模塊如何劃分, 取決于你的業(yè)務劃分, 你的工作流, 你的設計思想.Drupal安裝包里包涵了10多個模塊, 但它最核心的只有5個模塊: Block, Filter, Node, System, User. 如果說核心庫是劉備的話, 那這五個就是他的五虎上將了. 看看他們的功能吧, System使得系統(tǒng)具備了系統(tǒng)管理的能力, User使得系統(tǒng)具備了安全管理的能力, Node+Block+Filter使得系統(tǒng)具備了基本內容管理的能力.
天哪, Drupal難嗎, 真的不難, 這就是一個系統(tǒng)的完整原型, 這架構就是多少人心目中的完美架構啊! 從這里出發(fā), 你就能實現(xiàn)任何你想要的了, 想要什么就實現(xiàn)個什么模塊, 什么自己做不了, 怕什么, 社區(qū)里有的是人在做, 拿來主義就行啊.
表現(xiàn)層, 有多少人是沖著Drupa的l外觀來的, 應該不多吧, 你要真沖這個來, 還真得勸你去選個別的CMS, 沒必要和自己驕矜.
但是,對一個CMS系統(tǒng)來說, 可定制的外觀是必須提供的能力的. 因此, Drupal提供了相當強大的內容表現(xiàn)擴展機制--主題(Theme)系統(tǒng), 真的是很黃很暴力, 它包含主題引擎和主題兩個子層, 允許開發(fā)者全方位控制內容的表現(xiàn). 系統(tǒng)對最終用戶的輸出, 你可以從主題層輸出, 也可以從主題引擎層輸出, 還可以直接從邏輯層里的模塊層輸出; 什么, 你不想實現(xiàn)表現(xiàn)層? OK, 完成一個機機接口的純后臺系統(tǒng)也是你的選擇. 不過太靈活并不一定是好事, 特別在一個具體的項目開發(fā)過程中, 記住, 制定必要的開發(fā)規(guī)約是保證項目質量和進度的有效手段.
還是回到正題, 雖然Drupal的整個主題機制強大復雜, 但在機制的最頂層--主題, 卻并不復雜. 它簡單到由一系列的模板文件, CSS文件, JS文件和圖片即可定義出美侖美奐的外觀.

持久層, 支持關系型數(shù)據(jù)庫, 模塊一般通過核心的數(shù)據(jù)庫API訪問, 你想直接訪問數(shù)據(jù)庫也支持, 但最好還是通過API, 這樣便于遷移和擴展.

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多