ASP.NET 4.0在很多方面都做了改进,在这篇ASP.NET 4.0白皮书就描述了很多ASP.NET 4.0的机制改变和改进。在我的博客中,也有几篇关于ASP.NET4.0的特性修改的文章。但是作为一个全新的框架和运行时,内部肯定还会有很多API和扩展点不会暴露的那么明显。比如今天从这篇文章Three Hidden Extensibility Gems in ASP.NET 4的介绍中,我又了解了一些在我平常开发中绝对非常有用的扩展点。

  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技术,ASP.NET 4.0 一些隐性的扩展相关推荐

  1. 64位环境启用ASP.net 2.0的32位扩展

    The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. 但在安装同样软件的x32的服务器上没有这个 ...

  2. 一起谈.NET技术,在MVC2.0使用Lodop为WEB打印提出完美解决方案

    通过好友CallHot介绍Lodopweb打印控件.由于是国人开发的,故这两天认真了研究下,打算在未来的项目中使用.现将学习成果与园友分享.如果存在不足的地方,希望您指出. 具体的实现步骤如下: 一. ...

  3. 一起谈.NET技术,NHibernate 3.0.0.Alpha1 发布及新特性介绍

    发布 刚刚NHibernate的Leader--Fabio Maulo发布了NHibernate 3.0.0.Alpha1版本,这是NHibernate 3.0.0的第一个公开测试版本. 下载地址 你 ...

  4. 小试ASP.NET 2.0的兼容性

    ASP.NET 2.0来了! 在我们为ASP.NET 2.0的新特性感到激动的同时,我想很多ASP.NET开发人员非常关心这样一个问题:ASP.NET 2.0的兼容性怎么样?ASP.NET 1.1开发 ...

  5. 一起谈.NET技术,ASP.NET2.0服务器控件之类型转换器

    类型转换器是实现自定义服务器控件属性过程中比较重要的内容.本文将对类型转换器的基本概念和实现方法进行介绍. 1. 类型转换器基本概念 类型转换器是自定义服务器控件的辅助性功能实现.它主要用于执行从字符 ...

  6. ASP.NET 2.0 本地化技术之研究

    http://www.cnblogs.com/reonlyrun/archive/2007/03/14/673649.html 众所周知ASP.NET 2.0里对本地化(Localization)做了 ...

  7. 一起谈.NET技术,asp.net控件开发基础(20)

    上面我们讨论了数据绑定控件的做法,但都未涉及到asp.net2.0中数据源控件的用法,让用惯了数据源控件的人可能感觉不适应.这次我们就开始讨论在asp.net2.0中,我们该如何重新定义数据绑定控件. ...

  8. 一起谈.NET技术,ASP.NET MVC Membership 权限 漫谈

    以前一位同事习惯于使用Membership来进行权限管理,现在随着ASP.NET MVC的引入,采用以前的方法,提出了以下方案: ASP.NET MVC+Membership结合,通过在web.con ...

  9. 探讨ASP.NET 2.0中的Web控件改进技术(2)

    我的观点是:ViewState有可能成为你最好的朋友,也有可能成为你最坏的敌人-这要依赖于你使用它的方式来决定.如果你在以前曾经使用过ViewState,那么,你肯定会喜欢新的ControlState ...

最新文章

  1. cmake使用教程(十一)-使用cpack打包源码并编写自动化脚本上传到仓库
  2. Java如何比较两个字符串(对象)是否相等
  3. .net中close和dispose及关闭流操作
  4. 2008软考网络工程师题
  5. MOSS中自定义WebService
  6. 2021年移动市场报告.pdf
  7. Mac双系统中删除Windows系统教程
  8. echarts中x轴文件消失_百度Echarts图表在Vue项目的完整引入以及按需加载
  9. DataMining with Sql 2005
  10. Python语言介绍
  11. 运动会管理系统(JAVA,JSP,SERVLET,MYSQL)
  12. VC2005工程常用设置系统环境变量设置
  13. 找到服务器系统日志,查看服务器系统日志
  14. 如何使用保存实例状态保存活动状态?
  15. P2P网贷行业的新征程
  16. codeforces 596E Wilbur and Strings(DFS)
  17. 我的世界服务器被无限循环怎么办,我的世界无限循环装置制作方法
  18. 云原生|容器和应用安全运营实践思考
  19. 记一次对易班前端解密的经过
  20. 初创小公司需不需要合伙人?

热门文章

  1. 怎么利用c 语言编程进行进制计算,编程达人 《汇编、C语言基础教程》第一章 进制1.1 进制的定义(连载)...
  2. 蓝桥杯泊松分酒java_【蓝桥杯】泊松分酒
  3. D-S证据理论基本概念
  4. 算法的优缺点_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)
  5. sqlyog-mysql_SQLyog
  6. DE23 Use with Impulse Inputs
  7. DXUT实战2:HLSL(withoutEffect)+D3D9+DXUT(june_2010) .
  8. pytorch-数据增强的trick
  9. 神经网络填充(padding)
  10. oracle adrci purge,adrci中的purge