如何在ASP.NET中使用三層架構(gòu)_.Net教程
推薦:asp.net如何得到GRIDVIEW中某行某列值的方法根據(jù)某列的值改變其樣式最好的方法是在GridView的DataRowBound事件中想辦法。在GridView中的行綁定數(shù)據(jù)后將立即執(zhí)行 DataRowBound事件。DataRowBound事件使用GridViewRowEventargs類作為事件變量。通過事件變量你能夠利用 GridViewRowEventArgs屬性操作已經(jīng)綁定數(shù)據(jù)的
學ASP.NET都知道它的最經(jīng)典的架構(gòu)是三層架構(gòu),也是目前應(yīng)用得最廣泛的一種架構(gòu).以前說起三層架構(gòu)大家都知道MVC架構(gòu),這是html開發(fā)中用得比較多的,現(xiàn)在AJAX主要就是用這種架構(gòu)。大家ASP.NET的三層是指數(shù)據(jù)訪問層,業(yè)務(wù)邏輯層和表示層,而且都知道數(shù)據(jù)訪問層是用來訪問數(shù)據(jù)的,業(yè)務(wù)邏輯層是用來處理一些系統(tǒng)的業(yè)務(wù)邏輯的,表示層就是把內(nèi)容呈現(xiàn)出來給用戶,與用戶進行交互的。劃分三層的好處就是每一層都是獨立的,修改其中一層一般不會影響其他層的代碼,這樣就大大的方便了日后的維護和升級。它最大的缺點是架構(gòu)和編碼都比較復(fù)雜,而且對性能的提高沒有任何幫助,反而還可能會降低執(zhí)行效率。
有時候真的覺得“三層”編起來挺麻煩的,在ASP.NET 2.0里,訪問數(shù)據(jù)和顯示出來只要拖兩個控件就可以了(AccessDataSource/SQLDatasource和GridView),幾分鐘一個頁面就出來了,而且還具備了修改中,刪除,分頁,排序等功能。而用三層架構(gòu)就麻煩多了,先要寫數(shù)據(jù)訪問層的代碼,接著寫業(yè)務(wù)邏輯層的代碼(要調(diào)用數(shù)據(jù)層的方法),最后才是表示層,也就是頁面的設(shè)計,還有調(diào)用業(yè)務(wù)邏輯層的代碼讀取數(shù)據(jù)。(注意:表示層是絕對不會訪問數(shù)據(jù)層的內(nèi)容,只能通過業(yè)務(wù)層。業(yè)務(wù)層在這里是連接它們的橋梁。所以說業(yè)務(wù)層是最重要的一層)既然這樣為什么還要用三層呢?前面提到的一層架構(gòu)的一個很大的問題就是前臺和后臺代碼沒有很好的分開,不利于分工,第二,不利于日后的維護和升級。如果是個人主頁或者是一些一個人完成的小系統(tǒng)用一層還是挺方面的。如果是一些比較大的系統(tǒng),特別是企業(yè)級的應(yīng)用,就非用三層甚至n層不可了。一般三層就很夠了,再劃分更多只會增加設(shè)計和編碼的難度。
那到底怎么去分層呢?怎么樣分層就符合三層架構(gòu)原則呢?這是很多剛?cè)腴T的人經(jīng)常問的問題。我翻了很多本案例書,可惜很多都是一層或者是兩層架構(gòu)的,絕少三層的。后來研究了petshop4.0和下了一些國外的資料來看才開始對如何分層有點了解。我總結(jié)了一下主要有以下三種分層方式:
一:數(shù)據(jù)層不包含任何代碼,只有數(shù)據(jù)庫,還有相關(guān)的存儲過程。
這種模式下,數(shù)據(jù)層看起來就變得很簡單了。只包含你建立的數(shù)據(jù)庫,和一些存儲過程(注意是存儲過程)。其實這些存儲過程的建立也是相當復(fù)雜的(我以后會專門寫一篇這方面的文章),因為它們可以完成除數(shù)據(jù)訪問外的其他一些很強大的功能,如分頁,實現(xiàn)搜索算法等。數(shù)據(jù)訪問的邏輯就都放在業(yè)務(wù)層,當然業(yè)務(wù)層還包含其他一些邏輯代碼。我們來看一個示例,假設(shè)數(shù)據(jù)庫里有一個表BOOKS(書),建立一個存儲過程GetAllBooks,用來讀取書的信息,這樣在業(yè)務(wù)層里編一個方法GetBookS()和一個公用數(shù)據(jù)庫訪問類,GetBooks()就通過數(shù)據(jù)庫訪問類打開連接,執(zhí)行在存儲過程,返回數(shù)據(jù)(返回類型可以是DataTable,DataSet,DataReader或者實體類)。業(yè)務(wù)層單獨編譯成一個或者幾個DLL文件。接著就是表示層了,表示層通過調(diào)用GetBookS()返回數(shù)據(jù)綁定在相關(guān)的控件里。務(wù)層的方法都是在表示層調(diào)用。一般來說book.aspx和book.aspx.cs都是表示層的內(nèi)容。所有前臺的設(shè)計,相關(guān)控件,數(shù)據(jù)緩存都是屬于表示層。
二:數(shù)據(jù)層還包含所有公共數(shù)據(jù)訪問代碼。
這種模式和前一種差別不大,主要是把數(shù)據(jù)訪問代碼六到數(shù)據(jù)層。這樣可以很方面實現(xiàn)對多數(shù)據(jù)庫的支持。業(yè)務(wù)邏輯層直接調(diào)用數(shù)據(jù)層的相關(guān)訪問數(shù)據(jù)的代碼,完全不必了解底層是什么數(shù)據(jù)庫。其他和前一種沒什么分別。
三:所有數(shù)據(jù)讀取都放在數(shù)據(jù)層。
這種模式下像前面所述的GetBooks()方法都是放在數(shù)據(jù)層,在業(yè)務(wù)層再定義一個GetBookS()方法以供表示層調(diào)用。這種模式下業(yè)務(wù)層不但不必了解底層是什么數(shù)據(jù)庫,而且連數(shù)據(jù)庫的結(jié)構(gòu)都不必了解了。這可以說是最標準的三層架構(gòu)了,在Microsoft的PetShop 4.0里就是用這種模式。
以上就是我總結(jié)的一些內(nèi)容,可能不是很準確,請大家多多指教。
分享:.net SMTP發(fā)送Email實例(可帶附件)本文為大家詳細介紹下.net SMTP發(fā)送Email同時可帶附件的具體實現(xiàn)思路及代碼,想實現(xiàn)的朋友可以參考下哈,希望對大家有所幫助 復(fù)制代碼 代碼如下: public static void sendEmail(string toAddress, string emailbody) { var fromAddress = ConfigurationManager.AppSetti
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 關(guān)于ADO.NET數(shù)據(jù)庫連接的相關(guān)知識的總結(jié)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- 使用asp.net的pageDataSource中時索引問題解決方法
- Web.config 和 App.config 的區(qū)別分析
- 基于.NET中:自動將請求參數(shù)綁定到ASPX、ASHX和MVC的方法(菜鳥必看)
- GridView_RowUpdating取不到新值的解決方法
- 在ASP.Net 2.0中實現(xiàn)多語言界面的方法
- 揭秘ASP.NET常用的26個優(yōu)化性能方法
- Asp.Net中動態(tài)頁面轉(zhuǎn)靜態(tài)頁面
- MSDN Visual系列:創(chuàng)建SharePoint Services解決方案包
- 相關(guān)鏈接:
- 教程說明:
.Net教程-如何在ASP.NET中使用三層架構(gòu)
。