Aspect-Oriented Programming with Dependency Injection Mark Seemann - - PowerPoint PPT Presentation

aspect oriented programming with dependency injection
SMART_READER_LITE
LIVE PREVIEW

Aspect-Oriented Programming with Dependency Injection Mark Seemann - - PowerPoint PPT Presentation

Aspect-Oriented Programming with Dependency Injection Mark Seemann @ploeh Cross-Cutting Concerns Security Security Auditing Auditing Logging Logging Caching Caching Metering Metering Stability patterns Stability patterns Transactions


slide-1
SLIDE 1

Aspect-Oriented Programming with Dependency Injection

Mark Seemann @ploeh

slide-2
SLIDE 2

Cross-Cutting Concerns

Security Auditing Logging Caching Metering Stability patterns Transactions Security Auditing Logging Caching Metering Stability patterns Transactions

slide-3
SLIDE 3

Objective

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation

Principle

  • Dependency Inversion

Principle

SOLID

  • Don’t Repeat Yourself

DRY

slide-4
SLIDE 4

Staying SOLID

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation

Principle

  • Dependency Inversion

Principle

SOLID

  • Don’t Repeat Yourself

DRY

slide-5
SLIDE 5

Prerequisite

Program to an interface, not an implementation

  • Design

Patterns, 1995

slide-6
SLIDE 6

Conjecture

  • It’s always possible to apply a Decorator to an

interface

slide-7
SLIDE 7

Using Decorators to add aspects

IFoo ConcreteFoo Client

slide-8
SLIDE 8

Using Decorators to add aspects

IFoo AuditingFoo IFoo ConcreteFoo Client

slide-9
SLIDE 9

Using Decorators to add aspects

IFoo SecureFoo IFoo AuditingFoo IFoo ConcreteFoo Client

slide-10
SLIDE 10

DEMO

Staying SOLID with Decorators

slide-11
SLIDE 11

Staying SOLID

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation

Principle

  • Dependency Inversion

Principle

SOLID

  • Don’t Repeat Yourself

DRY

slide-12
SLIDE 12

Staying DRY

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation

Principle

  • Dependency Inversion

Principle

SOLID

  • Don’t Repeat Yourself

DRY

slide-13
SLIDE 13

Dynamic interception

From here

  • n, dynamic

interception is required Commonly supplied by a DI Container

slide-14
SLIDE 14

DI Containers with Interception

Castle Windsor Unity Spring.NET LinFu

slide-15
SLIDE 15

DEMO

Using a DI Container

slide-16
SLIDE 16

Interception

Xyz

slide-17
SLIDE 17

Interception

Xyz IFoo XyzFoo Xyz

slide-18
SLIDE 18

Interception

Xyz IFoo XyzFoo Xyz IBar XyzBar Xyz

slide-19
SLIDE 19

Interception

Xyz IFoo XyzFoo Xyz IBar XyzBar Xyz IBaz XyzBaz Xyz

slide-20
SLIDE 20

DEMO

Adding interceptors

slide-21
SLIDE 21

Pointcut

Xyz Abc Æøå IFoo ConcreteFoo IBar ConcreteBar IBaz ConcreteBaz

slide-22
SLIDE 22

Pointcut

Xyz Abc Æøå IFoo ConcreteFoo IBar ConcreteBar IBaz ConcreteBaz Match

slide-23
SLIDE 23

DEMO

Adding a pointcut

slide-24
SLIDE 24

Objective

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation

Principle

  • Dependency Inversion

Principle

SOLID

  • Don’t Repeat Yourself

DRY

slide-25
SLIDE 25

Staying SOLID only requires loose coupling Staying DRY requires dynamic interception

slide-26
SLIDE 26

MARK SEEMANN

http://blog.ploeh.dk/ @ploeh