使用Spring.NET统一ASP.NET异常处理并记录日志
2010-12-06 11:53
926 查看
Spring.NET是Spring 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
不仅仅是个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 Core 异常处理与日志记录
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- asp.net中的日志添加和未处理异常的记录
- 在ASP.NET MVC中使用Log4Net记录异常日志,出错时导向到静态页
- asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
- ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面
- asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
- ASP.NET Core 中使用 GrayLog 记录日志
- 在ASP.NET中记录错误日志(使用Global.asax)
- ASP.NET Core 统一异常处理和返回
- 使用Application_Error事件处理程序把异常记录到系统事件日志
- 如何使用Apache log4net库与ASP.NET MVC 5日志记录
- 在ASP.NET MVC中使用Log4Net进行多种HttpCode日志的记录
- ASP.NET Core使用NLog记录日志到Microsoft Sql Server
- Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
- 46. Spring Boot中使用AOP统一处理Web请求日志【从零开始学Spring Boot】
- Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
- Spring.Net学习系列一: 统一异常处理
- 使用Spring进行统一日志管理 + 统一异常管理
- 使用Spring实现异常统一处理【三】--java.lang.IllegalStateException: STREAM问题的解决