程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> PetShop的系統架構設計 3

PetShop的系統架構設計 3

編輯:.NET實例教程
     以看到,在數據訪問層中,完全采用了“面向接口編程”思想。抽象出來的IDAL模塊,脫離了與具體數據庫的依賴,從而使得整個數據訪問層利於數據庫遷移。DALFactory模塊專門管理DAL對象的創建,便於業務邏輯層訪問。SQLServerDAL和OracleDAL模塊均實現IDAL模塊的接口,其中包含的邏輯就是對數據庫的Select,Insert,Update和Delete操作。因為數據庫類型的不同,對數據庫的操作也有所不同,代碼也會因此有所區別。
  
  此外,抽象出來的IDAL模塊,除了解除了向下的依賴之外,對於其上的業務邏輯層,同樣僅存在弱依賴關系,如下圖所示:
  
  
  圖七:業務邏輯層的模塊結構圖
  
  圖七中BLL是業務邏輯層的核心模塊,它包含了整個系統的核心業務。在業務邏輯層中,不能直接訪問數據庫,而必須通過數據訪問層。注意圖中對數據訪問業務的調用,是通過接口模塊IDAL來完成的。既然與具體的數據訪問邏輯無關,則層與層之間的關系就是松散耦合的。如果此時需要修改數據訪問層的具體實現,只要不涉及到IDAL的接口定義,那麼業務邏輯層就不會受到任何影響。畢竟,具體實現的SQLServerDAL和OracalDAL根本就與業務邏輯層沒有半點關系。
  
  因為在PetShop 4.0中引入了異步處理機制。插入訂單的策略可以分為同步和異步,兩者的插入策略明顯不同,但對於調用者而言,插入訂單的接口是完全一樣的,所以PetShop 4.0中設計了IBLLStrategy模塊。雖然在IBLLStrategy模塊中,僅僅是簡單的IOrderStategy,但同時也給出了一個范例和信息,那就是在業務邏輯的處理中,如果存在業務操作的多樣化,或者是今後可能的變化,均應利用抽象的原理。或者使用接口,或者使用抽象類,從而脫離對具體業務的依賴。不過在PetShop中,由於業務邏輯相對簡單,這種思想體現得不夠明顯。也正因為此,PetShop將核心的業務邏輯都放到了一個模塊BLL中,並沒有將具體的實現和抽象嚴格的按照模塊分開。所以表示層和業務邏輯層之間的調用關系,其耦合度相對較高:
  
  
  
  圖八:表示層的模塊結構圖
  
  在圖五中,各個層次中還引入了輔助的模塊,如數據訪問層的Messaging模塊,是為異步插入訂單的功能提供,采用了MSMQ(Microsoft Messaging Queue)技術。而表示層的CacheDependency則提供緩存功能。這些特殊的模塊,我會在此後的文章中詳細介紹。 
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved