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語句。部分代碼如下:

主站蜘蛛池模板: 亚洲精品综合一二三区在线| 中文字幕亚洲精品2页| 精品撒尿视频一区二区三区| 99精品影院| 九色91在线视频| 91在线精品免费免费播放| 激情午夜婷婷| 久久精品娱乐亚洲领先| 国产毛片高清一级国语 | 亚洲欧洲自拍拍偷午夜色| 国产欧美日韩91| 中国国产一级毛片| 全部免费特黄特色大片视频| 五月天久久综合| 国产老女人精品免费视频| 精品国产香蕉在线播出| 人妻一本久道久久综合久久鬼色| 日韩精品资源| 久久一日本道色综合久久| 国产亚洲欧美日韩在线一区二区三区| 99热这里只有免费国产精品| 欧美日韩激情在线| 国产精品久久久久鬼色| 国产电话自拍伊人| 国产农村精品一级毛片视频| 小说区 亚洲 自拍 另类| 久久精品aⅴ无码中文字幕| 欧美福利在线| 老司国产精品视频| 欧美色综合网站| 人妻丰满熟妇av五码区| 制服丝袜 91视频| 国产精品jizz在线观看软件| 久久这里只有精品国产99| 午夜综合网| 中文成人在线| 成人免费午间影院在线观看| 亚洲人成网站观看在线观看| 99精品在线看| 国产精品女熟高潮视频| av在线无码浏览| 极品国产在线| 美女亚洲一区| 18禁不卡免费网站| 最新国产成人剧情在线播放| 亚洲天堂区| 亚洲三级视频在线观看| 九九九精品成人免费视频7| 99久久精品国产麻豆婷婷| 99久久精品久久久久久婷婷| 欧美日韩激情在线| 亚洲另类国产欧美一区二区| 亚洲男人在线天堂| 久久综合色播五月男人的天堂| 国产青青操| 亚洲人人视频| 亚洲激情99| 国内黄色精品| 亚洲日韩国产精品无码专区| 久久精品免费国产大片| 日本妇乱子伦视频| 亚洲国产欧美目韩成人综合| 真实国产乱子伦视频| 亚洲精品自拍区在线观看| 精品人妻一区无码视频| 国产成人乱码一区二区三区在线| 国产偷倩视频| 精品久久香蕉国产线看观看gif| 欧美不卡视频一区发布| 国产微拍精品| 日本爱爱精品一区二区| aa级毛片毛片免费观看久| 国产精品私拍99pans大尺度| 伊人激情久久综合中文字幕| 无码在线激情片| 免费国产一级 片内射老| 国产精品三级av及在线观看| 国产高潮视频在线观看| 久久精品国产精品青草app| 精品国产自在现线看久久| 国产福利2021最新在线观看| 国产一区免费在线观看|