sapit - cnug talk 04/10-2011
TRANSCRIPT
Small And Powerful Integration Toolkit
CNUG, 2011-10-04
Mikkel Toudal Kristiansen, Avanade Denmark
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
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
Baggrund - Integrationsproblemer
Baggrund - Integrationsproblemer Eksterne ressourcer kræver ekstra opmærksomhed
Manglende diskplads eller netværkskapacitet, databaserettigheder, web services der er nede, etc.
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
...
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, ...)
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
SAPIT – Et plugin i dit projekt
Eksisterende afhængighed til IoC Framework
Reference til SAPIT og til IoC-specifik SAPIT assembly
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!
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
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
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
Med og uden SAPIT: RetryUden SAPIT: Med SAPIT:
Med og uden SAPIT: TimeoutUden SAPIT: Med SAPIT:
DEMO!
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
Spørgsmål?