熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 的內容管理系統 CMS 的體系結構

2013-11-13 10:16:27  來源: .NET編程 

  在公司的例會上你的老板給你布置了一個新任務這個任務聽起來一點也不難你所要做的一切就是為你公司的網站建立一個簡單的基於Microsoft NET的內容管理系統(CMS)當你離開會議廳時你可能剛剛開始覺得蹊跷為什麼沒有人試圖得到這個任務你甚至記起當宣布這個項目時你的幾個同事都躲了起來這究竟是怎麼回事? 
  你也許還不知道這個新任務會逼著你必須學習許多新技術如HTMLJavaScriptASPNETC#SQLXML ADONET NET remoting網絡服務等你還需要掌握幾個概念如n層(ntier)體系結構數據庫開發版本控制工作流(workflow)個人化(personalization)和安全等等
  
  無論你是否認同這一點你無疑是得到一個好項目因為在開發過程會逼得你學到很多東西唯一的遺憾就是沒有人會立即認識到你在完成這個簡單的項目後變得多麼博學了
  
  有一大堆文章談到建立你那個簡單的CMS(內容管理系統)所需要的內容沿著這條路走下去我們將探索與CMS開發有關的眾多技術和概念我們在開篇文章所提到的技術在會在我們的實現樣本中一一出現那讓我們從基本體系結構(即三層和多層體系結構)來開始本系列文章吧
  
  CMS三層體系結構
  我曾在開發CMS(內容管理系統)三層體系結構上受到好評不過那已經是好久以前的事了CMS三層體系結構與標准三層客戶端/服務器體系結構是基本對應的CMS三層體系結構沒有什麼難以理解的內容都是一些常識性的東西它的每一層對應著一個體系結構中必須的元素交互(interaction)操作(manipulation)以及存儲這三層是
  
  表示層——處理與用戶的交互交流
  事務邏輯(business logic)層——處理用戶所需要的信息
  數據庫層——存儲系統所處理的所有數據
  圖A中直觀的表示了CMS三層體系結構圖A所示的層分別位於不同的機器上實際上多個層可以存在於同一台計算機中但是將它們分布在多台計算機中可以更好的分配CMS系統的負荷
  
 

  CMS n層體系結構
  簡單的說CMS n層體系結構就是把CMS三層體系結構的各個層分解為多個層如圖B所示把層進行分解的好處是使得各個層更好的協調工作從而提高了系統性能同時這也使得系統分布在更多的計算機上這樣可以減少系統由於指定計算機耗時過多而造成的瓶頸從而提高了系統負荷
  
 

  表示層是什麼?
  盡管表示層並不見得比其它層更重要但是它幾乎得到了全部的榮耀——因為它是唯一的CMS用戶可以看到的層這個層負責CMS與用戶的交互工作
  
  表示層實際上由兩部分組成即Web客戶端和Web服務器Web客戶端駐留在用戶計算機中通常用來接受Web浏覽器的表格(form)Web服務器位於Web主機地址上用來生成動態Web頁面和組成CMS系統的表格
  
  Web客戶端與Web服務器端通過請求——回應的方式來相互通信Web客戶端向Web服務器發出請求Web服務器根據請求作出回應
  
  Web客戶端使用的是HTTP的請求方式
  
  GET /l HTTP/
   UserAgent: Mozilla/ (compatible; MSIE ; Windows NT)
  
  Web servers respond using the HTTP response For example:
  HTTP/ OK
  Server: MicrosoftIIS/
  Date: Thu Jul :: GMT
  Connection: KeepAlive
  ContentLength:
  ContentType: text/html
  SetCookie: ASPSESSIONIDQQQGQGDC=MOFPDBPCPNIBACIBDCIOFCCL; path=/
  Cachecontrol: private
  
  HTML嵌入了Web服務器發出的回應該回應用來指示浏覽器顯示什麼內容JavaScript用來實現客戶端的基本功能最近以來其它技術如Java applet和ActiveX組件開始流行了不過Web服務器在最初發出的回應中絕大多數還是使用HTML這包括了服務器發出的用於通知客戶端使用何種HTML以外的技術來接管後面的執行過程的回應
  
  事務邏輯層是什麼?
  
  
  重申一次事務邏輯層的功能可以放到單個的服務器上(三層體系結構)也可以分布到多個服務器上(n層體系結構)事務邏輯層的功能包括以下三個部分
  
  訪問(獲取和保存)數據庫層的數據
  從表示層獲取數據
  執行必要的運算並且/或者處理數據
  事務邏輯層從數據庫層獲取數據並根據表示層的需要來對數據進行處理事務邏輯層也可以獲得表示層提供的數據並根據數據庫層的需要對其進行處理
  
  CMS事務邏輯層的許多邏輯與其它兩個層的交接(interfacing)有關在MicrosoftNET下由於ADONETNET remoting和Web服務器的幫助這種邏輯的復雜性大多都被降低了有了NET之後該層的最復雜的邏輯就是用於處理事務邏輯而進行計算和處理數據任務了(用C#或者Managed C++)
  
  什麼是數據庫層
  數據庫層的名字告訴了我們它的任務是什麼了它用來處理CMS數據一個不太引人注意的地方就是它的數據存儲和檢索功能並不限制於數據庫它可以是單個或者一系列平面文件(flat file)可能是XML格式不過數據通常還是存在數據庫中數據庫的類型並不重要因為對絕大多數CMS系統來說Microsoft SQL Server 與Oracle以及Sybase同樣優秀(至少你在Windows環境下)也就是說微軟公司已經為Microsoft SQL Server 優化了NET接口(interface)這可能會給它一個小小的優勢(edge)不過其它數據庫提供商也沒有閒著微軟的這個優勢很快就會消失
  
  如果你不偏好某種數據庫你最好按通用的方式編寫代碼這樣你可以把任何數據庫嵌入到你的CMS中誰知道將來會怎樣?今年所選擇的數據庫明年你可能就不想再用了是不是?
  
  數據庫層通常有它所在的計算機加載和訪問在大型的CMS中通常在另一台計算機上保存一個鏡像拷貝這樣可以在主機發生故障時可以用它來頂替
  
  數據庫層的內部工作過程以及數據庫本身對一般的編程者來說是一個迷開發者在本層的主要任務就是建立數據庫創建並載入數據庫綱要(schema)偶爾也需要生成報表還有一點就是要常常備份數據庫
  
  選擇哪一種體系結構?
  選擇哪一種體系結構(三層或者n層)取決於以下因素
  
  CMS 需要實現的功能
  數據的數量
  並行工作的用戶數量
  預期的增長
  基本上如果你的CMS系統將一直保持較小的規模最好選擇三層體系結構相反如果你估計CMS系統會越來越大n層體系結構是一個明智的選擇
  
  由於服務器間的通信量不高三層體系結構更容易實現但是在NET中並不一定要這麼做由於三層體系容易構建所以可以早日投入使用這樣如果市場要求很急迫三層體系結構也可以作為大的CMS系統的暫時解決方案把三層體系結構的方案幾乎無痛苦的移植到n層體系結構是可行的不過你要認識到擁有大量用戶的三層體系的CMS系統很可能會超負荷的
  
  小結
  現在你應該基本理解這兩種主要用於CMS的體系結構同時你也應該可以科學的評估你應該使用哪一種體系結構

From:http://tw.wingwit.com/Article/program/net/201311/13137.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.