Visual Studio 2008和ASP.NET 3.5使用之初体验
自由紫风
Visual Studio和.NET Framework的下一个版本,代号名为 Visual Studio 2008, 其中有许多新的特性。当Visual Studio 2008在2007年5月份发布Beta1后,笔者使用了一段时间。给人的整体感觉是惬意。微软在Visual Studio及.NET Framework这两方面做了大量的工作,可以非常有效的提高开发人员的开发效率。
Visual Studio 2008将是一个非常激动人心的版本,包含了成堆的强大的功能。在本文中,将展示的只是几个特性而已,没有谈及的特性还多着呢。
一、 前言
当大家还在使用 Visual Studio 2005 的时候,微软的下一代开发工具——Visual Studio 2008正悄悄地在酝酿中,未来微软的新开发工具将使得开发应用程序更容易,对VB、C# 语言提供了更多的支持,开发人员未来将可以透过新的开发工具来进行 LINQ (Language Integrated Query)、ASP.NET AJAX、WPF、SilverLight (先前称为 WPF/E),Office 2007等新技术的开发,甚至于将只在 Visual Studio 2005的Team Suite 版本中才有的 Test 工具整合到 Visual Studio 2008中。
对于坚持学习的技术人员而言,能尽快一睹Visual Studio 2008的风采无疑是很兴奋的。笔者下载了Visual Studio 2008 Beta1,并进行了初步的试用。给人的感觉是,Visual Studio 2008的整体风格与框架与以前很相似,感觉很熟悉。当然,微软在.NET Framework及Visual Studio所下的功夫不可谓不大啊,可以感觉到其更新力度之大。
作为软件开发人员,一定会对下一代Visual Studio 2008的外壳感兴趣。一个好的开发环境可以让开发工作事半功倍。可以发现新版VS的开发界面分为两个版本:整合模式和孤立模式,分别对基于语言的开发和基于特别工具的开发作了优化。并将Iron Python引入了Visual Studio,下图的界面将在Visual Studio 2008的Beta2版本中出现。
Visual Studio 2008界面
Visual Studio 2008将包含对LINQ(Language-Integrated Query)的支持,通过把查询的概念变成一流的编程概念,LINQ将使得.NET中的数据访问面貌一新。Visual Studio 2008包含一个对象/关系的映射器,允许开发人员为关系数据创建数据模型,然后开发人员可以在VB和C#中编写丰富的LINQ查询来获取数据,绑定这些数据,以及更新这些数据。现在VS对所有的LINQ查询以及结果值提供完整的Intellisense支持。
笔者认为,除了那些框架和工具类的精彩新特性外,开发人员(包括所有的.NET应用类型的开发人员)会非常喜爱Visual Studio 2008的一件事情是,VB和C#将包含一些新语言特性和改进。这些语言改动将以既微妙又深刻的方式改进我们的开发体验,势将改进效率,减小我们需要键入的代码量。
二、 Visual Studio 2008
(1) 微软的擦边球——多定向技术
对Visual Studio以前的版本而言,其中一个最大的明显不足之处在于每一个VS版本都要绑定一个特定版本的CLR。比如,使用Visual Studio 2005时,开发人员就不可能创建除了.NET 2.0应用以外的其他应用程序。在Visual Studio 2008里,这一问题会随着一个微软称之为多定向(Multi-targeting)的技术出现而得到部分解决。
Visual Studio 2008将是第一个允许开发人员针对多个.NET Framework版本开发的Visual Studio版本。这意味着开发人员可以打开或创建一个项目,明确地指定.NET Framework 2.0或者3.0或者3.5版本,Visual Studio会自动地过滤Intellisense、工具箱控件、添加引用的对话框项诸如此类的东西,只显示指定框架版本里支持的那些特性。然后开发人员可以针对这些不同框架版本进行编译,还能得到每个版本的完全的调试支持。
多定向(Multi-Targeting)的很大的好处在于,开发人员可以马上在 Visual Studio Orcas中使用绝大多数的新特性(譬如,所见即所得设计器和JavaScript 编辑器等),即使开发人员还在开发或更新老一点版本的项目。
从.NET 1.0到3.5,只能有一个版本的CLR可以被装载到一个进程里。因为Visual Studio本身部分上就是用.NET框架构建的,所以它也只能装载自带的CLR版本。这就使得它几乎不可能和基于其他版本的应用一起工作。 Visual Studio 2008其实也没有真正地解决这个问题。可以称其为打了一个擦边球,因为.NET 3.0和3.5实际上只是构建于2.0运行时上的类库。因为这个问题没有得到彻底的解决,所以如果开发人员要构建.NET 1.0或者.NET 1.1应用,还是需要选择各自的开发工具,VS2002或者VS2003。不过利好的一面是,至少项目文件不会改变,VS 2005的用户也可以和VS 2008的用户协同工作。
(2) 所见即所得——HTML/CSS编辑器
这个版本终于实现了Dreamwaver几年前就实现的功能:分割视图(Split View)-就是同时将HTML源码和所见即所得设计模式打开的视图。同时,用户选择一个页面上的对象,在代码中也可高亮显示所选对象的代码,就是这里可能还有Bug,因为高亮的部分总是有点错位。此外,AJAX以及javascript的支持也被内置(支持javascript的Intellisense)。还有对于CSS的一些新的改进,感觉用起来像是在用Word里面的样式,也许对于美工来说有用。
Visual Studio 2008的这一新特性将提供:无比丰富的CSS支持,包括CSS属性窗口,CSS继承图示器,CSS预览,以及CSS管理器);极大改进的视图转换性能,可以从源码模式转换成HTML设计模式将会瞬时完成;对源码视图内控件设计器的支持 ,包括属性构造器,事件接通(wire-up)以及向导将会在源码视图内正常工作;更丰富的标尺(ruler)和布局支持 ,可喜的是,它们的值将被自动储存在外部的CSS文件中;对内嵌模板页(nested master pages)的设计器支持。
CSS编辑器
Visual Studio 2008的在CSS方面也在较大的改进。新的“管理样式”属性窗口允许开发人员在样式表内轻易地创建、管理和重构CSS规则。 譬如,开发人员可以在样式表里拖放规则来重新安排它们的次序,在多个文件里对它们进行重构,以及在所见即所得设计器里选择一个HTML元素来应用CSS规则。
当开发人员在所见即所得设计器里选择一个HTML元素时,现在也可以使用CSS属性窗口来查看该元素上所有的CSS规则以及它们对应的设置。这个特性所带来的好处是,它可以显示从多个CSS规则继承而来的层叠式设置(cascading settings)。
三、 ASP.NET 3.5
(1) AJAX和JavaScript支持
在ASP.NET 3.5中将包括所有的ASP.NET AJAX 1.0内置功能。包含在内的将是Visual Studio中显著改进的AJAX和JavaScript工具支持,包括JavaScript Intellisense 和更加丰富的调试支持。
內建Ajax功能
VS中的JavaScript intellisense引擎对所有标准的ASP.NET AJAX 库概念(类,属性,枚举等等)都有丰富的支持。除了对任何正常的JavaScript代码提供 Intellisense 支持外,VS现在还允许开发人员添加可选的注释概要信息来为Intellisense提供额外的提示。
支持JavaScript编辑
在调试AJAX 和JavaScript时,开发人员现在可以在开发人员的服务器端代码中设置客户端JavaScript断点,VS 现在可以自动地在客户端把它们接连起来(这些断点也可以在开发人员关闭项目/解决方案时保存起来)。在调试时,开发人员现在也有完整的监视窗口(watch window),intermediate 窗口和其他更多的支持。 VS中的解决方案管理器现在也自动地列出正在运行的JavaScript文档文件,允许开发人员在任何脚本资源里轻松地设置断点。
(2) ADO.net的改进
ASP.NET3.5有一些很酷的特性,主要体现在LINQ上面,同时对C#及VB.NET等语言的改进上。这可以极大的提高开发效率。
除了允许编写使用LINQ的代码外,很明显地,在ASP.NET中提供完全的数据绑定支持,允许轻松地把任何 ASP.NET UI 控件连接到LINQ实体上去,可以不用编写任何代码即可支持分页、排序、编辑、删除、添加新数据。
虽然笔者还没有在项目中使用这个东西,但是已经可以体会他的用意。这个”一个对象/关系的映射器”,实际上为用户创建了一个结构化数据集,使得使用起这个数据集类型的时候可以直接操作里面的数据。可惜结构化数据集这个东西效率上差了一些,所以不牵扯到死锁问题的时候,恐怕用的人也不会特别多。
但事实上,ASP.NET3.5中提供的新特性并不是特别的多。如果对比查看一下System.Web.Ui命名空间,则可以发现,仅增加了几个新控件:ListView及DataPager等。
ListView是一个基于CSS的崭新ASP.NET 数据控件,间于Repeater及GridView之间,帮助开发人员更容易地建造数据驱动。它提供了像Repeater那样丰富的模版,同时又具在grid的高级特性,如翻页、排序及可编辑功能。但遗憾的是,它并没有支持键盘的上下移动功能。
还有很多LINQDataSource,它可以很容易的创建及展示LINQ数据。
(3) Silverlight和XAML
Silverlight是个跨平台、跨浏览器的.NET插件,允许设计师和开发人员在浏览器中建造丰富的媒体体验和RIA应用。ASP.NET 3.5在见面上支持Silverlight及XAML等插件。Silverlight在最近可以风光无限,并且有可能嵌入到下一代的运行时环境中。ASP.NET 3.5 也将支持对Rails等动态语言的支持,将提供动态框架来支持对数据库的管理与操作。
笔者认为,到目前为止,ASP.NET可能出于品牌稳定性方面的考虑吧,所以比较核心的变化并没有。但笔者依然认为.NET 3.5将是了不起的更新版本。在ASP.NET 2.0的剧变曾经引发巨大的软件开发模式。那么,我们可以期待,ASP.NET 3.5将给我们带来更大的软件开发效率的提高。
四、 关于Orcas的思考
笔者的疑问还是有的,这个版本的C++是否还能开发本地代码?开发本地代码还是要强迫开发人员安装.Net framework吗?这个版本的.Net framework对开发硬件控制是否有新功能,总不能让我们开发应用而不与如打印机、POS机、PDA、摄像头、优盘、像机、语音等设备打交道吧? 这个版本对开发报表是否功能加强,应用程序的中国报表一直是很头痛的事。
在微软的开发工具还没有正式推出之前,前面所有一切提到的技术都有可能改变。但是从这个未来的开发工具本质上来讲,它想带给程式开发工程师的便利性,这是毋庸置疑的。面对新的一代語言 (VB9.0、C# 3.0) 和崭新的程式设计方式,我们要怎样透过更加便利的开发工具来增加产能。面对技术不断的更新,如何应用新技术来解決目前的困难,如此种种都将是未来的一大挑战。
微软提供了如此功能完备的软件,笔者禁不住在想,微软到底想要干什么?不用编写代码就能完成应用程序的开发,这等于就是说,Visual Studio 2008将完全就是一个可以让任何人都可以定制软件的工具。技术门槛越来越低,越来越多的项目不需要专业的软件开发人员。.对于企业来说成本降低,因为他们以后可以自己造软件,造软件不是什么难事情了,也许不久的将来不需要什么软件公司。难道微软是想把全世界的软件都自己做了?笔者认为,其实微软就想着卖自己的产品,希望每个Windows用户都会买一个做软件的工具,然后自己去做自己想要的东西.这无疑是打破大部分人的饭碗。当然这只是笔者个人的观点。
五、 小论
笔者在前面介绍总结了Visual Studio 2008的新特性。当然,这并不是说Visual Studio 2008并无缺点可挑。例如,Visual Studio 2008偶尔也会突然的死机,呵呵,这虽然不像在Visual Studio 2005中那么频繁。当然,就在使用Visual Studio Beat1的过程中,笔者还是非常满意的。感觉它确实可以提高软件开发的效率。
据微软称Visual Studio 2008、NET 3.5及Windows Server 2008将于 2008 年 2 月 27 日 发布。因此,大家都可以比较快的在今年年底看到最终的版本。如果读者还没有试过Visual Studio 2008,那么有必要下载一个Beta1试验一下。当然,读者也可稍等,等到Beta2发布,同时,据称,Beta2将包括一个Go-live的许可文件,从而可以真正来体验.NET3.5了。