動易SiteFactory新特性體驗之旅——N層架構設計
動易CMS 2007的新特性中有這樣一個非常重要的特性:
以下是引用片段: N層架構設計 動易CMS 2007多方面研究和參考微軟在企業(yè)架構的設計方案,采用以表現層、業(yè)務邏輯層、數據訪問層為主的N層架構設計。這樣的設計使得動易CMS 2007結構清晰、易于維護,極大地提高了軟件的可擴展性和重用性。 動易CMS 2007以其基于.Net的N層架構設計,為系統(tǒng)的可伸縮性提供了堅實的保障,可以適應各種網站規(guī)模。網站在不斷發(fā)展變化,從一個個人網站發(fā)展成大型門戶網站,采用分層設計的系統(tǒng)自始至終都可以滿足網站不斷發(fā)展的功能需求和性能需求。在網站早期,使用分層設計的系統(tǒng)可能會顯得有些浪費,在性能上帶來一些損失,但隨著網站的不斷發(fā)展,分層設計的系統(tǒng)可以不做任何修改或者只需少量修改即可滿足大型網站的要求。而沒有分層設計的系統(tǒng),初期可能速度會較快,但網站一旦發(fā)展壯大,就不得不重新設計系統(tǒng)架構或者更換程序。 無論你的網站是剛剛建立,還是已經成長為超級大站,動易CMS2007以其強大的可伸縮性始終可以伴隨您的左右! |
這個特性是非常技術性的??赡芎芏嗳瞬⒉魂P心這個特性,但我認為還是有必要讓大家多了解一下動易CMS 2007的一些技術內幕。呵呵,我的另一個目的當然就是想給大家展現一下動易的技術實力。
什么是N層架構設計呢?N層架構設計有哪些優(yōu)點和缺點?大家可以參看我的博客文章:
動易CMS 2007快報--系統(tǒng)架構:/Blog/kuaibao/2764.html
動易CMS 2007快報--系統(tǒng)架構2:/Blog/kuaibao/2765.html
N層架構設計有真假之分?,F在市面上許多軟件都宣稱自己是N層架構設計的,但我們只要認真研究一下對方的設計,就會發(fā)現有些廠商是在夸大宣傳,是為了提升自己的產品形象而進行虛假宣傳。
首先,有許多廠商根本沒有分清楚倒底什么是N層架構設計。有些廠商甚至把B/S(瀏覽器/服務器)和C/S(客戶端/服務器)模式也當成了N層架構來宣傳。而實際上,N層架構設計通常只是指服務器端的程序架構。
其次,標準的N層架構設計是指系統(tǒng)分成表現層、業(yè)務邏輯層、數據訪問層等。各層都有明確的負責范圍,表現層并不處理業(yè)務邏輯和數據訪問,業(yè)務邏輯層界面展現和數據訪問,數據訪問層不負責界面展現和業(yè)務邏輯處理。但現在許多宣稱N層架構設計的系統(tǒng),都是各層混雜在一起,比如直接在表現層的ASPX頁面中處理業(yè)務邏輯、執(zhí)行數據庫查詢等。而ASP、PHP等腳本語言編寫的系統(tǒng),因為受限于其本身的特點,很難進行分層設計,基本上都是在ASP/PHP文件中直接處理所有業(yè)務邏輯和數據訪問。用ASP/PHP開發(fā)的產品,如果宣傳自己的N層架構,90%可以說是虛假宣傳。
下面我們就來看看動易是如何分層設計的。
這是動易CMS2007的N層架構設計示意圖。這個圖我在前面的博客文章中已經講述了。我們現分別來看看每一層有哪些文件。
先看表現層的ASPX文件:
隨便打開一個文件夾。因為后臺管理文件夾中的文件最多,我們就以這個為例吧。看,這里有許多ASPX文件。
我們可以打開其中的一個文件來看看代碼吧。這里就打開Admin\Contents\CommentManage.aspx吧。大致的代碼如下圖:
我們可以看到第一行是這樣的:
我們可以從“MasterPageFile="~/Admin/MasterPage.master"”可以看出動易CMS2007采用了ASP.NET2.0的新特性——母版頁。關于母版頁的說明,大家可以參看這篇文章:
在ASPX頁面中,我們只看到了HTML代碼和一些ASP.NET的控件,看不到任何程序代碼,這是因為動易CMS2007在表現層使用了ASP.NET的“代碼后置”特性,ASPX頁面中只放置了各種界面元素控件,相關的界面邏輯控制代碼放在另一個對應的代碼文件中(與CommentManage.aspx對應的就是CommentManage.aspx.cs)。發(fā)行時,這些表現層的代碼文件會統(tǒng)一編譯成一個PowerEasy.WebSite.dll(位于bin目錄中)。另外,一些公用的控件,是做為獨立的項目的,編譯后就形成了PowerEasy.Controls.dll、PowerEasy.ModelControls.dll。
再來看看業(yè)務層和數據層的文件:
在分層架構中,業(yè)務層和數據層的文件因為不需要界面代碼,所以都會編譯成相應的DLL文件(位于bin目錄中)。動易CMS2007也是這樣。
在這張圖中,我們可以看到,動易CMS2007這樣的大系統(tǒng),是將業(yè)務層的DLL按模塊進行了劃分,每個較大的模塊為一個項目,編譯后就形成了獨立的DLL文件。如:PowerEasy.Contents.dll、PowerEasy.Shop.dll、PowerEasy.Crm.dll等。另外,還有一些共用的業(yè)務邏輯,也獨立成相應的項目。如:PowerEasy.Common.dll、PowerEasy.CacheFactory.dll、PowerEasy.Enumerations.dll。
而PowerEasy.DalFactory.dll、PowerEasy.SqlServerDal.dll、PowerEasy.IDal.dll則是數據層文件。從這里我們可以看出,動易CMS2007的數據訪問層使用抽象工廠模式,將各個不同數據庫的實現方式分離,從而理論上可以支持任意的數據庫。目前動易CMS2007只提供了SQL Server的實現,這就是PowerEasy.SqlServerDal.dll。等到系統(tǒng)功能穩(wěn)定后,會考慮增加ACCESS、Oracle、DB2、MySQL等數據庫實現。
另外有一個在各層之間傳遞數據的實體層,對應的的文件是PowerEasy.Model.dll。這個保存的系統(tǒng)中所有要用到的實體對象,如:管理員、角色、會員、會員組等等。
其實,數據層還有一個文件,大家看不到。那就是放在SQL數據庫中的存儲過程代碼。這個因為和具體的數據庫密切相關,數據庫不同,相應的存儲過程的代碼會有所區(qū)別。動易CMS2007的存儲過程針對SQL2000和SQL2005分別進行了優(yōu)化,兩者不能通用,所以分別放在相應的數據庫中了。
總的來說,動易CMS2007的研發(fā)是一個非常龐大的工程,我們的開發(fā)團隊花了一年多時間,終于讓這個龐大工程初見雛形。目前框架已經搭好,日后就是往這框架上添磚加瓦了,速度將比以前的研發(fā)進程快很多。
用戶登錄
還沒有賬號?
立即注冊