Working on...
- [aPetStore]
- Breakpoint
- Dynamic weaving overhead analysis
- Phoenix
- [SharpDevelop addin]
- Context-Access
|
|||||
|
|
|||||
Working on...
|
Architecture
What do you mean by Assembly?You may take a look at a basic definition of the term. Basically, it's a piece of .NET-compatible compiled code (e.g. the output of the C# compiler). Please note that the input to SetPoint is compiled code, in contrast to other engines that take source code as input. Why do I need Preprocessing?AOP in .NET can be done in several ways. We have chosen IL-code instrumentation. The .NET infrastructure does not bring any interesting hooks to achieve this on a class-loading or class-prejitting basis, so simple, post-build assembly processing has been chosen as the means to instrument code. Other approaches (e.g. AOP.NET) have decided to use the Profiling API to modify IL code before JIT compiling takes place. What do you mean by Preweaving?Weaving in AOP can basically done in three ways:
What do you mean by Semantication?Our model sees software as describable from several perspectives. One of the them is what we call the code perspective (i.e. basically when you see your application through the source code lens). Given that an assembly can easily be described using this perspective by doing simple reflection on its available metadata, we pre-compute the representation of this perspective (we use RDF XML-serialization for knowledge representation) and store it in the assembly as a resource. What's an Aspectualized assembly?Basically an assembly that has already undergone both preweaving and semantication. It means it's ready to be understood by the SetPoint runtime and aspects can easily be added to it. Must SetPoint.dll always be present?Yes, it must. We previously mentioned that we have chosen to do dynamic weaving (advice is added during runtime). Someone has to do that job, and that someone lives inside SetPoint.dll. What about the Configuration Assembly?It must be there too. Pointcut definitions, advices, aspects and ontologies must live somewhere. We have chosen assemblies as the way of storing this data, but we're considering the move to any other, more textual representation. Why so? SetPoint's architecture is ready for dynamically changing configuration on the fly, but assemblies cannot be unloaded. What goes inside it?A Configuration Assembly has to declare a class that implements the setpoint.IConfiguration interface. Basically, it will be defining ontologies (in XML-serialized RDF format), pointcuts, aspects and advices. Do I need to?No. As mentioned, you can perfectly write your configuration assembly code using C# or any other .NET compatible language, as long as you declare a class that implements the setpoint.IConfiguration interface. But we think that that's not comfortable enough, and that's why we created LENDL. What's LENDL?*L*ittle asp*E*ct & poi*N*tcut *D*efinition *L*anguage. It's basically a declarative domain-specific-language that lets you define ontologies, pointcuts, aspects and advices the easy way (or so we think What on earth are ontologies?You can take a look at this definition, but basically we're referring to a formal description of a concept. As mentioned before, we see software as describable from different perspectives. An ontology basically refers to achieving a formal representation of those perspectives. Just in case, you're already using ontologies! Class hierarchies and relational database diagramas are ontologies. We simply have chosen a different way of describing ontologies: OWL. Why didn't you use an image map to explain the diagram, just the way civilized people do?Because the website is automatically generated from our wiki and the Confluence engine behind it (even though it's amazing in every other respect) does not support image maps. |
||||
|
Copyright 2003-2006 - The Codehaus. All rights reserved unless otherwise noted.
Powered by Atlassian Confluence
|
|||||