LINQ语言级集成查询
LINQ是一个带有许多可能组件的一般机制。LINQ将数据查询引入到C# 和Visual Basic语言,为查询创建句法,这些查询针对于内存中的数据结构,就像针对于文件系统,XML文件,SQL数据库的查询一样。
VS2008中有几个LINQ组件和提供商,包括Objects(字符串,反射和文件目录)的LINQ,XML 的LINQ 以及 ADO.Net 的LINQ。 ADO.Net 的LINQ包括两个组件:DataSet 的LINQ 和SQL的 LINQ 。VS2008中没有包括更高级的ADO.Net 实体框架,以及实体的 LINQ ,但是今年都会作为一个辅助工具补充进来。
我在针对于SQL服务器2000数据库的C#中测试了SQL 的LINQ。
在写LINQ 查询时,Object Relational Designer从数据库架构中创建C#类型进执行得很顺利,而且IntelliSense也工作正常。另一方面,通过手写针对于三个相联系表格的LINQ查询导致了LINQ存在的一些技巧方面的局限,我们都期望得到能和VS2008图像SQL Query Designer 相对等的LINQ 。因为我从没有找到书写和SQL "SELECT DISTINCT"查询相对等的LINQ的方法。
智能感知, 重构, 单元测试和指标
在做这个小项目的时候,我发现C#重构功能(包括在专业版以及更高的版本中)运行顺利。编辑C#时,开发员能利用自动的重构。这是LINQ的完全智能感知支持。只为托管代码计算代码指标。
我也发现托管代码(包括VSTS Developer和Team Suite中的托管代码)的代码指标也运行得很好。我不确定我是否同意为代码(此代码从设计图面生成)计算指标的方法,但是我确定能看到指标的全部效应,尤其是在带有TFS的团队项目托管范围内。让人高兴的是,VS2008为托管代码引进了此技术。
但是,非托管 C++项目不能使用代码指标和代码重构,对这一点让人感到很失望。另一方面,C++程序可以利用一个很好的调用浏览器,即它给你提供一个关于其他功能的简洁说明,这些功能可以调用一个特定的功能,代码行则执行这些调用。
Visual Basic项目有代码指标,这些代码指标带有简洁得不可思议的句法,巨大的智能感知功能,以及许多代码片断。然而, 让人失望的是,Visual Basic项目没有代码重构,尽管可以利用几个第三方插件添加此功能。
现在单元测试是专业版本的一个功能(它是VS2005中的一个VSTS功能)。我们可以为C#,Visual Basic,以及 托管 C++解决方案创建单元测试和测试项目。在使用免费的开放源程序Nunit之前,可以为C#, Visual Basic以及 托管 C++解决方案创建单元测试和测试项目,但是将单元测试功能和IDE集成起来更好。
为JavaScript设计的智能感知是VS2008一个大的进步,但是代价很高,尽管已经增加了用来写ASP.Net AJAX 和Silverlight页的JavaScript的支持,然而用来编辑VBScript,以及Classic ASP的支持却被抛弃了。因为我仍然保持了一个1999 vintage Classic ASP站点,当发现VS2008处理ASP网页做得比VS05还差时,或者比Visual InterDev 6还差时,真是让人非常恼火。据说微软正在考虑恢复此功能,为VS2008提供一个服务包。同时,仍然保持Classic ASP站点的人们不应该放弃它们现有的工具。

