使用Spring.NET统一ASP.NET异常处理并记录日志

Spring.NETSpring Framework移植到.NET平台上的一个框架,与其他.NET框架比较:

 

  • 不仅仅是个DI容器——虽然Spring.NET常被拿来与其他的DI容器如Castle等进行比较,但准确地说,Spring.NET是个应用框架,因为它具有丰富的API,可以用在整个应用中,如数据访问、Web开发和集成测试等等。
  • ASP.NET框架——Spring.NET ASP.NET框架并不是基于ASP.NET MVC的,它最大的好处是提升了生产率:新用户在探索DI和Spring.NET时常常会寻求某个ASP.NET框架。
  • 面向消息的中间件集成——与Apache ActiveMQ、TIBCO EMS及MSMQ的集成简化了使用这些框架的工作量,这是通过抽取出低层析的线程安全问题并使用基于POCO的编程模型实现的。
  • 面向方面的编程(AOP)——Spring.NET提供了一个可扩展的AOP框架,该框架包含了如切入点(pointcut)通知(advice)等概念,同时还提供了易于使用的通知实现,如日志异常转换参数验证缓存自动化的重试(retry)等等。
  • ADO.NET程序库——ADO.NET辅助程序库抽取并简化了ADO.NET的数据源操作,这是通过削减大量的样板代码并提供了基于模板的编程模型实现的。
  • 表达式语言——Spring.NET提供了一个表达式语言,可在运行期查询并操纵对象图。
  • 集成测试——支持集成测试以简化数据访问等操作。
  • 模块化——将特性分布在不同的DLL中,这样开发者就可以选取自己所需要的DLL而无需使用整个框架。
  • 企业支持——Spring.NET由SpringSource前不久被VMWare收购)出品。由于有了大公司的支持,这样那些想要使用Spring.NET的公司无疑吃了个定心丸。
  • 计划中的基于代码的容器配置——目前的Spring.NET只支持基于XML的配置,而Castle则支持XML和“类型映射”风格的API两种方式。在下一版中,Spring.NET将提供类似于Spring JavaConfig(已融合到了Spring 3.0中)的基于代码的配置方式。

 

在面向方面(AOP)方面,Spring.NET也做了很好的支持,比如/*ASP.NET网站异常处理并记录日志*/这个功能可以这样实现:

 

 

  • 搭配使用Log4net在ASP.NET发生异常的时候记录错误日志——可以参考这篇文章Log4net是一个开源高性能日志记录组件,log4net有很多好处,例如按日期记录日志,按目录记录,限制文件大小等等。
  • 使用Spring.NET Throw Service——通过实现Spring.NET Spring.Aop.IThrowsAdvice 接口,当异常发生的时候,调用自己实现的方法(例如调用Log4net记录错误日志,给管理员发送短信息等等),注意实现IThrowsAdvice接口并不意味这个异常已经被处理,仍旧会继续传播。如果想要在 Throw Advice 处理时中止应用程序的处理流程,作法是抛出其它的异常。具体做法可以参考这篇文章
  • Spring.NET现在最高版本是1.3,将来计划继续发展到Spring.NET 2.0,届时将全面支持.NET4.0的功能,相信在AOP方面会有更多功能呈现。有关Spring.NET最新动态,可以看InfoQ这个文章:对话Spring.NET

 

你可能感兴趣的:(asp.net)