NET平台下基于LINQ三层架构的实现

时间:2022-10-25 01:24:36

摘要:分析了传统.NET开发中三层架构的原理,结合基于关系数据的.NET语言集成查询LINQ(Language INtegrated Query)的架构和原理,给出了如何应用LINQ在WEB开发中实现三层架构。

关键词:三层架构;语言级集成查询;LINQ To SQL;.NET3.5

中图分类号:TP311文献标识码: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 概述

传统的三层架构(3-tier application)被广泛的应用与.NET平台下的WEB开发和WINFORM开发,通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。使用三层架构的优点是加强了数据的安全性,易于实现高内聚低耦合的思想,同时利于代码的复用。

LINQ称为语言级集成查询(Language INtegrated Query),是微软最新的Visual Studio 2008 和.NET 3.5中的性特性。它是集成在.NET编程语言中的一种特性。LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源。

2 应用LINQ 开发模式和传统的三层架构的区别

在传统的三层架构开发模式中,程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,表示层不直接与底层数据进行交互,而是通过与中间层建立连接,再经由中间层与数据库进行交互。但是,LINQ的诞生改变了我们传统访问数据的方式,利用基于关系数据的.NET语言集成查询(LINQ to SQL),可以实现以对象形式管理关系数据,并提供了丰富的查询功能。其建立于公共语言类型系统中的基于SQL的模式定义的集成之上,当保持关系型模型表达能力和对底层存储的直接查询评测的性能时,这个集成在关系型数据之上提供强类型。换句话说,利用LINQ我们可以方便的在表示层利用一些LINQ语句直接实现对数据的访问,通过创建LINQ to SQL的类。

我们现以自带的示例数据库Northwind为例说明如何利用LINQ在WEB开发中直接实现数据的访问。

首先利用VS2008创建站点,然后增加LINQ to SQL classes,选择C#语言,重命名为Northwind.dbml。打开NORTHWIND.MDF节点,将自带表Products拖入Northwind.dbml中。

其次,新建表示层的WEB页面,拖入数据邦定控件GridView,进入PageLoad事件,添加如下代码:

NorthwindDataContext db = new NorthwindDataContext();

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

GridView1.DataSource=product;

GridView1.DataBind();

最后,运行页面可以看到图1,实现了表示层数据的访问。

3 LINQ开发应用中实现三层架构

通过上一小节,利用LINQ没有把操作方法传统地放在底层不太符合三层架构的思想。但实际上,我们也并没有去操作数据实体,而是操作对象,接着LINQ会帮我们把这些操作应用在数据上。即使是这样,在表示层中来实现对象的操作方法也是欠妥当的,我们依然希望能以三层架构的方式利用LINQ进行开发和代码的复用,结构图如图2所示。

我们仍然以刚才创建的站点和示例数据库Northwind为例,展示如何将上述例子改造为三层架构。

首先,在站点上新建项目,添加新的业务逻辑层BLL,在BLL层中添加针对Products的业务逻辑类Productbll.cs。

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

NorthwindDataContext db = new NorthwindDataContext();

public Productbll()

{

}

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

[ponentModel.DataObjectMethodAttribute(ponentModel.DataObjectMethodType.Select, true)]

public IQueryable GetProduct()

{

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

return product;

}

其中创建一个DataContext实例,以便在后面的方法中直接使用,接下来是一段声明,告诉自动识别系统该方法是查询方法。IQueryable是返回值的类型,可以直接作为Datasource使用。

最后,添加数据邦定控件GridView和数据源控件,就可以像传统的三层架构模式去针对数据库的增删改查,去选择业务逻辑层的对应的方法,通过业务逻辑层实现对数据层数据的操作。如图3所示。

4 结束语

该文以.NET 下WEB开发为例,分析了传统三层架构模式访问数据和LINQ下访问数据的区别,提出了如何实现基于LINQ下三层架构的方法和基本的实现代码。虽然LINQ及LINQ TO SQL提供的类,以操作对象方式避免了操作数据实体,但是我们还是希望能以更合理的三层架构方式去更加方便快捷的利用LINQ进行项目开发。

参考文献:

[1] 王的强,张晓娜,周静.LINQ入门及应用[M].北京:清华大学出版社,2009:37-40.

[2] 侯利军.精通LINQ数据访问技术[M].北京:人民邮电出版社,2008:87-88.

[3] 龚赤兵.VISUAL STUDIO2008中的LINQ开发技术[M].北京:机械工业出版社,2009:213-219.

上一篇:一种基于SOPC的控制装置数据采集信号处理接口... 下一篇:航空相机检测系统软件设计