ASP.NET 4.0 来了

  伴随着VS2010的公开测试,ASP.NET4.0也进入了我们的视线。ASP.NET4.0究竟给我们带来了什么,将在哪些方面提高我们的生产力?

  在何时你需要使用ASP.NET4.0开发你的网站程序?

需要更严格的遵守Web标准; 需要更流畅的Web Form开发方式;需要更好的搜索引擎优化; 需要后知后觉的纠正一些不够优良的设计,这些设计甚至可能是在ASP.NET 1.0发布之前就存在的; 需要将现有的功能重新改造为支持server farm或跨application domains; 需要将.NET调节和重组为一个
整体。

  你不需要学习复杂的设计模式或各种SEO技巧,甚至不需要有代码重构的能力。忘记那些复杂的规定和教条吧,使用ASP.NET4.0提供的各种方便又实用的新功能,你将能轻松的开发/升级出与时俱进的高质量的程序。而这一切均需要从这里开始:

下载,安装VS2010 http://www.microsoft.com/visualstudio/zh-cn/products/2010/default.mspx#compare 安装之前务必卸载之前的测试版本,包括.NET Framework 4。新版本的VS2010包含了
大量更新,与之前的测试版本并不兼容 。新的预定义界面:

VS2010带来了一个新的预定义设置:Web Development(Code Only),如字面所示,它是为了web开发而设计的,但与普通的Web Development模式不同的是,它针对的是喜欢手写代码的开发人员,它让VS看起来更像一个单纯的IDE:

至于您是否喜欢,就萝卜青菜,各有所爱了。。。(我还是喜欢全屏模式。。)

新的项目类型:

VS2010对ASP.NET的项目类型做了大量的更改,具体改动如下:

ASP.NET Web Service Application被完全的移除了;.Net3.0 带来的 WCF Service Application 移至 WCF projects 下; .Net3.5 SP1 带来的两个 Dynamic Data 相关的项目被改为更容易理解的名称,例如 Dynamic Data Web Application 使用LINQ to SQL替换了之前的Entity Framework; MVC项目有了一个称为 ASP.NET MVC2 Empty Web Application 的新选择。新的 ASP.NET MVC2 Empty Web Application 项目会建立如下的内容:标准的目录(空),空白的global.asax文件,web.config文件,标准的jQuery和MS AJAX库。相比较而言,ASP.NET MVC2 Web Application项目会生成一个可工作的网站,实现一个简单的membership模型,生成并使用master page,error page及所需的content page,并且可以生成一个示例test project。这对MVC新手非常有帮助,可以较为全面的使用MVC的功能。简洁的Web.Config文件

在VS2008SP1中,默认的web.config文件代码有139行,而在ASP.NET4.0中,web.config 文件只有6行:

原理很简单,ASP.NET团队对web.config文件进行了重构,将通用的设置写进默认的机器级别的web.config中。只剩下两个需要频繁变化的设置项。

debug的值在Web Application 项目中会被默认设置为true,在Web Site 项目中会被默认设置为false。 targetFramework的值可以设置为:4.0,3.5,3.0和2.0。这个选项会被IIS识别并自动赋予ASP.NET程序池相应的Framework版本。 Intellisense在旧版的web.config中会不起作用。可以通过删除原web.config中configuration的namespace(xmlns)属性就可以了。

*.config文件的层级结构:

在新的config文件定义中,一系列功能例如:Dynamic  Data,routing与charting全部默认开启。

关于不同级别的config文件的关系,非常类似与CSS文件的复写。简单的来说就是离你越近的config权值越高,也就是最底层的machine.config权值最低,你新建的web项目中的web.config的权值最高。

root的config文件为machine.config,位于C:\Windows\Microsoft.NET\Framework\ v4.0.xyz\Config。 机器级别的web.config文件同样位于上面的那个目录,它在machine.config文件的基础上定义了web特定的一些节点的默认值,也就是在之前的ASP.NET版本中创建项目生成的web.config的文件中的那些值。 同样在上面那个目录中,你会发现如下的文件:web_hightrust.config, web_mediumtrust.config, web_lowtrust.config 和 web_minimaltrust.config。如果你的站点的信任级别不是“FULL”,将会使用对应的config文件作为默认值。 在你创建的项目中,会默认生成一个web.config文件,这也是我们通常所说的web.config文件。 在你的项目的任何目录中,你都可以添加一个web.config文件,这个文件中的值会覆盖项目根目录中的值。你可以利用这个特性做一些例如权限限制之类的功能。Config Transformation Files

这个新功能是为了应对同一个网站在不同服务器需要不同的web.config文件的问题,例如需要不同的connectionstring等。在以前我们可能很难维护这些不同的web.config文件(在我经历的项目中,为了解决这个问题,使用了com组建读取注册表,在不同机器的注册表中写入相应的信息),而现在有了这个新功能,我们可以以编程的方式统一的解决和处理这个问题(基于XPATH技术)。你只需要在web.config文件上右键单击,并选择“Add Config Transforms”即可。

Browscap.ini

对于使用过ASP的程序员来说,应该对这个文件并不陌生。这个文件是用来记录所有要使用的浏览器,以及这些浏览器所支持的特性(例如是否支持activeX)。

在.NET2.0中,微软将browsercap.ini的功能分割为一系列的*.browser文件。当收到一个请求的时候,我们就可以根据这个请求发起的browser找到对应的browser文件来获取浏览器的能力。这些数据会被传递到HttpBrowserCapabilities对象中,我们就可以使用这些数据了。

所有的browser文件可以在C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers下被找到。里面其实还是挺齐全的。

将一个文件分割成一系列文件会造成更加难以维护的情况,但这么做的理由似乎也不难猜想,就是微软希望一系列的浏览器使用同一个文件,例如ie.browser, mozilla.browser之类的。

在.NET4.0中,微软继续沿袭了这一思路,并且大范围的更新了这些文件,以支持现在流行的浏览器,特别是移动浏览器:iPhones, Windows PhoneOS, Android等,并且不会把这些浏览器简单的处理成wap浏览器。对于桌面浏览器来讲,也添加了对Firefox,Chrome和Safari的支持。

这么做很好,但是问题来了,难道我们要等每个新的.Net Framework发布后才能获得这些新的文件吗?答案当然是否定的。

如今浏览器发展日新月异,马上又即将有IE9, Opera 10.5, Gecko 1.9.3和新的IE for mobilephone等等。如果我们希望支持这些新的浏览器,我们有四种选择:

手动更新这些browser文件或者创建新的browser文件。 创建一个新的browser文件并将它添加在你的站点的App_Browser文件夹下。但这样只对你当前的站点有效。 扩展现有的browser capabilities provider。 创建一个自定义的browser capabilities provider替换现有的。

你可以针对你所拥有的资源或网站架构来选择如何解决这个问题。我们推荐使用自定义的browser capabilities provider去解决,虽然需要更多代码,但一旦完成,之后的更新将会更轻松。这就意味着你能更迅速的支持新的浏览器。

但无论如何,支持一个新的浏览器都是一个困难的工作,但.NET4.0给我们带来的最新的browser支持文件和一个可扩展的方法。

新的
Page属性

任何ASP.NET开发人员对于@Page标签都不会陌生。好消息是ASP.NET4.0完全兼容之前版本所提供的42个属性。更好的消息是,ASP.NET4.0还带来了6个新的属性,以应对日益复杂的开发需求:

ClientIDMode 顾名思义,这个属性用来定义ASP.NET将如何生成控件的客户端ID,如果你是一个前端开发人员,你将会
明白能够确定的控制客户端ID的生成将带来多大的便利。可能的值为AutoID(default/current),Predictable,Static和Inherit。 ClientTarget 用来定义页面将针对哪个浏览器来执行。这将覆盖ASP.NET提供的自动浏览器识别功能,可能的应用场景为比如我们只需要支持IE浏览器或只需要支持FIREFOX等。 MetaDescription 顾名思义,用来生成页面的meta 的description标签。在我看来只是提供了一个更为官方的方法和方式,标准化了这一流程。 MetaKeywords 顾名思义,用来生成meta的keywords标签。 TargetSchema 用来定义验证页面所需的schema。这个标签只是用来标识的,并不会真正的执行。可以看作一种代码注释。 ViewStateMode 用来定义页面的VIEWSTATE是opt-in还是opt-out(默认)模式。

总体来说变化不大,提供了一些呼声很高的功能。

生成更纯净,更标准的HTML代码

这一直是ASP.NET中比较大的问题。ASP.NET1.1生成的html代码基本都不符合标准,这一点在ASP.NET 2.0中已经进行了改进,我们在web.config中引入了xhtmlConformance,用来定义控件将生成何种标准的HTML代码,默认为XHTML1.0 Transitional standard(Transitional)。相应的,我们可以将它设定为XHTML1.0 Strict(Strict)或者选择生成与ASP.NET1.1相同的HTML代码(Legacy,主要用来兼容从ASP.NET1.1升级而来的网站)。

不幸的是,在Legacy模式运行的网站与ASP.NET AJAX不兼容,而且尽管Transitional与Strict模式与XHTML标准兼容,但生成的代码对CSS也是非常不友好的。例如:

menu用table输出而不是UL/OL。 服务器端的控件属性例如 border=0 或disabled=disabled 是强制的并且无法移除。 对于支持template的控件,你可以对template内的代码进行任何的自定义,但无法移除最外层的table标签。

ASP.NET3.5带来的ListView,DataPager和CSS Control Adapters控件带来了过渡性的解决方案,ASP.NET4.0完全将他们集成在新版本的System.Web中,使得微软可以使ASP.NET 4.0可以尽可能的对CSS友好。毋庸置疑,生成干净的HTML标签是ASP.NET 4.0的重要目标之一。

ControlRenderingCompatibilityVersion

与xhltmlComformance类似,ASP.NET4.0为web.config带来了这个新的属性。当设置为3.5时,一切将和原来一致,但当你设置为4.0时,控件将按照全新的模式输出HTML代码:

xhtmlConformance被设置为Strict。 menu将会用UL/OL的形式输出。多余的HTML属性将被移除,甚至连validation的字体颜色也不会被设置为红色。 将可以对控件使用RenderOuterTable属性来控制是否输出外围的table标签。

在我看来这对于习惯使用控件的同学是个好消息。微软又帮你做了许多工作。

新增的一些小功能

列举一些新增的细节功能

内置<asp:chart>。 三种新的Redirect方式:Response.RedirectToRoute(HTTP302), Response.RedirectToRoutePermanent(HTTP301)和Response.RedirectPermanent(HTTP301)。 Inline的HTML encoded 字符串。

Routing配置更便捷。

时间: 2024-10-31 04:21:13

ASP.NET 4.0 来了的相关文章

Asp.net 1.0 升级至 ASP.NET 2.0十个问题总结

asp.net|问题     这几天升级了一下原来的1.1项目,发现了一些问题,总结一下放在这里,也提醒还没有来得及升级或准备升级的朋友,升级的过程中少走弯路,少浪费时间. 1.Global.asax文件的处理形式不一样 转化后将出现错误,在vs2003中Global.asax具有代码后置文件,2.0下, 将代码分离文件移到 App_Code 目录下,以便使其自动变为可通过应用程序中的任意 ASP.NET 页面访问."Code-behind"属性将从 ASAX 文件的指令中删除.vs2

ASP.NET 2.0不能识别eurl.axd的解决方法

在IIS6中同时启用了ASP.NET 2.0 和 ASP.NET 4.0 后,网站程序可能会出现如下错误:" System.Web.HttpException: Path '//eurl.axd/' was not found. " 错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0,本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管理程序作进一步处理.但是,如果一个低于ASP.NET 4.0 的网站配置为使用ASP.NET

ASP.NET 2.0实现依赖Oracle的缓存策略

asp.net|oracle|策略|缓存 ASP.NET 2.0中的缓存提供了对SQL依赖项的支持,也就是说当SQL SERVER数据库中的表或行中的数据被更改后,缓存中的页面就失效,否则,页面输出可一直保留在缓存当中.这确实为程序员提供了方便.但微软一向很小家子气,只为使用自家产品SQL SERVER的程序员提供了方便,那些用Oracle数据库的ASP.NET程序员怎么办呢? 其实不用着急,因为ASP.NET 2.0中的缓存还提供了对文件依赖项的支持,也就是缓存依赖于某个文件,该文件被修改后,

ASP.NET 2.0数据教程之三十二:数据控件的嵌套

返回"ASP.NET 2.0数据教程目录" 导言 除了静态HTML和数据绑定语法,template也可以包含Web控件和用 户控件.这些控件的属性可以通过声明语法,数据绑定语法或在服务器端通过事件 处理编程来设置. 通过将控件嵌入到template里,可以自定义界面,提升用 户体验.例如,在在GridView控件中使用TemplateField 里,我们学习了如何通过在 GridView的TemplateField里加一个Calendar控件来表示员工的雇佣日期.在给编 辑和新增界面增

[转]利用ASP.NET 2.0创建自定义Web控件(2)

原址:http://hi.baidu.com/sjbh/blog/item/5a8298454403a321cffca39c.html   如何生成的? Render() 方法基本上控制着 WebControl 的整个输出.默认情况下,Render() 方法实际上会依次调用 RenderBeginTag().RenderContents() 以及 RenderEndTag().尽管在 ASP.NET 1.x 中调用结构并未变化,但由于该呈现模型,修改这些调用的影响却发生了变化. 您可以覆盖 Re

ASP.NET 2.0实现AJAX的Web开发

ajax|asp.net|web [导读]在过去的几个月中,基于AJAX技术开发高度交互的Web应用程序的设计模式迅速流行开来.现在,具有高度可配置性的Web应用程序,例如Google Maps和A9,都在综合利用这些技术来创造丰富的客户端用户体验.其实,结合AJAX技术进行Web开发并非最近的研究成果,只不过这些技术一直以来不断得到持续更新和改进. 本文中我有三个目的.首先,我想提供一个AJAX风格应用程序的高级概述.其次,我想详细地描述ASP.NET 2.0的异步回调机制.最后,我想对构建A

网站开发技术:ASP.NET 2.0搭建网站

知识经济大潮下的广大网民由于其知识层次的不断提升,以及对自身价值的展现的要求越来越迫切和广泛,他们对于网站的使用功能也越来越重视,因而网站在建设和发展的过程当中,更加需要持续不断的技术创新,以满足用户的需求,并在一定条件下起到引领用户的作用. 首先,从总体开发平台或开发框架来看,我们可以采用ASP.NET 2.0来搭建网站和实现Web应用.基于ASP.NET 2.0的开放式构架,以及先进的Web Part可自定制部件的开发思想,使得网站的开发将从根本上实现快速,稳定,安全,跨平台,易扩展等等要求

ASP.NET 2.0服务器控件开发的基本概念

利用ASP.NET 2.0技术,创建Web自定义服务器控件并不是一件轻松的事情.因为,这需要开发人员了解并能够灵活应用多种Web开发技术,例如,CSS样式表.客户端脚本语言..NET开发语言.服务器控件开发技术,甚至是当前最火的AJAX技术等等.虽然现实如此"艰难",但是这种开发技术也不是真的难到不可掌握.事事都要从头做起.本文将针对利用asp.net 2.0技术,创建Web自定义服务器控件的基础知识进行详细介绍,内容包括:服务器控件概念.控件类型.生命周期等. ASP.NET 2.0

在ASP.NET 2.0中建立站点导航层次(1)

站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息. 站点导航API--站点导航API用于在应用程序的代码中访问站点导航信息,它摘录了导航信息存储的细节.你可以使用API来编程访问应用程序的导航节点. 导航控件--导航控件为页面之间的导航提供了通用的UI,例如树视图.菜单和breadcrum