企业开发框架NHibernate和Spring.Net简介-3
2008-09-05 09:44
435 查看
企业开发框架NHibernate和Spring.Net简介-3
2008-03-24 13:59
2008-03-24 13:59
3.面向方面编程(AOP) 面向方面编程是对面向对象编程(OOP)的补充,是另外一种思考编程框架的方法。面向对象是将应用分解成具有层次结构的对象;而面向方面编程则是把程序分解成方面或者关注点,使诸如事务管理等方面的模块化成为可能。Spring.NET中很关键的一个组件就是AOP框架。能够帮助Spring.NET的 IoC容器为企业应用提供一个非常强大的中间件解决方案。 AOP用于Spring.NET可以完成下列功能。 ![]() 提供公开的企业服务,尤其是作为COM+公开服务的替代者。这些服务中最重要的服务是公开的事务管理,这是Spring.NET事务抽象的基础。 ![]() 允许用户实现定制的方面,通过面向方面编程来补充面向对象编程的不足。 用户不但可以把Spring.NET AOP看作是能够不通过COM+就可以提供公开事务管理的技术,而且还可以充分发挥Spring.NET AOP框架的功能区实现定制方面。 通过上面的介绍读者可能对AOP已经有了一个大致的了解,下面介绍几个关于AOP的概念。 ![]() 方面(Aspect):这个是一个让读者感觉比较模糊的概念,它和通常意义上的方面不完全一样,它是对关注点的模块化,这可能会横切多个对象。事务管理是一个非常好的横切关注点企业应用的例子。在Spring.NET中,方面作为建议者或者监听器的形式实现。 ![]() 连接点(Jointpoint):程序运行期间的一些点,例如方法调用或者特殊的异常被抛出。 ![]() 建议(Advice):AOP框架在一个特殊连接点上采取的动作。这些不同类型的建议包括“around”、“before”和“throws” 等建议。很多AOP框架,包括Spring.NET,都把一个建议模拟成一个监听器,同时维护一个“around”连接点的监听器链。 ![]() 切点(Pointcut):一组连接点,用于指定建议应该激活的时间。一个AOP框架必须能够允许开发人员指定切点,例如,使用正则表达式。 ![]() 介绍(Introduction):添加方法或域到建议类。Spring.NET允许介绍一个新的接口到任何一个建议对象中。例如,为了简化对对象状态变化的跟踪,可以使用建议为任何对象实现一个IAuditable接口。 ![]() 目标对象:包含连接点的对象。 ![]() AOP代理:由AOP框架创建的对象,包括建议。在Spring.NET中,一个AOP代理是一个在运行期使用IL代码生成的动态代理。 ![]() Weaving:装配对象创建一个被建议对象。装配工作发生在编译期(例如使用Gripper-Loom .NET编译器),也能发生在运行期。Spring.NET在运行期执行装配动作。 4.Spring.NET应用实例 下面以经典的Movie Finder作为Spring.NET应用实例来讲解IoC容器的使用方法。实例的C#代码可以在Spring.NET发布版的examples/Spring/Spring.Examples.MovieFinder目录中找到。 (1)Movie Finder。MovieFinder例子的起始类是MovieApp类,这是具有单一应用程序入口点的普通.NET类。代码如下所示: #001 using System; #002 namespace Spring.Examples.MovieFinder #003 { #004 public class MovieApp #005 { #006 public static void Main () #007 { #008 } #009 } #010 } 现在想做的是获得一个对MovieFinder类实例的引用。这是Spring.NET例子,所以要从Spring.NET的IoC容器类IApplicationContext获得这个引用。应用程序配置文件中的IApplicationContext配置信息如下: #001 <?xml version="1.0" encoding="utf-8" ?> #002 <configuration> #003 <configSections> #004 <sectionGroup name="spring"> #005 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> #006 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> #007 </sectionGroup> #008 </configSections> #009 <spring> #010 <context> #011 <resource uri="config://spring/objects"/> #012 </context> #013 <objects> #014 <description>An example that demonstrates simple IoC features.</description> #015 </objects> #016 </spring> #017 </configuration> 将在应用程序示例中用到的对象配置成嵌套在<objects/>元素中的<object/>元素。 |
相关文章推荐
- 企业开发框架NHibernate和Spring.Net简介-1
- 企业开发框架NHibernate和Spring.Net简介-2
- 企业开发框架NHibernate和Spring.Net简介-4
- 企业开发框架NHibernate和Spring.Net简介
- .NET企业轻量级开发框架(APS.NET+Spring.Net+NHibernate)
- 企业开发框架NHibernate和Spring.Net
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
- .NET企业应用开发框架Spring.NET
- FastSpring.NET V2.0 Preview 1 发布[Spring.NET & NHibernate的三层的开发框架]
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
- "开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo"项目分析
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
- ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持
- Spring的声明式事务管理(李刚 轻量级javaEE 企业应用实战-三大框架整合开发)
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (五)测试你的成果(转)
- Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用
- 软件合作开发:2012年年底给苏州工业园区某家软件企业实施C#.NET软件开发系统框架的经验小结
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (四)配置全攻略
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
- OSGI企业应用开发(九)整合Spring和Mybatis框架(二)