Prorgamowanie aspektowe

Post on 26-Jun-2015

116 views 0 download

description

Presentation from 4develoeprs conference

Transcript of 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 kontakt@macmichal.pl 513 95 93 79

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