一起谈.NET技术,ASP.NET 4.0 一些隐性的扩展
2011-08-29 19:25
477 查看
ASP.NET 4.0在很多方面都做了改进,在这篇ASP.NET 4.0白皮书就描述了很多ASP.NET 4.0的机制改变和改进。在我的博客中,也有几篇关于ASP.NET4.0的特性修改的文章。但是作为一个全新的框架和运行时,内部肯定还会有很多API和扩展点不会暴露的那么明显。比如今天从这篇文章Three Hidden Extensibility Gems in ASP.NET 4的介绍中,我又了解了一些在我平常开发中绝对非常有用的扩展点。
我们必须从assembly级别上来使用这个attribute,也就是通常情况下我们会用在
我们需要指定的是类型和类型里面静态函数的名称,这个静态函数必须是不带参数和返回值的公共函数。
这个功能最重要的地方是在于,它可以做一些我们原来在
总之虽然只是一个简单的attribute,可是它却非常的有用。当我们开发是一个可复用的框架时,我们不可避免的会需要在程序中做很多相关的配置才能让程序跑起来。而以前,我们就只能要求用户通过Web.config来完成,而当用户少了一个配置就可能会导致整个框架无法运行。如果我们能将这些必须的配置,都在我们的框架内部来完成,这样就可以大大降低框架的使用门槛。
PreApplicationStartMethodAttribute
这个新的Attribute可以让我们指定一个公共的静态函数,让它在站点的Application_Start之前执行该函数。如果你的站点有App_code目录,这个函数同样也会在App_code目录下的代码被编译之前执行。从我的直觉中,这是一个相当有用的扩展点。
我们必须从assembly级别上来使用这个attribute,也就是通常情况下我们会用在
AssemblyInfo.cs中:
[assembly: PreApplicationStartMethod( typeof(SomeClassLib.Initializer), "Initialize")]
我们需要指定的是类型和类型里面静态函数的名称,这个静态函数必须是不带参数和返回值的公共函数。
这个功能最重要的地方是在于,它可以做一些我们原来在
Application_Start无法完成的事情,所以很多事情在执行到
Application_Start时已经完成了,不可改变的,比如下面要介绍的关于编译的扩展。
BuildProvider.RegisterBuildProvider
原来我们要注册BuildProvider都是通过添加web.config的<buildproviders>来完成。在ASP.NET 4.0当中,我们就可以配合PreApplicationStartMethodAttribute,在站点启动前添加自定义的来BuildProvider达到目的。
BuildManager.AddReferencedAssembly
在做.ASPX/.ASPCX和App_code目录下的代码文件编译时,需要依赖一些程序集。以前,我们都需要将这些程序集配置在web.config的<assemblies>节点下来完成。现在,你就只需要配合以上的attribute和这个新的方法,直接通过代码的形式来增加这些依赖。
Config-free IHttpModule Registration
这也是对PreApplicationStartMethodAttribute的一个绝对的妙用,在Nikhil Kothari的这篇文章中有详细的介绍。它的主要目标,也是脱离Web.config就可以通过代码来注册IHttpModule。总之虽然只是一个简单的attribute,可是它却非常的有用。当我们开发是一个可复用的框架时,我们不可避免的会需要在程序中做很多相关的配置才能让程序跑起来。而以前,我们就只能要求用户通过Web.config来完成,而当用户少了一个配置就可能会导致整个框架无法运行。如果我们能将这些必须的配置,都在我们的框架内部来完成,这样就可以大大降低框架的使用门槛。
相关文章推荐
- 一起谈.NET技术,13个不可不知的ASP.NET MVC扩展点
- 一起谈.NET技术,关于ASP.NET与CLR相互关系的一些总结
- 一起谈.NET技术,ASP.NET MVC 2扩展点之Model Binder
- 一起谈.NET技术,ASP.NET MVC 2 验证消息本地化策略扩展
- 一起谈.NET技术,ASP.NET 4.0 来了
- ASP.NET 4.0 一些隐性的扩展
- 一起谈.NET技术,详解ASP.NET页面的aspx扩展
- 一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇
- 一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《自动启动ASP.NET应用》篇
- 一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- 一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
- 一起谈.NET技术,在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
- 一起谈.NET技术,ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI
- 一起谈.NET技术,详解ASP.NET4 GridView新增4大排序样式
- 一起谈.NET技术,asp.net控件开发基础(23)
- 一起谈.NET技术,asp.net控件开发基础(10)
- 一起谈.NET技术,ASP.NET MVC 入门介绍 (下)
- 一起谈.NET技术,Unobtrusive JavaScript in ASP.NET MVC 3
- 一起谈.NET技术,ASP.NET Routing对请求的处理方式
- 一起谈.NET技术,Asp.net mvc 2中使用Ajax的三种方式