你可能没有听说过微软语言集成查询(LINQ)是微软的新创意。如果你听说过它,你可能会打个哈欠,把它放下,把它当作另一种新技术来寻找需求。
然而,LINQ不同于大多数新技术,因为它确实可以做到它所说的一切。在与LINQ一起工作了将近一年之后,我发现LINQ并没有让我失望,就像我尝试过的许多其他技术一样。LINQ是难以置信的容易使用和相当可靠。事实上,我并不是唯一一个有这种想法的人,其他开发人员创建的大量第三方附加组件证明了这一点,他们对LINQ的看法和我一样。
如果你还没有遇到过LINQ,这里是直线上升的定义。LINQ是一种查询语言,排序一样的SQL,但语法是有点不同。其基本思想是,你问一个问题(或者说,你的应用程序那样),LINQ提供了从您指定数据源的答案。该数据源可能不是直线上升的数据库。举例来说,如果你问LINQ其员工在会计部门,你提供Active Directory作为数据源,在LINQ从Active Directory中获得的答案给你。
大量已被写入解释LINQ到软件开发商。在这里,我解释了IT管理人员了解的重要点。
1.开发人员可以在不了解新技术的情况下访问它们
LINQ的一个主要好处是可重用性。为访问对象而创建的复杂查询也适用于Active Directory,Microsoft SQL Server,MySQL,或网络服务;开发人员不需要不断学习新的技术来使用LINQ。
基本的LINQ安装附带了所有的数据源,你可能期望访问:数据对象,SQL Server数据库,XML和数据集。但是,如果你停在那里,你错过了LINQ的大图片。您可以通过访问获得了大量的其他数据源的第三方供应商,也就是说,谁不与微软下属LINQ的插件,被人写(也有一吨的人)。你可以找到共同的数据源,如Active Directory和不凡的数据源,如资源描述框架(RDF)。
要访问编程环境用大多数技术本地支持的数据源之外的数据源,您必须经历各种障碍或经历各种奇怪的编程场景。如果你做了一个改变,一大堆代码通常需要改变。在LINQ中,您始终使用相同的查询。这在很大程度上简化了开发过程,特别是对于新接触项目并且还没有与团队的dba成为朋友的程序员。需要一个稍微有点技术性的例子吗?为了简单起见,让我们说,你从一个c#字符串数组开始,像这样:
String[]参数={“1”,“2”,“3”,“4”、“5”};
要找到所有长度超过三个字符的字符串,可以使用这样的查询:
VAR ThisQuery =从在的StringValue查询字符串其中StringValue.Length> 3选择的StringValue;
在本例中,这个查询是查询过程的输出。你不需要定义一个实际的类型因为LINQ会替你处理它;相反,您使用var作为数据类型。代码使用StringValue保存与where条件StringValue匹配的QueryString中的单个数据值。长度> 3。查询的选择部分仅仅告诉从数据源中选择什么。现在,这是真正有趣的部分。您可以使用相同的查询从RDF或Active Directory检索数据。如果有数据源的提供程序,则可以使用相同的代码访问数据。多酷啊?
不要认为LINQ仅限于安全的开源项目或Microsoft特定的数据源,无论是。LINQ与工作就好MySQL,以及整个世界的附加LINQ数据源。
您可能会认为LINQ查询不能处理复杂的情况。本节中的示例为您提供了一个发现LINQ的人将从何处开始的好主意。然而,LINQ查询,就像SQL查询一样,在您添加数据源和输出需求时可能会变得有些复杂。对于那些复杂的查询,学习曲线是平缓的,但即使如此,当你要求LINQ做更多的工作时,它也会变得复杂(像任何其他技术一样)。
2.开发人员可以用更少的代码创建完整的应用程序
一开始,我对微软声称LINQ可以用更少的代码生成应用程序表示怀疑。我看到太多的解决方案都未能实现这一承诺。直到我开始用LINQ创建SQL Server查询,我才改变了我的想法。但是你瞧,使用LINQ查询只需要一行代码,而以前的编程需要8行代码来完成同样的事情。
你必须添加的代码两行来创建数据源对象的LINQ查询使用,但你必须做的工作时.Net应用程序不管怎样,你没有损失任何东西。
你可能会认为你没有不劳而获。你是对的。LINQ要求开发商提供一个供应商,就像访问在Visual Studio数据库时。提供商充当数据源和LINQ之间的中介。因此,LINQ重用代码实现的结果。问题的关键是:除非你需要访问自定义数据源,开发商不写者代码。这意味着,你的开发人员,因为提供包含多少你用手工编写代码的总体编写更少的代码。的代码意味着更少的机会更少线错误蠕变,而这的为您的QA部门工作少。
3,开发者可以在更少的时间和错误更少的应用
LINQ使得代码更容易理解。(至少,它更容易为程序员理解。非技术管理人员可能不会发现它很透明!)它依赖于类似SQL的语法,许多开发人员已经了解得非常好。与SQL,你想要的东西作为输出LINQ需要确定如何为您根据您指定的供应商来获取输出的护理只能指定。当你把一个简单的编码环境写更少的代码,你需要更少的时间来创建应用程序。
同时创建了LINQ的应用程序应该包含更少的错误。谁创建的数据源提供者的开发者已经调试和优化它与LINQ使用。由于开发人员编写的代码更少,并因为该代码的每一行依赖于基本相同的结构,很容易与当初的错误更少生产应用。
微软的LINQ调试功能也使得调试过程异常简单。如果您愿意,您可以查看每个查询获取结果中的每一点信息。微软这次确实做了一些正确的事情。
这并不意味着一切都是完美的。第三方提供商的一个潜在时间损失是,有些提供商没有包含所有的LINQ特性。如果现在存在潜在的错误,那是因为您使用的第三方提供商不完全完整。
LINQ有很多方法来帮助开发人员创建复杂的查询。如果第三方供应商不支持所有这些方法,开发人员必须找到解决的办法遗漏。微软需要为这些认证的第三方供应商,确保供应商完成,并给予供应商的密封或其他识别时,它通过创建一个程序。即便如此,最坏的第三方供应商,我用有足够的功能来创建任何查询,大多数开发人员需要。
4.结合数据源而不诉诸奇怪的编程技巧
开发者会喜欢LINQ的数据从多个数据源在同一查询相结合的能力。所以才会谁希望开发商的管理人员可以完成的项目更快,特别是当其他微软产品和服务互动的项目。
例如,假设您希望找到在办公园区的特定大楼中工作的所有员工,然后在工资单数据库中查找这些员工。使用LINQ,您可以创建一个查询,该查询从Active Directory获取输出,并将其应用于SQL Server数据库查询。同样,也可以将SQL Server查询与MySQL查询结合使用,或者将Web服务查询添加到RDF格式的产品搜索中。可能性是无限的。
5.让新的开发人员工作得更快
新开发人员面临的一个问题是,这些年来技术已经有了很大的发展。当我开始编写代码时,我所需要做的就是编写一些容易理解的基本语句。5或6行代码至少可以在屏幕上显示一组行。如今,即使是构建一个简单的应用程序,一个新开发人员也必须经历各种可怕的障碍。如果新开发人员不知道对象的最深层秘密,那就忘记它;试图创建任何类型的应用程序都是注定要失败的。即使开发人员有丰富的经验,让一个新人加入团队也需要投入相当多的时间来学习新环境的每一个细节。LINQ并不能解决所有的问题,但是它确实有帮助。
LINQ帮助您后退一步,让新的开发人员工作得更快。一个新的开发人员如果能在工作报告的一两天内做一些有趣和有用的事情,他会更加快乐和高效。高效的开发人员能在更短的时间内完成出色的应用程序。这里没有什么秘密。LINQ通过依赖提供商来完成所有繁重的工作,简单地消除了编程的复杂性。开发人员需要知道的是输出应该显示什么,而不是如何获得输出。
约翰·米勒是一名自由撰稿人和技术编辑。他有写作的天赋,已经出版了80本书和300多篇文章,涉及的话题从网络到人工智能,从数据库管理到埋头编程,无所不包。他目前的项目是LINQ的假人(列入出版计划于2008年8月)。
了解更多关于这个话题
这个故事,“老板应该知道的关于微软LINQ的5件事”,最初发表于CIO 。