Web 層
Web 層為用戶端提供對應用程式的訪問。這一層是作為 Duwamish.sln 解決方案檔案中的 Web 項目實現的。Web 層由 ASP.NET Web Form和程式碼後置檔案組成。Web Form只是用 HTML 提供使用者操作,而程式碼後置檔案實現各種控制項的事件處理。
業務外觀層
業務外觀層為 Web 層提供處理帳戶、類別瀏覽和購書的介面。這一層是作為 Duwamish.sln 解決方案檔案中的 BusinessFacade 項目實現的。業務外觀層用作隔離層,它將使用者介面與各種業務功能的實現隔離開來。除了低級系統和支援功能之外,對資料庫伺服器的所有調用都是通過此程式集進行的。
商務規則層
商務規則層是作為 Duwamish.sln 解決方案檔案中的 BusinessRules 項目實現的,它包含各種商務規則和邏輯的實現。商務規則完成如客戶帳戶和書籍訂單的驗證這樣的任務。
資料訪問層
資料訪問層為商務規則層提供資料服務。這一層是作為 Duwamish.sln 解決方案檔案中的 DataAccess 項目實現的。
程式碼範例:
以下是兩種不同處理路徑的程式碼範例:
擷取商品目錄
展示層調用業務外觀層:
productSystem = new ProductSystem();
categorySet = productSystem.GetCategories(categoryID);
業務外觀層直接調用資料層:
public CategoryData GetCategories(int categoryId)
{
if ( dsCommand == null )
{
throw new System.ObjectDisposedException( GetType().FullName );
}
return FillCategoryData("GetCategories", "@CategoryId", categoryId);
}
添加定單
展示層調用業務外觀層:
public void AddOrder()
{
ApplicationAssert.CheckCondition(cartOrderData != null, "Order requires data", ApplicationAssert.LineNumber);
ApplicationLog.WriteTrace("Duwamish7.Web.Cart.AddOrder:\r\nCustomerId: " +
cartOrderData.Tables[OrderData.CUSTOMER_TABLE].Rows[0][OrderData.PKID_FIELD].ToString());
cartOrderData = (new OrderSystem()).AddOrder(cartOrderData);
}
業務外觀層調用商務規則層:
public OrderData AddOrder(OrderData order)
{
ApplicationAssert.CheckCondition(order != null, "Order is required", ApplicationAssert.LineNumber);
(new BusinessRules.Order()).InsertOrder(order);
return order;
}
商務規則層調用資料層:
public bool InsertOrder(OrderData order)
{
//此處省略複雜的處理邏輯
if ( isValid )
{
using (DataAccess.Orders ordersDataAccess = new DataAccess.Orders())
{
return (ordersDataAccess.InsertOrderDetail(order)) > 0;
}
}
else
return false;
}