Slide 1

Slide 1 text

@jkuemerle / www.kuemerle.com This Week On Code Hoarders: Declutter Your Codebase With Aspect Oriented Programming Joe Kuemerle www.kuemerle.com @jkuemerle

Slide 2

Slide 2 text

@jkuemerle / www.kuemerle.com Joe Kuemerle • Developer at BookingBuilder Technologies • Over 15 years of development experience with a broad range of technologies • Focused on application and data security, coding best practices and regulatory compliance • Presenter at community, regional and national events.

Slide 3

Slide 3 text

@jkuemerle / www.kuemerle.com

Slide 4

Slide 4 text

@jkuemerle / www.kuemerle.com

Slide 5

Slide 5 text

@jkuemerle / www.kuemerle.com

Slide 6

Slide 6 text

@jkuemerle / www.kuemerle.com

Slide 7

Slide 7 text

@jkuemerle / www.kuemerle.com

Slide 8

Slide 8 text

@jkuemerle / www.kuemerle.com

Slide 9

Slide 9 text

@jkuemerle / www.kuemerle.com

Slide 10

Slide 10 text

@jkuemerle / www.kuemerle.com

Slide 11

Slide 11 text

@jkuemerle / www.kuemerle.com

Slide 12

Slide 12 text

@jkuemerle / www.kuemerle.com

Slide 13

Slide 13 text

@jkuemerle / www.kuemerle.com AOP Terminology

Slide 14

Slide 14 text

@jkuemerle / www.kuemerle.com AOP Terminology • Cross-Cutting Concern: required but non core functionality • Advice: the implementation of specific functionality, contained in a module • Join Point: a location to execute an aspect • Pointcut: a set of join points that defines when and where to apply aspects • Aspect: when, where and what to apply in order to accomplish AOP. The combination of the pointcut and advice.

Slide 15

Slide 15 text

@jkuemerle / www.kuemerle.com What can you do with AOP?

Slide 16

Slide 16 text

@jkuemerle / www.kuemerle.com • Threading • Transactions • Undo • Compile Time Validation • Architecture Validation • Logging • Tracing • Security • Caching • Exception Handling • Functionality Injection o Dirty flags o INotifyPropertyChanged o Parameter validation What can you do with AOP?

Slide 17

Slide 17 text

@jkuemerle / www.kuemerle.com Tools http://code.google.com/p/linfu http://www.sharpcrafters.com http://sheepaspect.codeplex.com http://www1.cs.columbia.edu/~eaddy/wicca http://loom.codeplex.com http://www.simpleaspects.com

Slide 18

Slide 18 text

@jkuemerle / www.kuemerle.com https://bitbucket.org/jkuemerle/aop

Slide 19

Slide 19 text

@jkuemerle / www.kuemerle.com

Slide 20

Slide 20 text

@jkuemerle / www.kuemerle.com References • https://bitbucket.org/jkuemerle/aop • http://wpfpasswordgenerator.codeplex.com • http://crosscuttingconcerns.com • http://www.sharpcrafters.com/blog • http://ruskin- dantra.blogspot.com/2009/03/inotifypropertychang ed-made-easier.html • http://www.developerfusion.com/article/137636/ta king-the-single-responsibility-principle-seriously • http://www.ibm.com/developerworks/rational/libra ry/mar06/pollice/index.html

Slide 21

Slide 21 text

@jkuemerle / www.kuemerle.com Photo Credits • http://www.flickr.com/photos/andidigress/4471100232 • http://www.flickr.com/photos/earthworm/5002718047 • http://www.flickr.com/photos/profzucker/5845911299 • http://www.flickr.com/photos/29051800@N03/2713792371 • http://www.flickr.com/photos/7891209@N04/2951368555 • http://www.flickr.com/photos/f-oxymoron/5005673112 • http://www.flickr.com/photos/rscwm/6429923619

Slide 22

Slide 22 text

@jkuemerle / www.kuemerle.com http://speakerrate.com/jkuemerle