prorgamowanie aspektowe

23

Upload: michal-mac

Post on 26-Jun-2015

115 views

Category:

Technology


0 download

DESCRIPTION

Presentation from 4develoeprs conference

TRANSCRIPT

Page 1: Prorgamowanie aspektowe
Page 2: Prorgamowanie aspektowe

SZKOLENIE: SZKOLENIE: Programowanie Programowanie

aspektoweaspektowe

Mac MichałMac Michał

Programujący architekt, konsultantProgramujący architekt, konsultant

Page 3: Prorgamowanie aspektowe

AgendaAgenda

ProblemyPośrednie rozwiązania

PostsharpCastle WindsorCqRS?

Page 4: Prorgamowanie aspektowe

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

Page 5: Prorgamowanie aspektowe

Wyobraźmy sobieWyobraźmy sobie

Budujemy systemOn rośnie…Kod wygląda podobnie…Zaczynamy używać Ctrl + VZaczynamy się zastanawiać

Page 6: Prorgamowanie aspektowe

DemoDemo

Page 7: Prorgamowanie aspektowe

Budowa aplikacjiBudowa aplikacji

Możliwości funkcjonalneLine of businessModel domenyLogika biznesowa

Page 8: Prorgamowanie aspektowe

Budowa aplikacjiBudowa aplikacji

Możliwości niefunkcjonalneLogowanie\MonitoringCachowanieTransakcje\KonkurencyjnośćBezpieczeństwoWalidacjaPersystencjaDatabinding

Page 9: Prorgamowanie aspektowe

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?

Page 10: Prorgamowanie aspektowe

PostsharpPostsharp

Page 11: Prorgamowanie aspektowe

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()

Page 12: Prorgamowanie aspektowe

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

Page 13: Prorgamowanie aspektowe

DEMODEMOJak wygląda wkompilowany aspekt?Jak wygląda wkompilowany aspekt?

Page 14: Prorgamowanie aspektowe

DEMODEMOINotifyPropertyChangedINotifyPropertyChanged

Page 15: Prorgamowanie aspektowe

DEMODEMOCacheCache

Page 16: Prorgamowanie aspektowe

ProblemProblem

W kilku miejscach chcemy mierzyć wydajność systemu.

Page 17: Prorgamowanie aspektowe

DEMODEMOCastle WindsorCastle Windsor

Page 18: Prorgamowanie aspektowe

ProblemProblem

Otwierać sesje NHibernate i zarządzać transakcją dla każdego wywołania WebServicu

Page 19: Prorgamowanie aspektowe

DEMODEMOCqRSCqRS

Page 20: Prorgamowanie aspektowe

LinkiLinki

http://bfsharp.codeplex.comhttp://cqrssample.codeplex.com/http://dsl.codeplex.com/http://blog.macmichal.pl

Page 21: Prorgamowanie aspektowe

PytaniaPytania

Page 22: Prorgamowanie aspektowe

KontaktKontakt

Michał Macwww.macmichal.pl [email protected] 513 95 93 79

Page 23: Prorgamowanie aspektowe

Dziękuję za uwagęDziękuję za uwagę