日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

web程序分層結構

 liuqg 2006-03-10
web程序分層結構

今天突然想到分層的問題,可能有的晚了,不過問題可能不是很嚴重,因為我的數據訪問很多都是在一個類里面實現的。

為了搞明白分層的涵義,瀏覽了一些資料,把其中的一些摘錄如下:

一篇好文章:用MS.NET開發(fā)三層結構應用程序

1、推薦的實例:PetShop、Dowamish

2、

不用想得這么復雜,說白了,三層架構就是
cs文件是其中一層
不在CS文件中直接操作數據庫,把所有操作數據庫的語句都寫成類,這個類文件又是其中一層,
SQL server的東西(如存儲過程等)又是一層

3、

依我認為,這樣比較清晰,不必搞得這么復雜。
1、新建一個項目。
2、添加,新建項目,類庫。(需要多少層就建多少次)
在需要引用的地方加上using即可。

4、

“三層結構”一詞中的“三層”是指:“外觀層”、“中間層”、“數據庫層”。其中:
      外觀層:位于最外層,直接呈現在用戶面前。用于顯示數據,并為用戶提供一種交互式的界面。
      中間層:負責處理用戶輸入的信息,或者是將這些信息發(fā)送給數據庫層進行保存,或者是調用數據庫層中的函數再次讀出這些數據。
      數據庫層:僅實現對數據的保存和讀取操作。
通俗點說:一個“三層結構”的Web應用程序,就象是公司生產線。
      WebUI(Web User Interface Layer)就像是公司的經理,他負責洞察市場趨勢,決策產品的生產。并根據市場籌策下一步計劃。
      BLL(Business Logic Layer)就像是公司的管理員,他主要負責管理下層員工,傳達上級布置的生產任務給員工,并將生產結果反饋給上級Web。
      DA(Data Access Layer)就是公司里的工人,他們主要是負責產品的生產裝配工作,并將生產結果反饋給上級InterService。他們并不需要知道產品將銷往何處,也不用關心產品銷量。只要能完成任務,就可以拿到報酬。

     那么我們假設有一段登錄代碼,則可以這樣處理Web程序,外觀層負責接收前臺頁面的數據,然后傳給中間層,中間層對數據進行處理,比如格式化,防SQL注入等等一些,這樣的數據再傳給數據訪問層然后與數據庫進行操作,比如與數據庫的用戶名和密碼匹配等等一些代碼。

5、

http://community.csdn.net/Expert/topic/4294/4294668.xml?temp=.8061029

Web 層

Web 層為客戶端提供對應用程序的訪問。這一層是作為 Duwamish.sln 解決方案文件中的 Web 項目實現的。Web 層由 ASP.NET Web 窗體和代碼隱藏文件組成。Web 窗體只是用 HTML 提供用戶操作,而代碼隱藏文件實現各種控件的事件處理。

業(yè)務外觀層

業(yè)務外觀層為 Web 層提供處理帳戶、類別瀏覽和購書的界面。這一層是作為 Duwamish.sln 解決方案文件中的 BusinessFacade 項目實現的。業(yè)務外觀層用作隔離層,它將用戶界面與各種業(yè)務功能的實現隔離開來。除了低級系統和支持功能之外,對數據庫服務器的所有調用都是通過此程序集進行的。

業(yè)務規(guī)則層

業(yè)務規(guī)則層是作為 Duwamish.sln 解決方案文件中的 BusinessRules 項目實現的,它包含各種業(yè)務規(guī)則和邏輯的實現。業(yè)務規(guī)則完成如客戶帳戶和書籍訂單的驗證這樣的任務。

數據訪問層

數據訪問層為業(yè)務規(guī)則層提供數據服務。這一層是作為 Duwamish.sln 解決方案文件中的 DataAccess 項目實現的


代碼示例:

以下是兩種不同處理路徑的代碼示例:

獲取商品目錄

表示層調用業(yè)務外觀層:

productSystem = new ProductSystem();

categorySet = productSystem.GetCategories(categoryID);

業(yè)務外觀層直接調用數據層:

public CategoryData GetCategories(int categoryId)
{
if ( dsCommand == null )
{
throw new System.ObjectDisposedException( GetType().FullName );
}
return FillCategoryData("GetCategories", "@CategoryId", categoryId);
}

添加定單

表示層調用業(yè)務外觀層:

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);
}

業(yè)務外觀層調用業(yè)務規(guī)則層:

public OrderData AddOrder(OrderData order)
{
ApplicationAssert.CheckCondition(order != null, "Order is required", ApplicationAssert.LineNumber);

(new BusinessRules.Order()).InsertOrder(order);
return order;
}

業(yè)務規(guī)則層調用數據層:

public bool InsertOrder(OrderData order)
{
//此處省略復雜的處理邏輯
if ( isValid )
{
using (DataAccess.Orders ordersDataAccess = new DataAccess.Orders())
{
return (ordersDataAccess.InsertOrderDetail(order)) > 0;
}
}
else
return false;
}

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多