欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談ASP.NET中多層架構(gòu)

 更新時間:2015年06月16日 11:47:36   投稿:hebedich  
Asp.net的多層架構(gòu)主要是為了解決數(shù)據(jù)層,邏輯層,表示層等之間的關(guān)系。我的做法是這樣的:首先建立一個DataCore的基類?;惱锩娣庋b了一些低層的數(shù)據(jù)庫的基本操作,比如說數(shù)據(jù)庫聯(lián)接,調(diào)用存儲過程等等。

很多人對開發(fā)多層應(yīng)用程序感到一定的困難。來看一個例子:對于一個只有一兩個人的小公司,一個人可能同時擔(dān)當(dāng)老板、出納、會計、市場、銷售、開發(fā)等多項工作。而對于一個大公司,就會進行比較嚴(yán)密的分工,每個人只完成一部分工作,需要彼此配合才能保證正常運轉(zhuǎn)。以前的開發(fā)程序就類似于一個小公司,從用戶界面到數(shù)據(jù)庫訪問等所有功能都在一個頁面內(nèi)完成,這樣的缺點有:

    1. 開發(fā)起來比較困難,很難實現(xiàn)多人協(xié)作開發(fā)

    2. 一旦數(shù)據(jù)庫或規(guī)則有變,就可能要重新修改整個頁面,加大維護成本

    3. 因為所有功能都混合在一起,程序重用性差。如果開發(fā)一個新項目,幾乎要重寫代碼

        為了解決這個問題,人們就提出了“多層應(yīng)用程序”概念,其本質(zhì)類似于一個職權(quán)明確的大公司,對頁面進行分工,將數(shù)據(jù)訪問、業(yè)務(wù)規(guī)則等功能都放在專門的文件中。比較流行的有二層架構(gòu)、三層架構(gòu)和MVC。

一. 二層架構(gòu)

         二層架構(gòu),就是將程序分為用戶界面層和數(shù)據(jù)訪問層。其本質(zhì)是將訪問數(shù)據(jù)庫的代碼放入數(shù)據(jù)訪問層中,而用戶界面層通過數(shù)據(jù)訪問層對數(shù)據(jù)庫進行操作。 相互作用關(guān)系如下:("<--->"表示雙向箭頭)

用戶界面 <---> 數(shù)據(jù)訪問 <---> 數(shù)據(jù)庫

二. 三層架構(gòu)

        三層架構(gòu),即將二層架構(gòu)中的業(yè)務(wù)邏輯從數(shù)據(jù)訪問層中分離出來,成為一個單獨的業(yè)務(wù)邏輯層。將程序分為三層后,數(shù)據(jù)訪問層就只管對數(shù)據(jù)庫進行操作,而業(yè)務(wù)邏輯層負(fù)負(fù)責(zé)對數(shù)據(jù)進行各種處理。
從頂層上主要包含了4個部件:DAL(數(shù)據(jù)處理層)、BLL(業(yè)務(wù)邏輯層)、UI(用戶接口層)、Model(實體模型)。其中前三者就是人們常說的三層結(jié)構(gòu)。
    1)數(shù)據(jù)訪問層(database access layer,DAL):有時候也稱為是持久層,其功能主要是負(fù)責(zé)數(shù)據(jù)庫的訪問。簡單的說法就是實現(xiàn)對數(shù)據(jù)表的Select,Insert,Update, Delete的操作。如果要加入ORM的元素,那么就會包括對象和數(shù)據(jù)表之間的mapping,以及對象實體的持久化;
    2)業(yè)務(wù)邏輯層(business logic layer, BLL):是整個系統(tǒng)的核心,它與這個系統(tǒng)的業(yè)務(wù)(領(lǐng)域)有關(guān);
    3)表示層(user interface layer, UIA):是系統(tǒng)的UI部分,負(fù)責(zé)使用者與整個系統(tǒng)的交互。在這一層中,理想的狀態(tài)是不應(yīng)包括系統(tǒng)的業(yè)務(wù)邏輯。表示層中的邏輯代碼,僅與界面元素有關(guān);
   4)實體模型層(Model):包含了所有的數(shù)據(jù)信息,這些數(shù)據(jù)信息以各種Entity實例的形式存在。是整個系統(tǒng)基礎(chǔ)層次;

        完善的三層結(jié)構(gòu)應(yīng)該是:修改表示層而不用修改邏輯層,修改邏輯層二不用修改數(shù)據(jù)訪問層。達到一定程度上的解耦。

        三層架構(gòu)主要是使項目結(jié)構(gòu)更清楚,分工更明確,有利于后期的維護和升級。它解決了整個應(yīng)用程序中各個業(yè)務(wù)操作過程中不同階段的代碼封裝的問題,使程序員更加專注的處理某階段的業(yè)務(wù)邏輯。然而未必會提升性能,因為當(dāng)子程序模塊未執(zhí)行結(jié)束時,主程序模塊只能處于等待狀態(tài)。這說明將應(yīng)用程序劃分層次,會帶來其執(zhí)行速度上的一些損失。但從團隊開發(fā)效率角度上來講卻可以感受到大不相同的效果。

        需要注意的是,雖然三層架構(gòu)有很多的好處,但如果你的程序很簡單,或者將來肯定不會重用,或不一定要采用兩層架構(gòu),也許采用兩層或普通的程序開發(fā)速度會更快。要根據(jù)實際情況具體處理。

三. MVC

        M 即Model(模型層),主要負(fù)責(zé)出來業(yè)務(wù)邏輯以及數(shù)據(jù)庫的交互;
        V 即View(視圖層),主要用于顯示數(shù)據(jù)和提交數(shù)據(jù);
        C 即Controller(控制器),主要是用作捕獲請求并控制請求轉(zhuǎn)發(fā);

        MVC是在應(yīng)用程序(BS結(jié)構(gòu))的視圖層劃分出來的不同功能的幾個模塊,主要是為了解決應(yīng)用程序用戶界面的樣式替換問題,把展示數(shù)據(jù)的 HTML 頁面盡可能的和業(yè)務(wù)代碼分離。

四. 三層結(jié)構(gòu)與MVC的區(qū)別

區(qū)別的話,看圖就能明白:

圖2. MVC 與 三層架構(gòu)的區(qū)別

         三層架構(gòu)是界面層(UI)業(yè)務(wù)邏輯層(BLL)和數(shù)據(jù)訪問層(DAL)構(gòu)成的,而MVC是模型層(M)界面層(View)和控制層(Controller)構(gòu)成的,而且他們之間也不對應(yīng)。
        如果硬要給他們對應(yīng)的話,那么三層架構(gòu)中的UI對應(yīng)MVC中的view都是用于顯示以及獲取界面的數(shù)據(jù);三層架構(gòu)中的BLL層和DAL層對應(yīng)MVC中的Model層都是用于處理上層傳遞來的數(shù)據(jù)以及從數(shù)據(jù)庫獲取的數(shù)據(jù)的;MVC中的Controller最多算是三層架構(gòu)中的UI的一部分。

五. 三層架構(gòu)引用關(guān)系

Model層:不引用任何項目;
DAL層:引用Model,通過讀取web.config里的程序集,加載類的實例,返回給BLL使用;
BLL層:引用Model,DAL;
UI層:引用Model, BLL;

       方法是在資源管理器中右擊項目文件,添加引用。在彈出的對話框中選中項目標(biāo)簽,選擇適當(dāng)?shù)念悗旌簏c擊確定。然后再在項目文件中添加using “引用類的命名空間”。

        項目已經(jīng)添加了引用,但仍然找不到指定類庫文件,可檢查:
            1. 引用的項目中是否有語法錯誤,是否在頭文件中添加using “命名空間”;
            2. 添加的類庫時,是否該類庫為public。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • ASP.NET 定制簡單的錯誤處理頁面實現(xiàn)代碼

    ASP.NET 定制簡單的錯誤處理頁面實現(xiàn)代碼

    通常web應(yīng)用程序在發(fā)布后,為了給用戶一個友好界面和使用體驗,都會在錯誤發(fā)生時跳轉(zhuǎn)至一個自定義的錯誤頁面,而不是asp.net向用戶暴露出來的詳細的異常列表。
    2010-01-01
  • asp.net TIDFtp用法介紹

    asp.net TIDFtp用法介紹

    現(xiàn)在很多應(yīng)用都需要上傳與下載大型文件,通過HTTP方式上傳大文件有一定的局限性。幸好FTP作為一個非常老而且非常成熟的協(xié)議可以高效穩(wěn)定地完成大文件的上傳下載,并且可以完美地實現(xiàn)續(xù)傳。
    2011-07-07
  • ASP.NET repeater添加序號列的方法

    ASP.NET repeater添加序號列的方法

    在項目開發(fā)過程中,會經(jīng)常遇到ASP.NET repeater控件添加序號列,有些新手可能還不會,網(wǎng)上搜集整理了一些,需要的朋友可以參考下
    2012-11-11
  • asp.net 讀取Excel數(shù)據(jù)到DataTable的代碼

    asp.net 讀取Excel數(shù)據(jù)到DataTable的代碼

    asp.net 讀取Excel數(shù)據(jù)到DataTable的代碼,需要的朋友可以參考下。
    2010-03-03
  • ASP.NET MVC實現(xiàn)批量文件上傳

    ASP.NET MVC實現(xiàn)批量文件上傳

    這篇文章主要為大家詳細介紹了ASP.NET MVC實現(xiàn)批量文件上傳,簡單介紹單文件上傳的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • .net中的session與cookies區(qū)別及使用方法

    .net中的session與cookies區(qū)別及使用方法

    cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上,cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙,考慮到安全應(yīng)當(dāng)使用session
    2013-04-04
  • 高效的使用 Response.Redirect解決一些不必要的問題

    高效的使用 Response.Redirect解決一些不必要的問題

    這篇文章主要介紹了如何高效的使用 Response.Redirect解決一些不必要的問題,需要的朋友可以參考下
    2014-05-05
  • 高仿Windows Phone QQ登錄界面實例代碼

    高仿Windows Phone QQ登錄界面實例代碼

    這篇文章主要介紹了高仿Windows Phone QQ登錄界面實例代碼,有需要的朋友可以參考一下
    2013-12-12
  • asp.net request.PathInfo實現(xiàn)的url重寫

    asp.net request.PathInfo實現(xiàn)的url重寫

    最近對在開始研究url重寫,對重寫的原理以及重寫之后引起的性能問題是研究的重點,研究過程中發(fā)現(xiàn)了一種輕便的“url重寫方案”
    2009-04-04
  • .Net Core使用MongoDB的詳細教程

    .Net Core使用MongoDB的詳細教程

    這篇文章主要給大家介紹了關(guān)于.Net Core使用MongoDB的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論