Login | Register
My pages Projects Community openCollabNet

dotspect
Project home

If you were registered and logged in, you could join this project.

Message from the owner(s)

Team Members
Pavan Podila: Principal Author

DotSpect (aka .SPECT) is a Language-Independent, Compile-time, Aspect Oriented Programming tool. Quite a mouthful :-)
Following are some of the features:

  • An aspect language similar to AspectJ with some additional syntactic elements
  • A simple IDE for writing and testing aspects
  • Extensible Grammar for handling different types of Joinpoints
  • Extensible framework for adding new languages (Default languages: C#, VB.NET)
  • A command line tool for aspecting .NET assemblies. It provides similar functionality as the IDE except for invoking Reflector on the aspected assembly
Summary Post compilation Language-Independent AOP framework
Categories libraries, construction, deployment
License BSD License
Owner(s) timewinds

Overview

DotSpect (aka .SPECT) is a tool for aspecting .NET assemblies. The advice code can be written in any language as long as we have a compiler for that language and a mechanism to inject in the targeted assembly. By default, .SPECT provides support for writing aspects in C# and VB.NET. Currently the assemblies are aspected at Compile time (Static injection).

Motivation

The reason I started working on this project is because there was no good tool for AOP in the .NET community similar to AspectJ for Java. Most tools were either

  • XML based: Problem is XML is too verbose. Aspect definitions get lost in a sea of tags, which start looking like a porcupine. Advice code is hidden in some class, with a reference to the class-name in the XML. Not very intuitive.
  • No static injection facility. Most of the available implementations use dynamic proxies which instruments code at runtime

Implementation

The way I have been able to solve most of these problems is as follows:

  • Providing a new aspect oriented language similar to AspectJ
  • Language indepedence by allowing aspect code to be written in any language. The header section of the aspect definition specifies which language is being used
  • Extensible Grammar with support for custom handlers for various Reduction Rules in the Parser. This makes it easy to add new types of joinpoints to the grammar and also provide semantic support
  • Factory based language integration. This allows new languages to be introduced for writing aspects
  • Providing a static injection facility that aspects assemblies at compile time.
  • Developed using:

Status

Download
Source code - Solution files for VS2005

Binaries - Quick taste of DotSpect!
The version I am working on right now includes:
  • Support for call, execution joinpoints with before, after advice
  • Simple IDE for writing and testing aspects

  • Language support for C# and VB.NET
  • Command line tool for aspecting .NET assemblies