999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

梁啟恒

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

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

0引言

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

1三層架構

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

2三層架構的解耦

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

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

3數據訪問層的解耦模型

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

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

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

4 DAL解耦模型的實現

4.1強數據類型數據集DataSet

DataSet可以在VS IDE中通過拖動數據源快速生成各數據表的實例。使用強數據類型數據集,各數據項都有明確的類型定義,如果類型不符,編譯就會出錯。這樣有兩個好處,一是減少出錯機會,二是可以快速生成,減少代碼的編寫,VS支持直接拖動數據表生成實例,不用編寫一句代碼。在DataSet中,每個數據表適配器TableAdapter都是訪問對應數據表的接口類,如userTableAdapter是訪問user數據表的接口類。在DAL中通過初始化TableAdapter來訪問數據表。我們為每個數據表適配器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。②創建一個方法getProperties,把模型實體類T轉換為訪問數據表的參數對象列表。③創建一個輔助類ModelConvertHelper.ConvertToModel,把數據查詢結果轉換為模型實體類。④創建一個調用TableAdapter方法的通用方法object Get(string MethodName,object parameter)。⑤調用Get方法,分別實現對數據表的增、刪、查、改等方法,如Update(T model),可以傳入模型類實體實現對數據表的更新操作,免去了編寫各個數據表的更新SQL語句。部分代碼如下:

主站蜘蛛池模板: 国产日韩精品欧美一区喷| 欧美视频在线观看第一页| 亚洲精品在线91| 国产91在线免费视频| 欧洲亚洲一区| 免费中文字幕在在线不卡| 91蝌蚪视频在线观看| 91九色国产在线| 欧美爱爱网| 久久久精品国产亚洲AV日韩| 久久久精品久久久久三级| 欧洲亚洲欧美国产日本高清| 欧美日韩亚洲国产主播第一区| 国产一区二区三区在线观看免费| 国产精品久久久久鬼色| 亚洲婷婷丁香| 日韩小视频网站hq| 青青草国产免费国产| 国产小视频在线高清播放| 91麻豆精品视频| 精品成人一区二区三区电影| 欧美97色| 亚洲女同欧美在线| 超薄丝袜足j国产在线视频| 91人妻在线视频| 蜜臀AVWWW国产天堂| 伊人查蕉在线观看国产精品| 国产成人夜色91| 在线国产毛片| 精品综合久久久久久97超人该| 国产亚洲成AⅤ人片在线观看| 欧美高清视频一区二区三区| 国产欧美视频综合二区| 国产毛片片精品天天看视频| 欧美亚洲国产视频| 在线亚洲小视频| 尤物在线观看乱码| 日韩A∨精品日韩精品无码| 午夜在线不卡| 亚洲激情99| 亚洲男女天堂| 亚洲乱亚洲乱妇24p| 无码又爽又刺激的高潮视频| 国产一区二区三区夜色| 久久一本日韩精品中文字幕屁孩| 国产精品网址你懂的| 第九色区aⅴ天堂久久香| 国产乱子伦视频在线播放| 91口爆吞精国产对白第三集| 五月婷婷伊人网| 国产免费好大好硬视频| 国产精品欧美在线观看| 97国产在线视频| 国产精品美女在线| 一区二区三区国产精品视频| 亚洲成在人线av品善网好看| 在线免费不卡视频| 亚洲乱强伦| 亚洲黄色视频在线观看一区| 免费女人18毛片a级毛片视频| 亚洲色欲色欲www在线观看| 最新国产网站| a天堂视频| 国产打屁股免费区网站| 亚洲一区二区三区在线视频| 亚洲最新在线| 三上悠亚在线精品二区| www欧美在线观看| 国产黄色片在线看| 99久视频| 久久精品人人做人人| 免费一级成人毛片| 国模极品一区二区三区| 日本尹人综合香蕉在线观看| 午夜日b视频| 欧美视频二区| 久久人与动人物A级毛片| 91网在线| 无码专区第一页| 欧美性久久久久| 中文字幕66页| 91麻豆国产精品91久久久|