Download - Prorgamowanie aspektowe
SZKOLENIE: SZKOLENIE: Programowanie Programowanie
aspektoweaspektowe
Mac MichałMac Michał
Programujący architekt, konsultantProgramujący architekt, konsultant
AgendaAgenda
ProblemyPośrednie rozwiązania
PostsharpCastle WindsorCqRS?
O mnieO mnie
Konsultant, programujący architekt, trener ITPublikuje w magazynie Programista.Net Early Adopters
.Net Advisory BoardWindows 8
Postsharp MVPPrelegentNależy do SSEPPMCITP Database Developer, Database AdministratorMCPD Windows DeveloperTwórca biblioteki BFsharp
bfsharp.codeplex.com blog.macmichal.pl
Mac Michałmacmichal.pl
Wyobraźmy sobieWyobraźmy sobie
Budujemy systemOn rośnie…Kod wygląda podobnie…Zaczynamy używać Ctrl + VZaczynamy się zastanawiać
DemoDemo
Budowa aplikacjiBudowa aplikacji
Możliwości funkcjonalneLine of businessModel domenyLogika biznesowa
Budowa aplikacjiBudowa aplikacji
Możliwości niefunkcjonalneLogowanie\MonitoringCachowanieTransakcje\KonkurencyjnośćBezpieczeństwoWalidacjaPersystencjaDatabinding
Możliwości niefunkcjonalneMożliwości niefunkcjonalne
Cross cutting concerns, plumbingPomyśl o swojej ostatniej aplikacji.Czy miała ona system logowania?Czy logowanie było skomplikowane?Czy kod był problematyczny?
PostsharpPostsharp
PostsharpPostsharp
Compile-time MSIL injectionProsty do użycia – poprzez atrybutyPrzechwytuje wszystkie metody – nawet virtual
Dużo Join point’ów: dostęp do pola, wyjatekWiększa kontrola: break, change param, return
Większa transparentność: brak new proxy()
Proces wstrzykiwania aspektówProces wstrzykiwania aspektów
1. Visual Studio kompiluje kod2. PostSharp czyta skompilowane assembly3. Postsharp znajduje atrybuty 4. Postsharp wstrzykuje definicję aspektów
do MSIL’a5. Postsharp zapisuje rozszerzone assembly
DEMODEMOJak wygląda wkompilowany aspekt?Jak wygląda wkompilowany aspekt?
DEMODEMOINotifyPropertyChangedINotifyPropertyChanged
DEMODEMOCacheCache
ProblemProblem
W kilku miejscach chcemy mierzyć wydajność systemu.
DEMODEMOCastle WindsorCastle Windsor
ProblemProblem
Otwierać sesje NHibernate i zarządzać transakcją dla każdego wywołania WebServicu
DEMODEMOCqRSCqRS
LinkiLinki
http://bfsharp.codeplex.comhttp://cqrssample.codeplex.com/http://dsl.codeplex.com/http://blog.macmichal.pl
PytaniaPytania
KontaktKontakt
Michał Macwww.macmichal.pl [email protected] 513 95 93 79
Dziękuję za uwagęDziękuję za uwagę