Aspect oriented programming

Post on 17-Nov-2014

1794 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

AOP is a way of making code easier to write and work with by extracting cross cutting concerns into small easily reusable code that is applied with attribututes. This session looks at that and the various options available to us, from free items to commercial offerings like PostSharp.

Transcript

Aspect-oriented programming

robert macleanwww.sadev.co.za ∞ @rmaclean ∞

robert@sadev.co.za

Agenda

• What, when, why of AOP?• How is it implemented in PostSharp

and how does it work?• Alternatives to PostSharp• Looking to the future• Discussion

Every project has “boring” code

source: Microsoft Application Architecture Guide, 2nd Edition

AOP Details

• Goal to make cross cutting concerns easy to implement and focus on business code

• Xerox PARC in 2001• AspectJ• Many implementations now days• AKA: AOSD

Scenario code – simple prime calculator

Customer says it’s wrong. We need logging to diagnose…

Let’s add logging – trace input & output

5 extra lines of code

Easy to miss some places

Lots of repetition of code

Need to teach this

Not portable

What about some procedural help?

15 extra lines of code

Not junior friendly

Need 1 per signature

So how does aspects solve that?

1 extra line of code

Feel like you are missing something?

Demo time…

Under the hood

Source: .NET Reflector 6.8

IL modified

Many ways to implement AOP in .NET currently

• Popular: – IL Weaving @ compile or JIT– PostSharp & Mono.Cecil

• Less:– Hooking into .NET profiler API– Proxies

Hooking the profiler

CLR

Application

Profiler

Environmental

COM API

Disadvantages• Poor performance• Exceptionally

complex• Not designed for this

Advantages• Nothing is safe from

it’s power• Solves some fringe

cases (i.e. mocking static methods)

Proxies

Object

Method Call

Proxy

Method Call

Object

Normal Proxied

Disadvantages• Complex with ContextBoundObject• Perf is worse than IL weavingAdvantages• Using DI it can be easier• Perf is better than .NET profiler

Future: Post Roslyn Theory

• Roslyn– Next version of C#/VB “compiler”– Written in managed code– Available as a service

• Post Roslyn– Insert new language semantics – Approach the AspectJ style

Summary

• AOP–Way to untangle cross cutting concerns

out of business code– Great re-use– Can be easy to use (depending on

implementation)–Many options to do this!

Questions & Discussions

top related