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

.NET平臺下基于LINQ三層架構(gòu)的實現(xiàn)

2010-04-29 00:00:00戰(zhàn)
電腦知識與技術(shù) 2010年11期

摘要:分析了傳統(tǒng).NET開發(fā)中三層架構(gòu)的原理,結(jié)合基于關(guān)系數(shù)據(jù)的.NET語言集成查詢LINQ(Language INtegrated Query)的架構(gòu)和原理,給出了如何應(yīng)用LINQ在WEB開發(fā)中實現(xiàn)三層架構(gòu)。

關(guān)鍵詞:三層架構(gòu);語言級集成查詢;LINQ To SQL;.NET3.5

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2010)11-2580-02

The Realization of Three-tier Architecture Based on LINQ in .NET Development

ZHAN Fei

(Department of Computer Engineering, Xi’An Aerotechniccal College, Xi'an 710077, China)

Abstract: The paper analyzes the principle of traditional three-tier architecture, connects the LINQ(Language INtegrated Query) and gives the realization of new three-tier architecture in WEB development based on LINQ.

Key words: three-tier architecture; LINQ; LINQ To SQL; .NET3.5

1 概述

傳統(tǒng)的三層架構(gòu)(3-tier application)被廣泛的應(yīng)用與.NET平臺下的WEB開發(fā)和WINFORM開發(fā),通常意義上的三層架構(gòu)就是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。使用三層架構(gòu)的優(yōu)點是加強了數(shù)據(jù)的安全性,易于實現(xiàn)高內(nèi)聚低耦合的思想,同時利于代碼的復(fù)用。

LINQ稱為語言級集成查詢(Language INtegrated Query),是微軟最新發(fā)布的Visual Studio 2008 和.NET 3.5中的性特性。它是集成在.NET編程語言中的一種特性。LINQ定義了一組標(biāo)準(zhǔn)查詢操作符用于在所有基于.NET平臺的編程語言中更加直接地聲明跨越、過濾和投射操作的統(tǒng)一方式,標(biāo)準(zhǔn)查詢操作符允許查詢作用于所有基于IEnumerable接口的源。

2 應(yīng)用LINQ 開發(fā)模式和傳統(tǒng)的三層架構(gòu)的區(qū)別

在傳統(tǒng)的三層架構(gòu)開發(fā)模式中,程序?qū)I(yè)務(wù)規(guī)則、數(shù)據(jù)訪問、合法性校驗等工作放到了中間層進(jìn)行處理。通常情況下,表示層不直接與底層數(shù)據(jù)進(jìn)行交互,而是通過與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進(jìn)行交互。但是,LINQ的誕生改變了我們傳統(tǒng)訪問數(shù)據(jù)的方式,利用基于關(guān)系數(shù)據(jù)的.NET語言集成查詢(LINQ to SQL),可以實現(xiàn)以對象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢功能。其建立于公共語言類型系統(tǒng)中的基于SQL的模式定義的集成之上,當(dāng)保持關(guān)系型模型表達(dá)能力和對底層存儲的直接查詢評測的性能時,這個集成在關(guān)系型數(shù)據(jù)之上提供強類型。換句話說,利用LINQ我們可以方便的在表示層利用一些LINQ語句直接實現(xiàn)對數(shù)據(jù)的訪問,通過創(chuàng)建LINQ to SQL的類。

我們現(xiàn)以自帶的示例數(shù)據(jù)庫Northwind為例說明如何利用LINQ在WEB開發(fā)中直接實現(xiàn)數(shù)據(jù)的訪問。

首先利用VS2008創(chuàng)建站點,然后增加LINQ to SQL classes,選擇C#語言,重命名為Northwind.dbml。打開NORTHWIND.MDF節(jié)點,將自帶表Products拖入Northwind.dbml中。

其次,新建表示層的WEB頁面,拖入數(shù)據(jù)邦定控件GridView,進(jìn)入PageLoad事件,添加如下代碼:

NorthwindDataContext db = new NorthwindDataContext();

var product = from p in db.Products select p;

GridView1.DataSource=product;

GridView1.DataBind();

最后,運行頁面可以看到圖1,實現(xiàn)了表示層數(shù)據(jù)的訪問。

3 LINQ開發(fā)應(yīng)用中實現(xiàn)三層架構(gòu)

通過上一小節(jié),利用LINQ沒有把操作方法傳統(tǒng)地放在底層不太符合三層架構(gòu)的思想。但實際上,我們也并沒有去操作數(shù)據(jù)實體,而是操作對象,接著LINQ會幫我們把這些操作應(yīng)用在數(shù)據(jù)上。即使是這樣,在表示層中來實現(xiàn)對象的操作方法也是欠妥當(dāng)?shù)模覀円廊幌M芤匀龑蛹軜?gòu)的方式利用LINQ進(jìn)行開發(fā)和代碼的復(fù)用,結(jié)構(gòu)圖如圖2所示。

我們?nèi)匀灰詣偛艅?chuàng)建的站點和示例數(shù)據(jù)庫Northwind為例,展示如何將上述例子改造為三層架構(gòu)。

首先,在站點上新建項目,添加新的業(yè)務(wù)邏輯層BLL,在BLL層中添加針對Products的業(yè)務(wù)邏輯類Productbll.cs。

其次,修改Productbll.cs中的代碼至如下:

NorthwindDataContext db = new NorthwindDataContext();

public Productbll()

{

}

//返回Products表中的所有字段

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]

public IQueryable GetProduct()

{

var product = from p in db.Products select p;

return product;

}

其中創(chuàng)建一個DataContext實例,以便在后面的方法中直接使用,接下來是一段聲明,告訴自動識別系統(tǒng)該方法是查詢方法。IQueryable是返回值的類型,可以直接作為Datasource使用。

最后,添加數(shù)據(jù)邦定控件GridView和數(shù)據(jù)源控件,就可以像傳統(tǒng)的三層架構(gòu)模式去針對數(shù)據(jù)庫的增刪改查,去選擇業(yè)務(wù)邏輯層的對應(yīng)的方法,通過業(yè)務(wù)邏輯層實現(xiàn)對數(shù)據(jù)層數(shù)據(jù)的操作。如圖3所示。

4 結(jié)束語

該文以.NET 下WEB開發(fā)為例,分析了傳統(tǒng)三層架構(gòu)模式訪問數(shù)據(jù)和LINQ下訪問數(shù)據(jù)的區(qū)別,提出了如何實現(xiàn)基于LINQ下三層架構(gòu)的方法和基本的實現(xiàn)代碼。雖然LINQ及LINQ TO SQL提供的類,以操作對象方式避免了操作數(shù)據(jù)實體,但是我們還是希望能以更合理的三層架構(gòu)方式去更加方便快捷的利用LINQ進(jìn)行項目開發(fā)。

參考文獻(xiàn):

[1] 王的強,張曉娜,周靜.LINQ入門及應(yīng)用[M].北京:清華大學(xué)出版社,2009:37-40.

[2] 侯利軍.精通LINQ數(shù)據(jù)訪問技術(shù)[M].北京:人民郵電出版社,2008:87-88.

[3] 龔赤兵.VISUAL STUDIO2008中的LINQ開發(fā)技術(shù)[M].北京:機械工業(yè)出版社,2009:213-219.

主站蜘蛛池模板: 久久亚洲AⅤ无码精品午夜麻豆| 国产在线精品香蕉麻豆| 国产精品人人做人人爽人人添| 激情無極限的亚洲一区免费| 免费国产福利| 福利片91| 午夜国产理论| 亚洲不卡影院| 久久精品亚洲专区| jizz在线免费播放| 亚洲视频影院| 亚洲国产成人无码AV在线影院L| 亚洲成aⅴ人片在线影院八| 日本免费a视频| 国产第一页亚洲| 国产主播在线一区| 国产精品自在在线午夜| 伊人激情综合网| 玩两个丰满老熟女久久网| 成年人久久黄色网站| 久久精品嫩草研究院| 青青极品在线| 丰满人妻中出白浆| 91欧洲国产日韩在线人成| 就去色综合| 久久国产精品电影| 日韩无码真实干出血视频| 亚洲成人网在线播放| 欧美va亚洲va香蕉在线| 91美女视频在线| 国产丝袜精品| 精品久久久久久成人AV| 在线看免费无码av天堂的| 免费观看国产小粉嫩喷水| 国产精品一区二区久久精品无码| 人妻无码一区二区视频| 白浆视频在线观看| 亚洲乱强伦| 激情乱人伦| 成人免费网站久久久| 美美女高清毛片视频免费观看| 国产麻豆aⅴ精品无码| 久久国产精品影院| 成人亚洲国产| 国产精品自在线天天看片| 超碰精品无码一区二区| 欧美激情视频二区| 波多野结衣在线se| 在线国产欧美| 久久精品中文字幕少妇| 国产亚洲视频免费播放| 萌白酱国产一区二区| 伊人久久综在合线亚洲2019| 区国产精品搜索视频| 毛片免费高清免费| 国产成人超碰无码| 成人夜夜嗨| 五月婷婷激情四射| 3344在线观看无码| 久久综合丝袜长腿丝袜| 国产一级毛片在线| 久久 午夜福利 张柏芝| 一级毛片在线播放免费| 五月六月伊人狠狠丁香网| 久久久久青草线综合超碰| a网站在线观看| 中文字幕日韩视频欧美一区| 亚洲国产综合精品一区| 国产农村妇女精品一二区| 午夜国产精品视频| 国产一在线| AV熟女乱| 久久综合色88| 国内精品小视频在线| 国产美女无遮挡免费视频| 孕妇高潮太爽了在线观看免费| 亚洲AV无码乱码在线观看裸奔| 国产精品第| a天堂视频| 任我操在线视频| 日本一区二区三区精品国产| 日韩精品免费在线视频|