Visual Studio 2008以及.NET Framework 3.5的一个Service Pack 1 Beta发布了,SP1虽然还处于Beta的阶段,但它却给开发者带来了许多新的特性、性能的提升以及对Bug的修补。
增强的Web开发
SP1包括了一系列对Web开发的增强特性,关于特定于VS方面的工作(包括具体的缺陷修补细节),VS Web Dev Tools开发团队在这里提供了细节。以下介绍它们中的部分特性:
ASP.NET Data Scaffolding 支持 (ASP.NET 动态数据)
.NET 3.5 SP1添加了对一个丰富的ASP.NET 数据"scaffolding"框架的支持,该框架允许你很快地建造工作的数据驱动的web应用。使用ASP.NET 动态数据的功能,你可以自动地对各种数据对象模型(包括LINQ to SQL, LINQ to Entities, REST Services, 以及任何其他的ORM或者由动态数据提供器提供的对象模型)建造web UI(包含完整的CRUD,创建,读取,更新,删除的支持)。
SP1往ASP.NET中现有的 GridView, ListView, DetailsView 和 FormView控件中添加了这个新功能,提供了智慧的验证和灵活的数据模板选项,它还提供了智慧的新过滤性服务器控件,以及支持自动traverse主键/外键关系,显示友好的外键名称,所有这些都会给你省下成堆的代码。
你可以在Scott Hanselman这里的录像和教程中了解到关于该功能的有关细节。
ASP.NET 路径选择引擎(System.Web.Routing)
.NET 3.5 SP1包含了一个灵活的新URL路径选择引擎,它允许你把进来的URL映射到路径处理器上去。它包含了对从干净的URL(例如, /Products/Browse/Beverages)中分析出参数的支持,以及对从路径注册中动态计算和生成新的URL的支持。
这个新的路径选择引擎为ASP.NET动态数据,以及新的ASP.NET MVC框架所用,它将同时支持基于WebForms和MVC的请求。
ASP.NET AJAX 倒退/前进按钮历史支持
.NET 3.5 SP1 往 ASP.NET AJAX中加了新的API,允许你更好地控制浏览器的历史列表(允许你控制浏览器的倒退/前进按钮的行为)。
你可以在这里的文章,以及这里的Screen cast中了解有关这个功能的细节。
ASP.NET AJAX 脚本合成支持
.NET 3.5 SP1 在<asp:ScriptManager>服务器控件上引进了一个新的<CompositeScript>元素,它允许你用声明的方式在其中定义多个脚本引用。在CompositeScript元素中的所有脚本引用,会在服务器上合成起来,以单个脚本的行为提供给客户端,减少了对服务器的请求数目,改进了ASP.NET AJAX应用的页面装载时间。
这个脚本合成功能支持基于路径的脚本以及基于程序集资源的脚本,是使用ScriptResources.axd处理器动态地提供合成的脚本的。
Visual Studio 2008性能改进: HTML 设计器 和 HTML 源码编辑器
包含对VS 2008 Web设计器的若干性能改进和缺陷修补。
Visual Studio 2008 JavaScript脚本格式化和代码设置
Visual Studio已经有好几个版本支持丰富的VB和C# 源代码格式化选项(间距,换行,大括号位置等等)。
VS 2008 SP1对 JavaScript(<script> 代码块和.js文件)也提供了丰富的源代码格式化支持,你现在可以使用工具->选择对话框来配置你的Javascript编程设置。
Visual Studio 对多个 Javascript/AJAX 框架更好的Javascript Intellisense支持
VS 2008 在源码视图中包含了对Javascript Intellisense 的支持。 初始VS 2008版本的intellisense,很好地支持原生的JavaScript,以及使用ASP.NET AJAX JavaScript 类型模式编写的代码。 但JavaScript是门非常灵活的语言, 许多JavaScript库充分利用了这灵活性,来实现他们各自的功能,但有时候其实现方式妨碍了intellisense引擎提供代码完成的支持。
VS 2008 SP1对流行的JavaScript库添加了更棒的intellisense支持,包括JQuery, Prototype, Scriptaculous, ExtJS, 以及其他流行的库。在你引用这些库时,你会得到默认的intellisense。 我们还在研究是否可以对一些比较流行的库维护另外的intellisense提示文件,你可以下载这些文件以得到更好的intellisense和文档支持。
Visual Studio对ASP.NET项目中WCF服务的重构支持
VS 2008 SP1对包含在ASP.NET Web Site 和 ASP.NET Web Application项目中的 WCF 服务添加了更好的重构支持。
假如你使用重构支持,对WCF服务重新命名类名,接口契约,或者命名空间,VS 2008 SP1现在将会自动地修正web.config和引用它的SVC文件。
Visual Web Developer Express 版对类库和Web Application项目的支持
免费的Visual Web Developer 2008 Express 版也在SP1中作了更新,加了对类库和ASP.NET Web Application项目类型的支持。Visual Web Developer Express版的早期版本只支持ASP.NET web-site项目。
此外,对类库和web应用项目的支持还将允许你在免费的Visual Web Developer 2008版中建造ASP.NET MVC和Silverlight项目。上面所有的JavaScript,动态数据,经典ASP, 以及 AJAX改进都将在Visual Web Developer Express版中工作。
对客户端开发的改进
.NET 3.5 SP1 和 VS 2008 SP1包含了针对客户端应用开发的重大的性能,部署,和功能改进。
Tim Sneath在这里有一篇精彩的博客贴子,讨论了其中一些客户端开发方面的改进,下面是相关的细节:
应用启动和Working Set的性能改进
.NET 3.5 SP1 包括了对CLR的非常重大的性能改进,将导致极其快速的应用启动,特别是在“冷启动”的场景下(指目前没有任何.NET应用在运行)。这些得益大部是通过改变CLR NGEN文件中的块布局,以及通过极大地优化IO访问模式来取得的。我们还将对我们的JIT代码生成器做一些很好的优化,以允许使用结构体的方法的更好的内联化。
在安装SP1后,对大型的.NET客户端应用的测量,我们发现启动的速度之提高几达百分之四十,这些优化在某些情形下还有将ASP.NET 应用每秒请求的吞吐量提高了至百分之十的副作用。
新的.NET 框架客户端Profile安装包
.NET 3.5 SP1还给建造.NET客户端应用的开发人员引进了一个被称为“.NET Framework Client Profile”的新安装包选项,它提供了一个新的安装程序,能在还没有安装.NET框架的机器上提供更小,更快,和更简单的.NET客户端应用的安装体验。
.NET Framework Client Profile安装只包括了.NET框架中常用于客户端应用场景的那些程序集和文件。例如,它包括了Windows Forms, WPF, 和 WCF,并不包括ASP.NET和那些主要用于服务器场景的那些库和组件。我们预期这个安装包的大小大概在26MB左右,比之完整的.NET框架安装包,下载和安装将快很多。
.NET Framework Client安装包中的程序集和API跟完整的.NET框架安装包中的那些程序集和APIs是百分之百一样的,这意味着应用可以定向于NET 3.5 SP1的Client Profile和完整的Profile,不需要做重新编译。在.NET Client Profile安装包下工作的所有的 .NET应用,在完整的.NET框架下也自动工作。
开发人员可以在VS 2008 SP1中调出客户端应用的项目属性页来指定他们建造的客户端应用同时支持.NET Framework Client Profile和完整的.NET框架。在项目属性页上,他们可以选择一个新的复选框,表示它只需要包含在.NET Framework Client Profile中的那些程序集。
VS 2008然后就会确认项目只引用了发布在Client Profile安装包中的那些程序集,如果你尝试使用一个不在Client Profile中的程序集中的一个类型的话,它就会产生一个编译错误。编译好的客户端应用然后就可以在安装了完整的.NET框架的机器,以及只安装了.NET Framework Client Profile的机器上运行。
如果你有一个机器,只安装了.NET Framework Client Profile,你在上面尝试运行一个没有标记支持.NET Framework Client Profile的.NET应用的话,CLR会拒绝运行这个应用,它会提示终端用户更新到完整的.NET框架安装包。这确保应用总是可以正确地运行,开发人员不用操心在运行时遭遇缺失程序集的错误,如果用户尝试在一个只安装了.NET Framework Client Profile的机器上运行一个需要完整的.NET框架的应用的话。
Windows Forms控件
SP1 添加了若干新的Windows Forms控件,包括新的矢量形状,打印, 以及DataRepeater控件:
WPF 性能之改进
.NET 3.5 SP1包括了若干WPF的显著性能优化和改进,其中一些具体的图形方面的改进包括:
- 更平滑的动画效果
- Blur和DropShadow位图效果的硬件加速渲染
- 文本渲染的速度改进,特别是VisualBrish和3D镜头
- 2D图形改进,特别是z-index场景
- 一个新的WriteableBitmap类,将允许实时和无撕裂效果的位图更新,这将促成定制的“绘制”风格的应用,数据视觉化,和那些避开默认的WPF 2D图形APIs的图表。
- 分层的视窗性能改进
SP1还在WPF中加了更好的数据扩缩性。ListView, ListBox 和 TreeView 控件现在支持“个项容器回收(item container recycling)”和“虚拟化(virtualization)”,允许你在卷动的场景下轻松地得到百分之四十的性能改进。这些控件现在还支持“延缓卷动(deferred scrolling)”的功能,它允许你避免实时卷动,而是等到用户放开卷动按钮时才卷动(Outlook中的默认卷动模式),这在对非常大的数据集快速卷动时会非常有用。
WPF的数据改进
.NET 3.5 SP1包括了针对WPF的若干数据绑定和编辑改进,它们包括:
- 在{{ Binding }} 表达式中的StringFormat支持,以促成绑定值的简易格式化
- 对继承自ItemsControl的控件中的新的交替行支持,方便在行上设置交替属性(例如,交替的背景颜色)
- 对可编辑的控件中的null值的更好的处理和转换支持
- 可以将验证规则施用于整个绑定个项的个项层次的验证
- MultiSelector支持,以处理多个选择(multi-selection)和大块编辑场景(bulk editing scenarios)
- IEditableCollectionView支持将数据控件接连到数据源,允许以事务的方式进行编辑/添加/去除个项
- 在绑定到IEnumerable数据源时的性能改进
WPF现在还提供了钩子,允许开发人员编写支持虚拟化卷动方式的定制面板。我们将把这个支持与上面的数据绑定改进一起使用来建造将在今年稍后发布的新WPF datagrid。
WPF可扩展的Shader效果
.NET 3.5 SP1在WPF中添加了对一个新的shader效果架构和APIs的支持,它允许你创建极有表现力的视觉效果并将其施加到WPF中的任何控件和元素上。这些shader效果支持多个输入组合的混合,使它们强而有力的是WPF是使用GPU来运行这些效果的(包括你自己建造的定制效果),给与你完全的硬件加速图形性能。几乎跟WPF中的每样东西一样,你还可以在效果的属性上使用WPF数据绑定和动画效果,将它们完全整合到一种体验之中。
因为效果是可扩展的,开发人员可以创建他们自己的自定义的Effect对象,然后使用它们。
留意Greg Schechter的博客,了解Effects架构的工作原理的细节,以及学习如何在你的应用中创建和施加新的效果。
注: 除了引进新的Shader效果API外, SP1中的WPF还更新了现有的Blur和DropShadow Bitmap效果以支持硬件加速。
WPF与Direct3D的互操作性
.NET 3.5 SP1加了支持,把Direct3D有效地集成进WPF,这让你可以对硬件更直接的访问,可以在WPF应用中充分利用Direct3D API。你将能够把Direct3D内容当作应用中的图像一样处理,以及使用Direct3D内容作为WPF控件的纹理。
注: Direct3D集成还不在今天的SP1版本中,但将在SP1的最终版中。
VS 2008对WPF的改进
VS 2008 SP1包括了对WPF项目和WPF设计器的若干显著的改进,这些包括:
- 若干性能改进
- 在属性浏览器中的事件页支持
- 在属性浏览器中对属性按字母排序的能力
- 显著加快表单布局的Margin snaplines
- 对TabControl, Expander,和 Grid的更好的设计器支持
- 在代码中开始的重构现在会更新你的XAML(包括XAML中的控件声明和事件声明)
- “Go to Definition” 和 “Find All References”现在支持声明在XAML中的东西
SP1中的调试器也被更新了,XAML标识中的运行时错误(例如,应用的样式,数据源以及其他不存在的对象),现在将更容易在调试器中识别。
数据开发的改进
SQL 2008 支持
VS 2008 和 .NET 3.5 被更新到包括对即将发布的SQL 2008的支持,Visual Studio 2008数据设计器,项目和向导现在完全支持连接和操作SQL 2008数据库。
ADO.NET 实体框架和LINQ to Entities
.NET 3.5 SP1 包括了新的ADO.NET实体框架,该框架允许开发人员对他们的关系数据定义较高层次的视图数据对象,然后通过这个模型进行编程。象继承,复杂类型和关系(包括多对多支持)等概念可以用该框架来建模,VS 2008 SP1现在包括了内置的设计器支持来帮助这样的建模。
ADO.NET实体框架和VS 2008实体框架设计器现在同时支持可插拔的提供器模型,允许它们可以用于任何数据库(包括Oracle, DB2, MySql, PostgreSQL, SQLite, VistaDB, Informix, Sybase和其他数据库)。
然后,开发人员可以使用LINQ 和 LINQ to Entities 来查询,操作和更新这些实体对象。
ADO.NET 数据服务(原代号名为Astoria)
.NET 3.5 SP1包括了允许创建基于REST的数据服务的灵活框架。原代号为Astoria,ADO.NET 数据服务框架(Data Services framework)提供了这样的支持,可以通过标准的REST URI句法来发布数据,使用标准的HTTP动词来操作数据资源。开发人员可以轻松地呈现使用ADO.NET实体框架创建的数据模型,以及使用可插拔的提供器模型来呈现其他数据模型。
除了发布数据源外,该框架还加了可以操作远程REST服务的客户端API,包括在这客户端API中的是一个允许对REST服务进行远程查询的LINQ库。
SP1 Beta现在可以在这里下载,由于是测试版,安装程序会与当前的一些应用程序冲突,如果安装发生问题你可以参考SP1 Beta的论坛版面。