- cross-cutting concerns - funkcjonalności używane w wielu miejscach w systemie, np. logowanie zdarzeń
- advice - kod wykonujący cross-cutting concern
- pointcut - miejsce występowania aspektów (np. wyjście metody abc)
- tangling - określenie opisujące wymieszanie kodu typu advice z logiką biznesową
- weaving (dzierganie) - proces wstrzykiwania kodu związanego z aspektem do logiki biznesowej
Przykładowe lokalizacje aspektów:
- przed wywołaniem metody
- po pomyślnym zakończeniu metody
- przy rzuceniu wyjątku
- zawsze po metodzie (wewnątrz bloku finally)
Najpopularniejsze narzędzia związane z AOP to Postsharp oraz Castle Dynamic Proxy. Postsharp działa na zasadzie postkompilacji modyfikując wytworzone przez Visual Studio assembly. Dodaje on instrukcje IL w wybranych przez nas miejscach. Jest zintegrowany z VS tak, że możemy przeprowadzać dzięki niemu np. walidację postkompilacyjną. Jeżeli assembly nie przejdzie takiej walidacji, to VS zwróci błąd kompilacji.
Instalujemy go NuGetem, przy czym za pełną wersję trzeba zapłacić.
Drugie narzędzie co Castle Dynamic Proxy. Wstrzykiwanie aspektów odbywa się tu runtime-owo i jest powiązane z kontenerami IoC. Odpytując kontener o dany interfejs dostajemy jego implementację opakowaną w kod przerywający wykonanie metody i dodający do niej kod aspektowy. Jest częścią większego frameworka Castle, w którym kontenerem IoC jest Castle Windsor.
Brak komentarzy:
Prześlij komentarz