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)。当提及前端时,我们通常也包括微软的A
clearcase/" 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的所有优点被得以证明时,我还是坚持我的原则:后端可完成的事情,它就应该完成。
1
原文转自:http://www.ltesting.net