LINQ:展望未来数据库发展趋势

发表于:2008-05-07来源:作者:点击数: 标签:数据库发展趋势Linq展望
对于LINQ而言,现在说它能成为 数据库 发展趋势的代表真的还为时过早,它的全面使用还需要通过几道坎,但是它确实提供了很多吸引人的亮点。对于 SQL 开发者和BDAs,LINQ是值得我们学习的一门新技术。 LINQ的优点 LINQ的主要优点体现在它是一种标准,不但可以
对于LINQ而言,现在说它能成为数据库发展趋势的代表真的还为时过早,它的全面使用还需要通过几道坎,但是它确实提供了很多吸引人的亮点。对于SQL开发者和BDAs,LINQ是值得我们学习的一门新技术。

  LINQ的优点

  LINQ的主要优点体现在它是一种标准,不但可以在一个关系数据库中进行查询操作,而且可以在文本文件、XML文件以及使用同一语法的数据源中查询数据。此外,任何.NET兼容的语言,比如C#,VB.NET等都可实现LINQ标准。

  查看与体会LINQ

  以下代码段(在C#中)使用Northwind数据库演示了一个简单的LINQ代码块。为了能全面看到LINQ的工作过程,我们以一段简单C#3.0程序为开始,这段程序使用标准查询操作符处理一个数组的内容。
using System;   using System.Query;   using System.Collections.Generic;   class app { static void Main() {   string[] names = { "Alpha", "Brian", "Connie", "David",   "Frank", "George",   "Harry", "Inigo" };   IEnumerable expr = from s in names where s.Length == 5   orderby s   select s.ToUpper();   foreach (string item in expr) Console.WriteLine(item);   }   }
  程序的输出为:
ALPHA   BRIAN   DAVID   FRANK   HARRY   INIGO
  以上范例程序演示了LINQ代码风格以及将代码转移到前端的过程。然而在我看来,这一代码段应该放置在后端中(尽管前端的代码整洁且比较透明)。

  我对前端与后端的观点

  我将论述一下客户端服务配置前端与后端的关系。后端为处于服务器的数据库本身,而前端为客户应用程序,即包括任何以常用开发语言编写的程序(比如Visual Basic,C++以及PHP)。当提及前端时,我们通常也包括微软的Aclearcase/" target="_blank" >ccess,Excel以及Word等程序。

  在一个少于100台电脑的小型组织中,我以上提到的观点(即LINQ程序放在台端)看似很理论性,但后端的LINQ相比于放置在前端则更具有逻辑性。比如在一个程序段中,建立一个记录集,使用一个或多个参数限定选择规则,然后以一列或多列排列它们。如果我将程序的逻辑判断部分放置在任一给定的前端中,那么在下几周或几个月内,我必须在新增加的前端程序中复制这一LINQ程序段。尽管我们可以认为这些逻辑判断是独立存在的语言,但实际操作起来却并非如此。

  开发过程通常从典型的客户-服务器过渡到三层架构(DLL-hell,SOAP等)的各种形式。在这些架构中,前端程序告诉一个中间架构,这一中间架构包含很多逻辑,并以前端关键内容作为地址。中间架构的作用是实现数据库的匹配。这种交流过程因使用的前端语言和中间架构的不同而不同,中间架构可以与数据库服务器相互通讯,前端程序只负责与中间架构的联系。我的观点是,前端程序负责的部分要尽量减少。你可使用一个中间架构,然后将所有逻辑转移到中间架构,并把所有设计部分和逻辑判断转移到后端程序。

  我的观点可能有点乐观

  我始终遵循这样一条原则:后端可完成的事情,它就应该完成。基于这一原则,你可以理解我不愿将数据库逻辑判断放置在前端的原因。

  为何我对这一原则如此坚定?因为以我的经验,很多不同的前端程序只和一个数据库连接,这些前端程序可能是Web程序、Visual Studio程序、Delphi程序等。如果将这些代码从后端移动到前端,你必须复制并编译这些代码成为每一前端程序。这对于Visual Studio.NET是有用的,但你或你的老板可能会要求使用其它编程语言?或者,如果你将逻辑判断部分导入到其它数据库,此时该怎么办?

  我的观点也并非得到同行的认可。我知道有些开发者会提出,这种做法是否适合特定的动态查询的程序。我认为,这种情况现在还没有彻底分析清楚,但我认为在这一点上,以上的原则是不合适的。所以我们可以看看其它方法并证明它的正确:在N台电脑中,在前端中建立一个合法的SQL语句,然后将这一语句传递到数据库引擎。

  无论以上的观点是否正确,很多开发者都喜欢将SQL命令放置在前端而不是后端。这一群开发者一般都对LINQ感兴趣。如果此时你也同意我的原则,在开发过程中可能会碰到各种困惑。

  现在定论尚早

  现在定论LINQ是否成为未来数据库发展的趋势还为时尚早。LINQ还需要数据库和应用程序开发的进一步考验。我确实认为LINQ的多数据源功能非常棒,但正如我开始所提到的,我觉得将代码从后端转移到前端是一个错误。

  只有时间能够说明一切。尽管当LINQ的所有优点被得以证明时,我还是坚持我的原则:后端可完成的事情,它就应该完成。

原文转自:http://www.ltesting.net