目錄
目錄X

動易SiteFactory新特性體驗之旅——N層架構(gòu)設(shè)計

  動易CMS 2007的新特性中有這樣一個非常重要的特性:

以下是引用片段:
N層架構(gòu)設(shè)計
動易CMS 2007多方面研究和參考微軟在企業(yè)架構(gòu)的設(shè)計方案,采用以表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層為主的N層架構(gòu)設(shè)計。這樣的設(shè)計使得動易CMS 2007結(jié)構(gòu)清晰、易于維護,極大地提高了軟件的可擴展性和重用性。
動易CMS 2007以其基于.Net的N層架構(gòu)設(shè)計,為系統(tǒng)的可伸縮性提供了堅實的保障,可以適應(yīng)各種網(wǎng)站規(guī)模。網(wǎng)站在不斷發(fā)展變化,從一個個人網(wǎng)站發(fā)展成大型門戶網(wǎng)站,采用分層設(shè)計的系統(tǒng)自始至終都可以滿足網(wǎng)站不斷發(fā)展的功能需求和性能需求。在網(wǎng)站早期,使用分層設(shè)計的系統(tǒng)可能會顯得有些浪費,在性能上帶來一些損失,但隨著網(wǎng)站的不斷發(fā)展,分層設(shè)計的系統(tǒng)可以不做任何修改或者只需少量修改即可滿足大型網(wǎng)站的要求。而沒有分層設(shè)計的系統(tǒng),初期可能速度會較快,但網(wǎng)站一旦發(fā)展壯大,就不得不重新設(shè)計系統(tǒng)架構(gòu)或者更換程序。
無論你的網(wǎng)站是剛剛建立,還是已經(jīng)成長為超級大站,動易CMS2007以其強大的可伸縮性始終可以伴隨您的左右!

  這個特性是非常技術(shù)性的。可能很多人并不關(guān)心這個特性,但我認為還是有必要讓大家多了解一下動易CMS 2007的一些技術(shù)內(nèi)幕。呵呵,我的另一個目的當然就是想給大家展現(xiàn)一下動易的技術(shù)實力。

  什么是N層架構(gòu)設(shè)計呢?N層架構(gòu)設(shè)計有哪些優(yōu)點和缺點?大家可以參看我的博客文章:

  動易CMS 2007快報--系統(tǒng)架構(gòu):/Blog/kuaibao/2764.html
  動易CMS 2007快報--系統(tǒng)架構(gòu)2:/Blog/kuaibao/2765.html

  N層架構(gòu)設(shè)計有真假之分。現(xiàn)在市面上許多軟件都宣稱自己是N層架構(gòu)設(shè)計的,但我們只要認真研究一下對方的設(shè)計,就會發(fā)現(xiàn)有些廠商是在夸大宣傳,是為了提升自己的產(chǎn)品形象而進行虛假宣傳。

  首先,有許多廠商根本沒有分清楚倒底什么是N層架構(gòu)設(shè)計。有些廠商甚至把B/S(瀏覽器/服務(wù)器)和C/S(客戶端/服務(wù)器)模式也當成了N層架構(gòu)來宣傳。而實際上,N層架構(gòu)設(shè)計通常只是指服務(wù)器端的程序架構(gòu)。

  其次,標準的N層架構(gòu)設(shè)計是指系統(tǒng)分成表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層等。各層都有明確的負責范圍,表現(xiàn)層并不處理業(yè)務(wù)邏輯和數(shù)據(jù)訪問,業(yè)務(wù)邏輯層界面展現(xiàn)和數(shù)據(jù)訪問,數(shù)據(jù)訪問層不負責界面展現(xiàn)和業(yè)務(wù)邏輯處理。但現(xiàn)在許多宣稱N層架構(gòu)設(shè)計的系統(tǒng),都是各層混雜在一起,比如直接在表現(xiàn)層的ASPX頁面中處理業(yè)務(wù)邏輯、執(zhí)行數(shù)據(jù)庫查詢等。而ASP、PHP等腳本語言編寫的系統(tǒng),因為受限于其本身的特點,很難進行分層設(shè)計,基本上都是在ASP/PHP文件中直接處理所有業(yè)務(wù)邏輯和數(shù)據(jù)訪問。用ASP/PHP開發(fā)的產(chǎn)品,如果宣傳自己的N層架構(gòu),90%可以說是虛假宣傳。

  下面我們就來看看動易是如何分層設(shè)計的。

 

圖片點擊可在新窗口打開查看

  這是動易CMS2007的N層架構(gòu)設(shè)計示意圖。這個圖我在前面的博客文章中已經(jīng)講述了。我們現(xiàn)分別來看看每一層有哪些文件。

  先看表現(xiàn)層的ASPX文件:

  隨便打開一個文件夾。因為后臺管理文件夾中的文件最多,我們就以這個為例吧??矗@里有許多ASPX文件。

圖片點擊可在新窗口打開查看

  我們可以打開其中的一個文件來看看代碼吧。這里就打開Admin\Contents\CommentManage.aspx吧。大致的代碼如下圖:

圖片點擊可在新窗口打開查看

  我們可以看到第一行是這樣的:

我們可以從“MasterPageFile="~/Admin/MasterPage.master"”可以看出動易CMS2007采用了ASP.NET2.0的新特性——母版頁。關(guān)于母版頁的說明,大家可以參看這篇文章:

  在ASPX頁面中,我們只看到了HTML代碼和一些ASP.NET的控件,看不到任何程序代碼,這是因為動易CMS2007在表現(xiàn)層使用了ASP.NET的“代碼后置”特性,ASPX頁面中只放置了各種界面元素控件,相關(guān)的界面邏輯控制代碼放在另一個對應(yīng)的代碼文件中(與CommentManage.aspx對應(yīng)的就是CommentManage.aspx.cs)。發(fā)行時,這些表現(xiàn)層的代碼文件會統(tǒng)一編譯成一個PowerEasy.WebSite.dll(位于bin目錄中)。另外,一些公用的控件,是做為獨立的項目的,編譯后就形成了PowerEasy.Controls.dll、PowerEasy.ModelControls.dll。

  再來看看業(yè)務(wù)層和數(shù)據(jù)層的文件:

  在分層架構(gòu)中,業(yè)務(wù)層和數(shù)據(jù)層的文件因為不需要界面代碼,所以都會編譯成相應(yīng)的DLL文件(位于bin目錄中)。動易CMS2007也是這樣。

圖片點擊可在新窗口打開查看

  在這張圖中,我們可以看到,動易CMS2007這樣的大系統(tǒng),是將業(yè)務(wù)層的DLL按模塊進行了劃分,每個較大的模塊為一個項目,編譯后就形成了獨立的DLL文件。如:PowerEasy.Contents.dll、PowerEasy.Shop.dll、PowerEasy.Crm.dll等。另外,還有一些共用的業(yè)務(wù)邏輯,也獨立成相應(yīng)的項目。如:PowerEasy.Common.dll、PowerEasy.CacheFactory.dll、PowerEasy.Enumerations.dll。

  而PowerEasy.DalFactory.dll、PowerEasy.SqlServerDal.dll、PowerEasy.IDal.dll則是數(shù)據(jù)層文件。從這里我們可以看出,動易CMS2007的數(shù)據(jù)訪問層使用抽象工廠模式,將各個不同數(shù)據(jù)庫的實現(xiàn)方式分離,從而理論上可以支持任意的數(shù)據(jù)庫。目前動易CMS2007只提供了SQL Server的實現(xiàn),這就是PowerEasy.SqlServerDal.dll。等到系統(tǒng)功能穩(wěn)定后,會考慮增加ACCESS、Oracle、DB2、MySQL等數(shù)據(jù)庫實現(xiàn)。

  另外有一個在各層之間傳遞數(shù)據(jù)的實體層,對應(yīng)的的文件是PowerEasy.Model.dll。這個保存的系統(tǒng)中所有要用到的實體對象,如:管理員、角色、會員、會員組等等。

  其實,數(shù)據(jù)層還有一個文件,大家看不到。那就是放在SQL數(shù)據(jù)庫中的存儲過程代碼。這個因為和具體的數(shù)據(jù)庫密切相關(guān),數(shù)據(jù)庫不同,相應(yīng)的存儲過程的代碼會有所區(qū)別。動易CMS2007的存儲過程針對SQL2000和SQL2005分別進行了優(yōu)化,兩者不能通用,所以分別放在相應(yīng)的數(shù)據(jù)庫中了。

  總的來說,動易CMS2007的研發(fā)是一個非常龐大的工程,我們的開發(fā)團隊花了一年多時間,終于讓這個龐大工程初見雛形。目前框架已經(jīng)搭好,日后就是往這框架上添磚加瓦了,速度將比以前的研發(fā)進程快很多。

【打印正文】 發(fā)布時間:2007-08-20 09:30:02 瀏覽次數(shù): 作者:webboy 來源:本站原創(chuàng)
×

用戶登錄