Eric Bodden, Ph.D. Current conditions in Darmstadt: Cloud and Visibility OK, 11°C
11°C

Head of Secure Software Engineering Group at EC SPRIDE
Principal Investigator in Secure Services at CASED
  • rss
  • Home
  • Research
    • Publications
    • Presentations
    • Current research
      • Inter-procedural Data-flow Analysis of Software Product Lines
      • RefaFlex – Safer refactorings for reflective Java programs
      • Join Point Interfaces
      • Stateful Breakpoints
      • MOPBox
      • Closure Joinpoints for AspectJ
      • Proving Security Properties of Services
      • TamiFlex: a tool set for Taming Reflection
    • Past Research
      • Efficient Runtime Verification
      • Racer: Effective Race Detection Using AspectJ
      • Continuation-equivalent states (ICSE 2010)
      • Aspect-oriented programming and design
      • Visual specification languages
      • A denial-of-service attack on the Java bytecode verifier
      • Clara: Compile-time Approximation of Runtime Analyses
    • Hosting a Program Committee meeting with Skype
  • Tools
    • SPLlift – highly efficient product line analysis
    • Heros – Inter-Procedural Data-Flow Analysis
    • Behavior Compliance Control
    • Join Point Interfaces
    • TamiFlex: a tool set for Taming Reflection
    • Closure Joinpoints for AspectJ
    • Clara: Compile-time Approximation of Runtime Analyses
    • RacerAJ (for race detection)
    • An introduction to Soot 2.2.5
    • J-LO, a tool for runtime-checking temporal assertions
    • Aspect-oriented approaches targeting the .NET Framework
  • Teaching
    • Current lectures and thesis topics
    • Past lectures
      • Automated Software Engineering
      • Software-Engineering Project
      • COMP 520
      • COMP 621
  • About me
  • Photos

Aspect-oriented approaches targeting the .NET Framework

Introduction

This is an incomplete list of frameworks and tools supporting aspect-oriented programming under the .NET framework. It is separated by technology. The comments stated below are sometimes just copied form the author’s website, to those are not necessarily objective evaluations! If you find anything is missing or this site could be improved in any other way, please sent your comment to Eric Bodden.
You can find our related (German) article here: Torsten Weber und Eric Bodden – bit-Fabrik: Zweigstelle, Hauptstelle, Dienstleister: Aspektorientierte Programmierung mit .NET.


Proxy-based approaches

Aspect#

Project URL: http://aspectsharp.sourceforge.net/

Aspect# is an AOP (Aspect Oriented Programming) framework for the CLI (.Net and Mono). It relies on DynamicProxy and offers a built-in language to declare and configure aspects, and is compliant to AopAlliance. It became part of the Castle Project in June 2005. Main Features: – Custom mini configuration language, not xml. – Mix/Intercept classes and methods through dicnamic proxy approach. Restrictions: – Classes to be created dynamic proxy for shouldn’t be sealed and only virtual methods can be intercepted. – Using intercepted classes is not completely transaparent to users that users should explicit create the dynamically proxied class through the AspectEngine. – No static weaving support.

Encase AOP

Project URL: http://theagiledeveloper.com/articles/Encase.aspx

Encase is an aspect oriented programming framework for the .NET Platform written in C#. Encase is unique in that it provides aspects to be applied during runtime in managed code rather then being configuration file based that other AOP frameworks rely upon. The advantage of applying aspects in this way is that it promotes productivity to developers new and/or unfamiliar with AOP. Restrictions: – Encase cannot mixin multiple classes that implement a shared interface? For instance, if class A implements Ialphabet, and class B implements Ialphabet, classes A and B can not both be mixed in as an aspect. – Encase can only provide interception and aspect weaving to virtual (overriable) methods and properties. – Encase is unable to apply aspects to sealed (NotInheritable) classes.

Puzzle Framework

Project URL: http://www.puzzleframework.com/

No further information available at the moment.

The Orthogonal Weaving Model

Presentation URL: http://janus.cs.utwente.nl:8000/twiki/ pub/AOSDNET/WorkshopSlides/HuseinArmouti.ppt

The Orthogonal Weaving Model (OWM) is a dynamic framework by which .NET developers can implement aspects. OWM does not add any language extensions and as such does not require any special source code parsing or attribute programming. Core functionality and aspect are both native .NET classes; advice can be any method of any class in any assembly. Weaving rules are configured in an XML file or programmatically. Weaving is done dynamically upon calling the AspectWeaver.NewInstance() function on a type for the first time; System.CodeDom and System.Reflection namespaces are utilized to generate an in-memory assembly to host the woven class, which acts as interceptor. OWM provides state-dependent advice activation where advice methods are conditionally activated. Componentized aspects eliminate the need to redeploy or shutdown the system when a change is required; a file system watcher monitors the weaving rules file for changes.

XL-AOF

Paper URL: http://portal.acm.org/citation.cfm?id=1101562&dl=ACM&coll=portal

XL-AOF is an AOP approach targeted at distributed computing.

Spring.NET

Spring, the popular application framework now also features aspect-oriented programming, though proxies and a runtime weaving approach.

More information here


Weaving-based approaches

Aspect.NET

Presentation URL: http://research.microsoft.com/workshops/sscli2005/presentations/safonov.ppt

Download URL: http://www.msdnaa.net/curriculum?id=6595

based on phoenix; code annotated; language-agnostic; very good IDE integration

AspectDNG

Project URL: http://aspectdng.tigris.org/

- looks quite mature – allows even context exposure via JoinPoint object; “AspectDNG is a .NET aspect weaver, that’s to say a tool that can “transplant” code into an existing assembly. This transplant is made after the standard .NET compilation, which means that both aspect and the so called “base” code (the one the transplant will be operated on) can be developped in any programming language that is compatible with .NET CLS. Another way to say that: AspectDNG works on assemblies (EXE or DLL) that may have been created out of C#, VB.NET, Eiffel.NET, Mananged C++… Main Features: – Xml, Xpath based configuration file format. – IL level static Weaving. – Custom xml based disassembled language ILML which can be used to convert assemblies to and be modified/combined and then converted to assemblies. Restrictions: – Static weaving only.”

Compose*

Project URL: http://janus.cs.utwente.nl:8000/twiki/bin/view/Composer/WebHome

Compose* (or: ComposeStar) is a project that aims at enhancing the power of component- and object-based programming, so that software becomes easier to structure and modularize, hence easier to develop, maintain and extend. In particular, Compose* offers aspect-oriented programming (http://aosd.net) through the composition filters model (http://trese.cs.utwente.nl/composition_filters). The goals and concerns of this project are summarized as the ComposeStarMission. Currently (version 0.5), Compose* is an extension to Microsoft Visual Studio, enhancing classes written in C# and J# (i.e. Java) to ‘concerns’. A concern ‘wraps’ a .NET class and allows for adding composition filters, and expressing crosscutting among concerns (by superimposing filters on other classes). CompositionFiltersExplained contains more information.

Loom.NET

Project URL: http://www.dcl.hpi.uni-potsdam.de/research/loom/

The LOOM .NET project aims to investigate and promote the usage of AOP in the context of the Microsoft .NET framework. We have been developing two AOP tools (so called weavers) that all implement different approaches to weaving: A runtime weaver crating weaved objects on the fly and a static weaver. Main Features: – Support under .Net Framework 2.0 beta – Include both dynamic proxy based dynamic interception and il level rail like static weaving support.

AspectC#

Project URL: http://www.dsg.cs.tcd.ie/index.php?category_id=169

No further information available at the moment.

Setpoint

Project URL: http://lafhis.dc.uba.ar/

Claims to have “semantic pointcuts”.

Weave.NET

Project URL: http://www.dsg.cs.tcd.ie/index.php?category_id=194

No further information available at the moment

SourceWeave.NET

Project URL: https://www.cs.tcd.ie/publications/tech-reports/reports.04/TCD-CS-2004-35.pdf

No further information available at the moment

Wicca & Phx.Morph

Project URL: http://www.columbia.edu/~me133/

No further information available at the moment

PostSharp

Project URL: http://www.postsharp.org/

Postsharp is an aspect-oriented tool for .NET. The low-level code weaver allows to inject directly MSIL instructions at join points (it requires a serious understanding of MSIL). PostSharp Laos uses custom attributes to define and apply aspects (requires only a basic knowledge of System.Reflection.


Fully-fleged compilers

EOS

Project URL: http://www.cs.virginia.edu/~eos/

Article URL: http://www.codeproject.com/KB/architecture/aop2.aspx

feels very much like AspectJ; supports instance-based bindings (“per-object”); variations: EOS-U (“Classpacts”), EOS-T for testing

Delphi Prism/Cirrus (added Sep. 9th, 2010)

Project URL: http://www.embarcadero.com/products/delphi-prism

a .NET compiler with AOP built-in

Comments rss
Comments rss
Trackback
Trackback

8 Responses to “Aspect-oriented approaches targeting the .NET Framework”

  1. Log4PostSharp install - Adiel Sharabi says:
    May 7, 2009 at 2:42 am

    [...] ישנן כמה ספריות AOP לדוט נט. (ואני מניח שזו רשימה חלקית) ועוד רשימה [...]

    Reply
  2. Lijo says:
    August 9, 2009 at 6:34 pm

    I am a young software engineer interested in learning AOP. Could you please let me know which is the best (and free) tool for starting AOP with .NET?

    Reply
    • eric says:
      August 9, 2009 at 6:36 pm

      I am sorry, but that’s hard to tell. Firstly, I think it really depends on your particular problem at hand. Secondly, I have not looked at .NET systems during the last two years, and I guess they may have evolved a lot since then.

      Reply
  3. Lijo says:
    August 9, 2009 at 6:45 pm

    Thanks for the quick reply. I am working with .NET 2.0 (more than 2 year old). I am just learning. There is no specifc problem at hand.

    I expect some good advise from you, if you can find some time. Could you please suggest a tool that has some good reference implementation?

    Is there an article that gives difference b/w Weaving and Proxy? Which is good.

    I found, this article to be unique. It would be great if you can update this frequently with latest updates and references to sample implementation. Then it can grow as a sigle point of reference for AOP with .NET.

    Thanks
    Lijo

    Reply
  4. eric says:
    August 9, 2009 at 6:55 pm

    The most well advertised AOP framework for .NET that I am aware of is Postsharp. They also have a quite decent documentation, opposed to most other tools.

    I am not aware of any articles that make a proper comparison between weaving and proxies, apart from ours, which is in German.

    Reply
  5. Lijo says:
    August 9, 2009 at 7:04 pm

    Thanks. I will expreiment with that and get back to you with more questions :-)

    Reply
  6. Peter says:
    April 1, 2011 at 10:39 pm

    Hi, I think as well that Postsharp is a good tool. Just google for more information and for documentation. It is well worth it…:-)

    Reply
  7. AOP - Aspect Oriented Programming | Pearltrees says:
    March 14, 2012 at 2:49 pm

    [...] .NET Aspect-oriented Approaches (Eric Bodden, Ph.D.) Aspect# is an AOP (Aspect Oriented Programming) framework for the CLI (.Net and Mono). It relies on DynamicProxy and offers a built-in language to declare and configure aspects, and is compliant to AopAlliance. [...]

    Reply

Leave a Reply

Click here to cancel reply.

Welcome

Welcome to my website. Interested in my research? Click here for details or jump directly to my publications.

Upcoming Conferences

SC 2013

SOAP 2013

ESEC/FSE 2013

PPPJ 2013

RV 2013

Photos

Categories & Feeds

  • Research
    RSS
    (176)
  • Misc
    RSS
    (99)
  • Montreal
    RSS
    (44)

Collaborations

  • Don Batory, UTA
  • Eric Tanter, Universidad de Chile
  • Friedrich Steimann, Fernuni Hagen
  • Grigore Rosu, UIUC
  • Hans Vangheluwe, McGill University/Universiteit Antwerpen
  • Jacques Klein, SnT Luxembourg
  • Klaus Havelund, NASA JPL
  • Laurie Hendren, McGill University
  • Martin Monperrus, Univ. of Lille
  • Matthew Dwyer, University of Nebraska
  • Oege de Moor, University of Oxford
  • Ondrej Lhotak, University of Waterloo
  • Patrick Lam, University of Waterloo
  • Rahul Purandare
  • Sarfraz Khurshid, UTA
  • Shahar Maoz, RWTH Aachen
  • Tian Zhao, UW Milwaukee
  • Volker Stolz, University of Oslo

Research projects

  • AspectBench Compiler (abc)
  • Clara
  • J-LO
  • Soot
  • Stratified aspects
  • TamiFlex

Service

  • AOSD 2006
  • AOSD 2007
  • AOSD 2010
  • AOSD 2011
  • AOSD 2012
  • ATPS 2013
  • ATVA 2008
  • ECOOP 2008 Doctoral Symposium
  • ECOOP 2010
  • ESEC/FSE 2011 New Ideas Track
  • ESEC/FSE 2013
  • FOAL 2010
  • FOAL 2012
  • FOAL 2013
  • ICSE 2010
  • ICSE 2013 (New Ideas)
  • IEEE Transactions on Software Engineering (TSE)
  • International Journal of Image and Graphics
  • ISSTA 2011
  • NFM 2011
  • OOPSLA 2008
  • OOPSLA 2010
  • OOPSLA 2012
  • PEPM 2008
  • PLDI 2006
  • PLDI 2008
  • RAM-SE 2011
  • RV 2007
  • RV 2009
  • RV 2010
  • RV 2011
  • SAC 2012
  • SC 2011
  • SC 2013
  • SEFM 2005
  • SEFM 2008
  • Transactions on Software Engineering and Methodology (TOSEM)
  • VMIL 2008
  • VMIL 2009

Some other people I know

  • Adrian Colyer
  • Bruno Dufour
  • Dan North
  • Daniel Klink
  • Dave Thomas
  • Dean Wampler
  • Eric Tanter
  • Friedrich Steimann
  • Joachim Kneis
  • Klaus Havelund
  • Kristin Lovejoy
  • Liz Keogh
  • Malte Clasen
  • Markus Schorn
  • Pascal Costanza
  • Patricia Jablonski
  • Philip Mayer
  • Ron Bodkin
  • Sven Wittig
  • Wiebke Berg

Some people not to confuse me with

  • Eric B. the terrorist
  • Eric Bodden the basketball player
  • Eric Bodden the chef who sunk
  • Master Sgt. Eric Bodden

Previous Posts

May 2013
M T W T F S S
« Mar    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Tags

Alumni AOP AOSD AspectJ Atlanta Bike Blizzard Bug finding Caro Clara COMP 621 Eclipse FSE Google ISSTA Java LinkedIn Mac McGill Microsoft Montreal NASA Photos Programming Quebec City Race detection Racer Runtime Monitoring Runtime verification RV RWTH Seattle Slides Snow storm Soot Soot Tutorial Static Analysis Strike TamiFlex TA strike Thesis tracematches Typestate Vacation Winter carnival


rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox