领军Visual Studio 2008 --LINQ开发技术专题_IT技术_专题教程_开发频道_天极Yesky

来源:互联网 发布:湖州移动网络营业厅 编辑:程序博客网 时间:2024/06/01 23:58
导读:
  LINQ是支持以类型安全方式查询数据的一系列语言扩展;待查询数据的形式可以是 XML(LINQ 到 XML)、数据库(启用 LINQ 的 ADO.NET,其中包括 LINQ 到 SQL、LINQ 到 Dataset 和 LINQ 到 Entities)和对象 (LINQ 到 Objects) 等。Visual Studio 2008中最重要的革新有三处,最让开发者感到兴奋的就是包含了早就该容纳进来的语言级集成查询LINQ。[详细介绍]
  专题策划:天极Yesky软件开发频道内容提供:dizzarz [010-82657868]
  根据框架设计指南的精神,微软发布了基于LINQ构建框架的设计指南。LINQ框架设计指南涵盖了诸如API的设计与行为等主题。与很多公司制定的编码指南不同,它并没有包含设计的细枝末节,例如命名模式与格式,除非它们牵涉到公有的API库。
  大多数框架设计指南最终都能够找到与FxCOP集成的方式。FxCOP是一个代码分析工具,它被微软和其它公司用来确保编码的一致性。
  简单地说,LINQ是支持以类型安全方式查询数据的一系列语言扩展;它在代号为“Orcas”的下一个版本 Visual Studio 中发布。待查询数据的形式可以是 XML(LINQ 到 XML)、数据库(启用 LINQ 的 ADO.NET,其中包括 LINQ 到 SQL、LINQ 到 Dataset 和 LINQ 到 Entities)和对象 (LINQ 到 Objects) 等。
  在Visual Studio 2008中最重要的革新有三处,而且都与动态编程有关:首先是.NET Framework 3.5的最终版,它包含了开发Silverlight程序必要的图形库,而且Silverlight开发工具Popfly也成了VS2008的一部分;第二,通过动态语言运行时(DLR)支持IronRuby、IronPython等动态语言,而DLR也是.NET 3.5的一部分;第三,包含了早就该容纳进来的语言级集成查询LINQ。
  所以说LINQ是Visual Studio 2008中的领军人物一点也不为过。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQL Server、XML以及内存中的数据集合。
  LINQ带来很多开发上的便利。首先,他可以利用Visual Studio这个强大的IDE(这话决不是吹,Visual Studio绝对是最好用的开发工具之一),至少用Visual Studio来写SQL语句,可以有智能感知了,比起从前用查询分析器写存储过程的感觉好多了!其次,它可以把数据当成一个对象来操作,即 Data == Object? 的问题。
  LINQ目前可以对XML, Object, SQL做数据访问,今后还会有LINQ to Entity的功能
  Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。
  其实绝大部分的程序都是在跟数据打交道,然而目前的情景是,程序员编写代码调用数据库提供的接口对数据进行操作,至于数据库内部是如何进行操作的,不得而知,程序员只是传递给数据库一些文本命令,数据库对其进行解析并作出相应的反应,这样的做法存在着明显的缺陷,例如程序员无法实现编译时验证并且也无法获得编写代码时的智能感知功能。
  许多应用程序经常基于一个关系型数据库来编写。在有些时候,这些应用程序将不得不和以关系方式提供的数据相比配。在编写应用程序时,数据架构通常不是一下子就很理想的,并且应用程序的概念模型和数据库的逻辑逻辑模型是不一致的。实体数据模型(EDM)是一种概念数据模型,能被用来对特定的领域进行数据建模。因此应用程序能和作为实体或对向的数据相匹配。更多信息请参考实体数据模型。
  LINQ to XML是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在.NET Framework编程语言中处理 XML
  LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。 LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。
  
  现在网上能够将LINQ讲的很清楚或者比较深刻的文章并不多,而关于分层的则就更少,无论是国外还是国内,对于LINQ的应用都还在探索阶段,也有不少人怀疑LINQ的性能。
  而就我个人而言,也没有更好的办法去探究它的性能究竟如何。不过作为一个传统三层架构的忠实粉丝,我仅仅将我在LINQ下使用三层架构的经验拿出来与大家分享。如果这么做不好或者会损失性能,还请高手指出。如果觉得有可以探讨的地方,欢迎大家留言。进入正题,为了实现多种数据展现的方法,我使用了一个很流行的NORTHWIND数据库(就是Scott MitchellASP.NET 2.0数据教程中的那个数据库)。在这里,我们所使用的三层架构稍稍与原先不同,因为LINQ的存在。
  在07年的JavaZone大会上,Anders Noras介绍了Quaere库,他这个库比喻成Java上的LINQ。Quaere是一门DSL,任何实现了Iterable或其Queryable接口的结构,Quaere都能提供查询功能。
  LINQ To Sql(以下简称LS)从一降世似乎就是个问题宝宝。批更新问题, Like问题,RTM之前的"BUG"(select new不能显式创建实体)等等接踵而至,很多时候我们不得不回到SqlCommand去来"扩展"LS,不巧的是,LS留给程序员的灵活性很有限,我们的Extension总是有不尽完美的地方,在自我扩展的同时我更多的是期待Entity Framework正式Release时候能解决这些问题,至少是能够带给我们更多的灵活性。
  LINQ to SQL虽然将数据库操作和业务逻辑隔离开来,使开发人员能够使用单一的语言和知识能够方便的操作数据库并处理业务逻辑。但是这毕竟是微软O/R解决方案的第一个版本,相比相对成熟的DataSet数据集解决方案来说,我们还是可以看到一些不足。
  
  

本文转自
http://dev.yesky.com/topic/305/8142805.shtml
原创粉丝点击