on
on
0
<P><SPAN class=emphasis><EM>Aspect-Oriented Programming</EM></SPAN> (<SPAN class=emphasis><EM>AOP</EM></SPAN>) complements OOP by providing another way of thinking about program structure. Whereas OO decomposes applications into a hierarchy of objects, AOP decomposes programs into <SPAN class=emphasis><EM>aspects</EM></SPAN> or <SPAN class=emphasis><EM>concerns.&nbsp;</EM> This enables the modularization of concerns such as transaction management that would otherwise cut across multiple objects (such concerns are often termed <SPAN class=emphasis><EM>crosscutting</EM></SPAN> concerns).</SPAN></P>
The <A href="http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html">AOP Quickstart</A> included in the distribution is a good starting point to explore the functionality offered in Spring.NET's AOP Framework.
AOP framework interfaces based on the <A href="http://aopalliance.sourceforge.net/">AOP Alliance</A> API.
AOP Alliance interception interfaces.
<P>Core Spring.NET AOP interfaces, built on top of and implementing all of the AOP Alliance AOP interoperability interfaces.</P> <P>Spring.NET AOP also offers:</P> <OL> <LI>Introduction support</LI> <LI>A pointcut abstraction, supporting "static" pointcuts (class and method-based) and "dynamic" pointcuts (also considering method arguments).</LI> <LI>A&nbsp;full range of advice types, including around, before, after returning and throws advice.</LI> <LI>Extensibility points allowing arbitrary custom advice types to be plugged in without modifying the core framework.</LI></OL> <P>Spring.NET AOP can be used programmatically or (preferably) in conjunction with the Spring.NET IoC container.</P>
Custom schema for configuration
<P>Basic AOP infrastructure compliant with the <A href="http://aopalliance.sourceforge.net/">AOP Alliance</A>&nbsp;interfaces.</P> <P>Spring.NET AOP supports proxying interfaces or classes, introductions, and offers static and dynamic pointcuts.<BR></P> <P>Any Spring.NET AOP proxy can be cast to the %ProxyConfig:Spring.Aop~Spring.Aop.Framework.ProxyConfig% AOP configuration interface in this namespace to add or remove interceptors.</P> <P>The %ProxyFactoryObject:Spring.Aop~Spring.Aop.Framework.ProxyFactoryObject% is a convenient way to create AOP proxies in an IObjectFactory or IApplicationContext. However, proxies can be created programmatically using the %ProxyFactory:Spring.Aop~Spring.Aop.Framework.ProxyFactory% class.</P>
<P>Service Provider Interface (SPI) namespace allowing Spring.NET AOP framework to handle arbitrary advice types.<BR></P> <P>Users who want to use the Spring.NET AOP framework, rather than extend its capabilities, don't need to concern themselves with this namespace.</P>
Object&nbsp;post-processors for use in IApplicationContexts to simplify AOP usage by automatically creating AOP proxies without the need to use a ProxyFactoryObject. <P>&nbsp; <P>The various post-processors in this package need only be added to an IApplicationContext (typically in an XML object definition document) to automatically proxy selected objects. </P>
<P>Generic support classes for target source creation. </P>
Contains functionality relating to the creation of dynamic proxy instances.
Convenience classes for using Spring.NET's AOP API.
<P>This namespace contains implementations of the %Spring.Aop.ITargetSource:Spring.Aop~Spring.Aop.ITargetSource% interface.<BR></P> <P>The simplest implementation is the %SingletonTargetSource:Spring.Aop~Spring.Aop.Target.SingletonTargetSource%, which is used in the AOP framework to wrap a single target instance. This is normally appropriate, and is the current default.</P> <P>Other features include pooling implementations, that provides a target from a pool for each request, ensuring a single threaded programming model; and a&nbsp;"prototype" implementation, that uses a new target instance for each invocation. (Much like single-call .NET remoting semanics).</P>
Reusable aspects
Caching asepct
Exception handling aspect
Logging aspect