zoukankan      html  css  js  c++  java
  • 企业开发框架NHibernate和Spring.Net简介3

    企业开发框架NHibernate和Spring.Net简介-3
    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/>元素。
  • 相关阅读:
    hdu 1003 dp最大子序列和
    模拟题 (+queue队列知识)
    hdu 1016 DFS
    OSGi 系列(二)之 Hello World
    OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统
    Mina 系列(四)之KeepAliveFilter -- 心跳检测
    Mina 系列(三)之自定义编解码器.md
    Mina 系列(二)之基础
    Mina 快速入门
    Java 8 Optional 类深度解析
  • 原文地址:https://www.cnblogs.com/kedach/p/1284866.html
Copyright © 2011-2022 走看看