[摘要]DotNetNuke是國外的開源內容管理系統。本文分析了構成DotNetNuke系統的三層結構,并以實例的形式闡述了DotNetNuke在電子商務領域的應用。本文旨在分析這一開源系統的架構并對其中的一個關鍵技術做深入的研究和應用。
[關鍵詞]DotNetNuke;DNN;系統結構;電子商務
[中圖分類號]F308
[文獻標識碼]A
[文章編號]1005-6432(2009)06-0063-02
1 引言
DotNetNuke(簡稱DNN)是一個免費、開源、可擴展的內容管理系統。可廣泛應用于商務網站、企業內網(Intranet)和外網網站、在線內容發布網站。是建立在微軟ASP.NET平臺之上的一套Web應用框架。筆者已應用該開源系統成功地搭建出多個企業門戶站點和電子商務站點:Qdos;Macphees;Growboating。在2008年圣誕節前夕DotNetNuke 5.O版本發布了,這也算是自2008年11月以來DolNetNuke獲得風險投資后DNN團隊送給我們的一份圣誕大禮吧。DNN作為一個優秀的開源的內容管理系統,從出現到現在的5.O版本,它在中國已經有了相當一部分忠實擁護者。但是對其研究的水平也僅僅停留在應用的級別。
2 DNN概述
DNN是加拿大人Shaun Walker發起并創立的遵從BSD協議的開源項目。其前身是IBuySpy Portal。IBuySpyPenal是微軟當初為了鼓勵開發者使用.Net Frame Work1.O Beta這項新技術而創建的開源項目。Shaun Walker在此項目基礎上開發和增加了新的功能使得在線建立網站變成了件容易的事情,并于2002年年底將其發布為IBuyspy WorkShop,此版本就是DNN的雛形。
DNN是一個伴隨微軟.NET技術不斷發展的開源項目,其官方站點是http://www.dotnetnuke.com。目前最新的版本是DNN5.O.O。本文所闡述的內容是圍繞DNN4.4.1展開的。
DNN的系統結構
系統采用B/S結構,其中服務器端可劃分成Web服務器和數據庫服務器。服務器端采用面向對象的三層結構,提高了系統的可維護性和擴展性。通過分析DNN架構方式可為我們構建類似項目提供了很好的參考模板。
其中Web服務器端按邏輯可劃分成表示層(Prcsentation Layer);業務邏輯層(Business Logic Layer);數據訪問層(Data Access Layer)。
2.1表示層(PL)
表示層直接面向用戶,是客戶訪問DNN站點的接口。這一層由以下元素構成:
Web頁面(Web Tabs):在DNN中Web頁面跟常規的Web頁面不同,它們是由存儲在T_Tab表中的記錄和與這些tabs相關聯的modules(模塊)組成。
皮膚(skins)和容器(Containers):這里的皮膚和容器分別指網頁和模塊的外觀,DNN采用了裝飾器模式使得內容和顯示樣式的功能分離,Default.aspx根據用戶的設置加載相應的皮膚和容器。
模塊(Module):模塊是構成DNN的基本元素,它在表示層的呈現形式是模塊(Moduie),Default.aspx通過加載模塊用戶控件為用戶提供訪問模塊功能的接口。

2.2業務邏輯層(BLL)
業務邏輯層由三部分組成:自定義業務對象(CBO);CBO控制器(CBO Contr01);抽象類數據提供者(Data Provider)。CBO完全由屬性構成,CBO控制器則完全由方法構成。Data Provider是數據訪問層的父類,包含了一個工廠方法,通過反射技術調用數據訪問層中具體的方法為CBO提供源數據。DNN采用DataReader這個ADO.NET中的組件作為數據訪問層和業務邏輯層間的數據傳輸工具,DataReader是單向只讀數據流。為了減少將DataReader中的每個字段值賦給CBO屬性的代碼量,DNN提供了名為CBO Hydrator的專門類,其中的方法FilIObject(ByVal dr As IDataReader,ByVal objType AsType)將DataReader數據流賦給單個CBO對象實例;FillCollection(ByVal dr As IDataReader,ByVal objType AsType)將DataReader數據流賦給一系列CBO對象實例。
2.3數據訪問層(DAL)
數據訪問層的數據訪問類是業務邏輯層抽象類DataProvider的子類,是對Data Provider中的抽象方法的具體實現,提供了訪問數據庫的具體方法,是與物理數據庫緊密耦合的一層。
3 DNN在電子商務領域的應用
在電子商務網站中,企業介紹等除了購物及結算部分完全可以用現有的DNN模塊來實現,如:HTML editer模塊,Search mput及Search result模塊等。下面我們著重介紹購物結算模塊,這些模塊可以利用Module Defini.tions中一鍵安裝完成:
3.1產品目錄(eStore Catalogue product display editor)
eStore Catalogue product display editor提供了非常機動的添加產品及其介紹、圖片、視頻等一切產品屬性的頁面,而且用戶可以自由地定制。在產品顯示頁面,可以以各種形式顯示,包括:樹狀結構、下拉列表以及滾動列表。這個產品目錄模塊的數據結構可以滿足囊括包括大宗商品,預訂及租賃產品,票務產品,書籍雜志,電子產品等。
3.2購物車(eStore Shopping Cart)
購物車有迷你模式購物車和完全模式的購物車。購物車模塊包括:會員和匿名結算;喜愛產品列表;快速結賬;給好友推薦該產品等電子商務網站都有的功能,并且這些子模塊都是可以定制的。
3.3結算模塊(eStore Order Processing)
結算模塊包括biHing子模塊和shipping子模塊。在這里,用戶可以查看訂購歷史;可以自己定制確認E-mail的內容和格式;可以定制所有顯示的文本;可以定制發票打印格式,信用卡備忘以及訂購產品的項目;付款方式集成了Cash on Delivery;Cash In Advance,;Credit Card;Debitcards;PayPal等可以滿足各種用戶的需求。
3.4訂購歷史記錄(Order history)
可以瀏覽用戶所有的訂購歷史記錄,可以很方便地打印訂單。所有頁面都可以用戶自己定制為SSL協議頁面。
4 結語
本文概述了開源內容管理系統DNN系統架構,并說明了DNN快速建站在電子商務領域的應