18
Small And Powerful Integration Toolkit CNUG, 2011-10-04 Mikkel Toudal Kristiansen, Avanade Denmark

SAPIT - CNUG talk 04/10-2011

Embed Size (px)

Citation preview

Page 1: SAPIT - CNUG talk 04/10-2011

Small And Powerful Integration Toolkit

CNUG, 2011-10-04

Mikkel Toudal Kristiansen, Avanade Denmark

Page 2: SAPIT - CNUG talk 04/10-2011

Agenda Kort om mig

Baggrund for SAPIT

Integrationsproblemer

Løsninger

Aspect Oriented Programming (AOP)

Overblik over SAPIT

Hvordan bruges SAPIT?

Med og uden SAPIT

Demo

Page 3: SAPIT - CNUG talk 04/10-2011

Kort om mig 36 år

Har læst matematik og datalogi på KU

Udvikler og konsulent siden 1996

Web (CGI/Java-applets -> ASP -> ASP.NET)

Navision, Sitecore, ...

Agile, Scrum, Kanban, TFS, ALM, ... -> Processer!

Siden nytår .NET Arkitekt hos Avanade

Global Microsoft partner

13.500+ ansatte i 28 lande

Page 4: SAPIT - CNUG talk 04/10-2011

Baggrund - Integrationsproblemer

Page 5: SAPIT - CNUG talk 04/10-2011

Baggrund - Integrationsproblemer Eksterne ressourcer kræver ekstra opmærksomhed

Manglende diskplads eller netværkskapacitet, databaserettigheder, web services der er nede, etc.

Page 6: SAPIT - CNUG talk 04/10-2011

Baggrund – Løsninger Michael Nygaard, Release IT!

Systematisk tilgang til håndtering af eksterne afhængigheder

Forvent at der opstår fejl

Patterns: Retry

Timeout

Caching

Circuit Breaker

Throttle

...

Page 7: SAPIT - CNUG talk 04/10-2011

Baggrund - AOP Aspect Oriented Programming (AOP)

Håndtering af tværgående funktionalitet

Typisk benyttet til logging, sikkerhed og caching

I .NET benyttes som regel attributter i kombination med et AOP framework (Spring.NET, Unity, StructureMap, ...)

Page 8: SAPIT - CNUG talk 04/10-2011

Overblik over SAPIT SAPIT – Small And Powerful Integration Toolkit

AOP-baseret implementation af patterns:

Retry

Cache

Timeout

Circuit Breaker

Response-time Throttle

Kræver method interception via:

Unity, Windsor eller PostSharp

Page 9: SAPIT - CNUG talk 04/10-2011

SAPIT – Et plugin i dit projekt

Eksisterende afhængighed til IoC Framework

Reference til SAPIT og til IoC-specifik SAPIT assembly

Page 10: SAPIT - CNUG talk 04/10-2011

Hvordan bruges SAPIT? Tilføj reference til Sapit.dll og Sapit.<noget>.dll

Benyt din allerede konfigurerede IoC container

Tilføj ”noget” til IoC konfigurationen

Tilføj SAPIT attributter til de metoder der har brug for støtte

SAPIT sørger for resten!

Page 11: SAPIT - CNUG talk 04/10-2011

Hvordan bruges SAPIT.Unity? Tilføj reference til Sapit.dll og Sapit.Unity.dll

Konfigurer Interception

Dekorer interface metoder med Sapit.Unity-attributter

Unity sørger for at intercept’e metodekald og benytte Sapit’s ICallHandler’e

Page 12: SAPIT - CNUG talk 04/10-2011

Hvordan bruges SAPIT.Windsor? Tilføj reference til Sapit.dll og Sapit.Windsor.dll

Konfigurer Interception

Dekorer interface metoder med Sapit.Windsor attributter

Windsor sørger for at benytte SAPIT’s IInterceptor’er

Page 13: SAPIT - CNUG talk 04/10-2011

Hvordan bruges SAPIT.PostSharp? Tilføj reference til Sapit.dll og Sapit.PostSharp.dll

Dekorer klasse metoder med Sapit.PostSharp attributter

PostSharp sørger for at inject’e IL-kode på kompileringstidspunktet, som kalder metoder i Sapit.PostSharp attribut klasserne

Page 14: SAPIT - CNUG talk 04/10-2011

Med og uden SAPIT: RetryUden SAPIT: Med SAPIT:

Page 15: SAPIT - CNUG talk 04/10-2011

Med og uden SAPIT: TimeoutUden SAPIT: Med SAPIT:

Page 16: SAPIT - CNUG talk 04/10-2011

DEMO!

Page 17: SAPIT - CNUG talk 04/10-2011

Begrænsninger for SAPIT IoC Framework understøttet/krævet?

Unity, Windsor eller PostSharp

StructureMap

Flere SAPIT attributter pr. metode?

Forvent problemer ...

Men læs dokumentationen for dit IoC Framework

Threadsafe?

Ikke endnu

Page 18: SAPIT - CNUG talk 04/10-2011

Spørgsmål?