These are the slides from my talk yesterday at CNUG. The slides are in Danish, and the topic was SAPIT (sapit.codeplex.com) and Aspect Oriented Programming (AOP) to solve issues when building software with external dependencies.
Comments are more than welcome :-)
1. SAPIT Small And Powerful Integration Toolkit CNUG, 2011-10-04 Mikkel Toudal Kristiansen, Avanade Denmark
2. 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
3. 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
5. Baggrund - Integrationsproblemer Eksterne ressourcer kræver ekstra opmærksomhed Manglende diskpladseller netværkskapacitet, databaserettigheder, web services der er nede, etc.
6. 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 ...
7. 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, ...)
8. 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
9. SAPIT – Et plugin i dit projekt Reference til SAPIT og til IoC-specifik SAPIT assembly Eksisterende afhængighed til IoC Framework
10. 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!
11. Hvordan bruges SAPIT.Unity? Tilføj reference til Sapit.dll og Sapit.Unity.dll Konfigurer Interception Dekorer interfacemetoder med Sapit.Unity-attributter Unity sørger for at intercept’e metodekald og benytte Sapit’s ICallHandler’e
12. Hvordan bruges SAPIT.Windsor? Tilføj reference til Sapit.dll og Sapit.Windsor.dll Konfigurer Interception Dekorer interfacemetoder med Sapit.Windsor attributter Windsor sørger for at benytte SAPIT’s IInterceptor’er
13. 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
14. Med og uden SAPIT: Retry Uden SAPIT: Med SAPIT:
15. Med og uden SAPIT: Timeout Uden SAPIT: Med SAPIT:
17. 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