DSAW (both Dynamic and Static Aspect Weaving) provides the programmer a transparent static and dynamic weaving for the .Net platform. It is possible to mix dynamic and static aspects in the same application. It is also possible to change in any moment of the software development process if an aspect must be static or dynamic. The programmer manages the trade-off between performance and flexibility, following the separation of the weaving-time concern. DSAW is an extension of the Ready AOP system, including many different runtime performance optimizations.
ReadyAOP (Really Dynamic AOP) is a language and platform neutral system that offers a real separation of aspects at runtime. It is possible to add new aspects (and remove existing ones) to a running application, even if the aspects were developed later than the application. There is no static coupling between components and aspects.
The system was implemented over the standard .Net platform specification, obtaining full language independence. The weaving process is performed at the virtual machine level, without requiring applications source code. Its join-point set is similar to the one offered by AspectJ.
Both static and dynamic weaving is supported in a homogeneous way. Aspects could be injected in an application statically or at runtime without any modification.
Separation of the weaving-time concern. The homogeneity described in the previous point provides the translation between static and dynamic weaving without changing the source code of the application, neither the aspects.
Combination of dynamic and static adaptation. Not only it is possible to statically and dynamically aspectize applications, but it is also viable to combine both approaches in the same program.
Really dynamic aspect weaving. Applications need not to know anything of future aspects to be weaved. Moreover, aspects could be added to or removed from any running application.
Runtime performance. DSAW provides different performance optimizations that has made it run as fast as highly optimized aspect weavers.
Language neutrality. DSAW works at the intermediate language (IL) of the .Net platform. Components and aspects could be implemented in any programming language.
IL instrumentation. The weaving process is performed by means of IL instrumentation, once applications and aspects have been compiled. This feature is important when we need to adapt components developed by third parties and its source code is not provided.
Platform neutrality. The use of the .Net platform makes DSAW capable of being executed over any standard .Net implementation.
Wide join-point set. Our system offers an ample set of join-points, similar to the one offered by AspectJ. These join-points are provided for both dynamic and static weaving.
Aspect and components reutilization. The non-invasive weaving technique followed and IL-level instrumentation promotes aspect (and component) reutilization. This is an effect of the null coupling between aspects and components.
Aspects aspectation. Aspects could be considered as components in DSAW. This involves the aspect adaptation by other aspects.