日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

從頭學(xué)習(xí)Drupal--基本架構(gòu)一 | Drupal China

 gaofrank 2008-10-17

從頭學(xué)習(xí)Drupal--基本架構(gòu)一

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

前面學(xué)習(xí)了Drupal的一些基本概念, 其實(shí)我們?cè)跇?gòu)建一個(gè)系統(tǒng)的時(shí)候, 一般都需要從兩個(gè)方面來考慮問題:

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

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

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

說了這么些沒人感興趣的東西, 還是回到我們的主題, Drupal的架構(gòu). 其實(shí)我目前還是粗略看了Drupal, 主要是爬爬洋文, 大概看了一下bootstrap的代碼; 所以下面的描述主要關(guān)注Drupal的主體框架, 對(duì)其內(nèi)部不進(jìn)行深入描述(能力問題, 象國足看齊); 而且因?yàn)槲冶旧淼亩嗾Z言支持(Internationalization)實(shí)現(xiàn)的并不太好, 這里記錄下來的就是僅我自己的理解, 供你們參考和指正.

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多