亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        NET三層架構中一種對數據訪問層進行解耦的快速開發(fā)模型及實現

        2018-01-23 12:10:17梁啟恒
        價值工程 2017年29期

        梁啟恒

        摘要:文章對.NET三層架構的耦合性進行了探討,提出一種利用強數據類型數據集和反射、泛型技術對數據訪問層進行解耦的開發(fā)模型并實現之,進一步降低三個層次之間的耦合度。

        關鍵詞:數據訪問層;解耦;反射;泛型;三層架構技術

        0引言

        我們開發(fā)業(yè)務系統(tǒng),都會希望這個業(yè)務系統(tǒng)具備模塊化、松耦合的特性,這樣可以達到快速開發(fā)和適應業(yè)務系統(tǒng)變更的目的。

        1三層架構

        通常意義上的三層架構(3-tier architecture)就是將整個系統(tǒng)從上至下劃分為:表示層(UI)、業(yè)務邏輯層(BLL)、數據訪問層(DAL)。區(qū)分層次的目的體現了“高內聚,低耦合”的思想,三個層次各負其責,相對獨立。數據訪問層僅僅負責對數據庫的增刪查改,功能可以很簡單。業(yè)務邏輯層負責從數據訪問層獲取數據,根據業(yè)務邏輯對數據進行處理,并將處理結果提供給表示層進行顯示。表示層一般是通過用戶界面,將用戶的輸入(請求)經過簡單處理,提交給表示層,然后把表示層返回的結果在用戶界面上顯示。

        2三層架構的解耦

        三層架構的優(yōu)勢,是各司其職,降低耦合。耦合度的衡量,可以通過考察三個層次之間的依賴關系。依賴關系越緊密,耦合度越高。耦合度高的稱之為緊耦合,反之稱為松耦合。我們的目標就是降低三層之間的依賴關系,如:在數據訪問層發(fā)生改變時,業(yè)務邏輯層不需要做出修改或盡量少修改。松耦合的三層架構有助于我們快速開發(fā)應用,也有助于我們靈活地增添業(yè)務模塊。

        本文的目的,就是提出一種在NET三層架構中對數據訪問層進行解耦的快速開發(fā)模型并實現之。

        3數據訪問層的解耦模型

        通常在三層架構中,數據訪問層與數據庫的耦合度很高。雖然數據訪問層功能較簡單,主要是實現數據的增刪查改。但是在實際的開發(fā)實踐中,這一部分的開發(fā)往往需要開發(fā)人員編寫大量的SQL語句,如果數據表發(fā)生改變,幾乎所有有關的增刪查改的SQL語句都需要修改,增加了升級和維護的工作量,且極易出錯。

        解決辦法是,我們可以通過使用.NET框架下的強數據類型數據集DataSet,建立模型類Model,利用反射和泛型,實現數據訪問層的解耦。反射可以將Model和DataSet的數據表進行自動映射轉換,使得我們在執(zhí)行增刪查改操作時不必關心字段參數,只需模型類的屬性與數據表字段一一對應即可。利用泛型則解決了多表的問題:實現一個泛型類,就可以對應所有數據表的增刪查改操作,而不需要對每張數據表都編寫一個數據訪問類。泛型簡化了代碼,也降低了DAL與數據庫的耦合度。增加一個數據表,或是修改數據表,只需要更新DataSet和Model,就可以實現對新數據表的增刪查改操作,大大降低代碼的維護量。

        泛型實現的關鍵就是新增的模型類Model。模型類是數據表的實體類,要求其對外公開的屬性與數據庫表的字段具有一一對應關系。DAL、BLL、UI三層分別引用Model,Model事實上成為各層訪問數據的接口定義。利用反射機制使模型類和數據訪問類泛型化,進一步抽象,統(tǒng)一外部對各數據表的訪問,從而降低各層之間的耦合度,更是數據訪問層解耦的關鍵之處。(圖1)

        4 DAL解耦模型的實現

        4.1強數據類型數據集DataSet

        DataSet可以在VS IDE中通過拖動數據源快速生成各數據表的實例。使用強數據類型數據集,各數據項都有明確的類型定義,如果類型不符,編譯就會出錯。這樣有兩個好處,一是減少出錯機會,二是可以快速生成,減少代碼的編寫,VS支持直接拖動數據表生成實例,不用編寫一句代碼。在DataSet中,每個數據表適配器TableAdapter都是訪問對應數據表的接口類,如userTableAdapter是訪問user數據表的接口類。在DAL中通過初始化TableAdapter來訪問數據表。我們?yōu)槊總€數據表適配器TableAdapter添加增刪查改方法,如InsertQuery、UpdateQuery等。為方便BLL的數據處理,InsertQuery應添加select@@identity,并將ExecuteMode更改為Scalar模式,以返回新增數據的Identity值,即ID值。

        4.2泛型數據適配器DataAdapter

        為了簡化對數據庫的訪問,在DAL添加一個訪問數據集的泛型數據適配器DataAdapter,使用泛型聲明,如:

        public class DataAdapter

        where T:class,Hew()

        where D:class,new0

        其中,T為模型類,D為數據表適配器TableAdapter。DAL對所有數據表的訪問都可以通過DataAdapter來實現。如前文所述,這個泛型數據適配器可以適應對所有數據表的訪問操作。

        泛型數據適配器DataAdapter是這個模型的核心,其實現方法是:①首先聲明并初始化一個數據表適配器的泛型變量,private D adapter=new D(),adapter變量就代表了所有的數據表適配器TableAdapter。②創(chuàng)建一個方法getProperties,把模型實體類T轉換為訪問數據表的參數對象列表。③創(chuàng)建一個輔助類ModelConvertHelper.ConvertToModel,把數據查詢結果轉換為模型實體類。④創(chuàng)建一個調用TableAdapter方法的通用方法object Get(string MethodName,object parameter)。⑤調用Get方法,分別實現對數據表的增、刪、查、改等方法,如Update(T model),可以傳入模型類實體實現對數據表的更新操作,免去了編寫各個數據表的更新SQL語句。部分代碼如下:

        亚洲1区第2区第3区在线播放| 99精品国产在热久久国产乱| 亚洲欧美日韩国产精品一区| 人妻中出中文字幕在线| 亚洲人妻调教中文字幕| 亚洲国产精品久久人人爱| 欧美午夜刺激影院| 亚洲啪啪AⅤ一区二区三区| 小池里奈第一部av在线观看| 亚洲av成人网| 人妻av一区二区三区精品| 久久人妻av无码中文专区| 亚洲国产精品av麻豆网站| 国产特黄级aaaaa片免| 学生妹亚洲一区二区| 日韩中文字幕无码av| 97青草超碰久久国内精品91| 亚洲av无码乱码在线观看裸奔| 在线中文字幕有码中文| 国产成人午夜av影院| 不卡一区二区视频日本| 国产精品视频露脸| 欧美日韩国产在线观看免费| 国产精品国产三级厂七| 人妻少妇进入猛烈时中文字幕| 色橹橹欧美在线观看视频高清| 未满十八勿入av网免费| 亚洲国产天堂av成人在线播放| 无码毛片内射白浆视频| 性大片免费视频观看| 日韩精品视频在线观看免费| 91熟女av一区二区在线| 国产午夜成人av在线播放| 人人妻人人澡人人爽精品欧美| 美女扒开内裤露黑毛无遮挡| 蜜桃av噜噜一区二区三区9| 久久久久久久久蜜桃| 一区五码在线| 精品一区二区三区亚洲综合| 亚洲av日韩aⅴ无码色老头| 香蕉视频一级片|