fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

DevTalk#02 – O aspektach z Basią Fusińską


03.11.2014

BasiaGościem drugiego odcinka DevTalk jest Basia Fusińska – programistka, “architektka”, menadżerka, trenerka…

Rozmawiamy głównie o AOP – Aspect Oriented Programming – programowaniu aspektowym. Basia opowiada o swoich bojach na tym polu i przedstawia dostępne techniki oraz narzędzia przydatne dla adeptów tej sztuki. Udowadnia też, że i TY używasz aspektów!

Uwaga: dzięki uprzejmości producenta narzędzia PostSharp – do wygrania licencja na PostSharp Ultimate o wartości 749$! Szczegóły w odcinku i na stronie http://devtalk.pl/konkurs-na-logo/.

Uwaga 2: ten (i “hopefully” kolejne też) odcinek został nagrany na profesjonalnym sprzęcie (mikrofon + mixer) użyczonym przez Roberta, właściciela firmy Ultrico. Dzięki!

Uwaga 3: wszelkie uwagi – czy to do technikaliów, czy do merytoryki – bardzo mile widziane, zostawiajcie komentarze! :)


Montaż odcinka: Krzysztof Śmigiel.
Ważne adresy:

Linki do materiałów omawianych w odcinku:

PostSharp

Ultrico


Muzyka wykorzystana w intro:
“Misuse” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0
http://creativecommons.org/licenses/by/3.0/
0 0 votes
Article Rating
12 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Grzegorz Kotfis
Grzegorz Kotfis
10 years ago

Dobra realizacja, świetny temat i gość :) Jedyne czego mi zabrakło to po skończonej rozmowie z gościem takiego podsumowania odcinka z twojej strony, może jakiejś małej zapowiedzi co w następnym, takiego swoistego rozstania się ze słuchaczami. Zmieniłbym bym także jingla na ogłoszenia ;)

Pozdrawiam i do usłyszenia!

Rafał
Rafał
10 years ago

Profesjonalnie!

Nie wiem, czy to zasługa tych specjalistycznych mikrofonów i mikserów… Ale macie piękne głosy! :)

Piotr Perak
10 years ago

Ja również nie widzę za bardzo zastosowań dla PostSharp. Zwłaszcza jeżeli kosztuje tyle ile kosztuje :) Można by się zastanowić nad użyciem tego, ale za darmo. Rzeczy, które daje i są naprawdę użyteczne, można mieć za darmo z wykorzystaniem kontenera.

Nie zgodzę się też ze słowami Twojego gościa co do minusów wykorzystania kontenerów do implementacji aspektów. W PostSharp też nie dodaje się atrybutu do każdej z metod każdej z klas (to byłoby straszne), żeby np. dodać logowanie. Również robi się to globalnie, czyli również “nie widać tego” i można o tym zapomnieć.

Nie rozumiem również jak dekoratory łamią SRP?

Zboku
Zboku
10 years ago

Dorzucę swoich 50 centów.
Dużą krzywdę robi się AOP a bardziej AOSD (aspect-oriented software development) mówiąc że nie jest do umieszczania reguł/logiki biznesowych. Skupiliście się na konkretnym sposobie implementacji AOP (wstrzykiwanie, weaving itd konkretnych rozwiązaniach) a nie na samej idei AOSD.
AOP nie jest ograniczony tylko do infrastruktury, problemów technicznych a cross cutting concerns nie oznacza tylko technicznych aspektów jest to moim zdaniem zbyt dużym uogólnieniem. Czasem logowanie zdarzeń może być wymaganiem funkcjonalnym a same wymagania niefunkcjonalne mogą składać się z funkcjonalnych.
CCC mogą być również reguły biznesowe, przecinające wiele domen (core concern). Chyba wszyscy się zgodzimy że ‘Concerns’ jako ‘problem’ powinny być segregowane (separation of concerns) w celu osiągnięcia spójności/skupienia na jedną ‘czynność’ (high cohesion). I nie chodzi tutaj tylko o aspekty techniczne ale również i reguły biznesowe.
Myślę że postrzeganie AOP jako remedium tylko w przypadku ‘infrastruktury’ bierze się stąd że jest to łatwiej zobrazować szerszemu gronu (czasem mniej doświadczonym dev) oraz że zobrazowanie na wymaganiach biznesowych zawsze wymaga wprowadzenie konkretnego kontekstu i opisu domeny co nie jest takie proste.
Dodatkowo reguły biznesowe ulegają częstym zmianą i raz przyjęte rozwiązanie po zmianie wymagań może pociągnąć za sobą konieczność redesignu. Czyli początkowo możemy korzystać z AOP do implementacji jakiś reguł ale po rozbudowie wymagań sensowniejsze/prostsze może okazać się zrezygnowanie z AOP w celu uniknięcia skomplikowania (accidental complexity).
AOP jest najwyższą formą umożliwiającą osiągnięcia loose coupling i wymaga dużej wiedzy na temat modelowanego problemu jak i umiejętności pracy na wysokim poziomie abstrakcji. To IMO powoduje że tak rzadko opisuje się go w ujęciu implementacji reguł biznesowych. Można skorzystać z prostszych rozwiązań eventy, różne patterny (dekorator, mediator itp itd) czy też podejścia architektonicznego CQRS+ event sourcing. Prostsze rozwiązania w dużych systemach mogą się nie sprawdzać z racji że nadal pozostaje powiązanie pomiędzy modułami, problemami (oczywiście to również zależy od sposobu implementacji).

Co do micro-services to polecam http://blog.cleancoder.com/uncle-bob/2014/10/01/CleanMicroserviceArchitecture.html i powiązane artykuły.

Poza tym to fajnie że pojawił się devtalk.

Basia
10 years ago

Piotr,

Jasne, ze za pomoca PostSharp mozesz aspekty dodac globalnie. Ale… po pierwsze masz rowniez mozliwosc okreslenia za pomoca atrybutow konkretnych metod. A po drugie, gdy uzywasz kontenera (a przynajmniej Autofac z wtyczka Castle.Windsor, ktorego uzywam w swoim demo), dodaje on aspekt do _kazdej_ metody klasy do ktorej uzywam interceptora.

TeoVincent
10 years ago

To, jak testować, to co kod aspektu robi (Testing the advice) w przypadku tkania bibliotek za pomocą narzędzi takich jak Fody, można podejrzeć w projekcie https://github.com/Fody/BasicFodyAddin, w którym napisany jest przykład budowania paczki NuGet, ale przy okazji tam też jest napisany test jednostkowy. W skrócie, nowe, utkane assembly zasysane jest do testów jednostkowych. Tutaj nabazgrałem kilka własnych linijek bazując na tym projekcie: http://teo-vincent.blogspot.com/2014/11/unit-tests-advice-aspect-oriented.html.

Artur
Artur
10 years ago

1. Dobrze, że na końcu jest rochę Twojego zdania na temat AOP (już myslałem, że go nie wyrazisz)
2. Rozwiń myśl “WCF przeklęty”. Rozważam wpakowanie się w WCF w projekcie “na lata” i na razie nie wiem co mi grozi.

trackback

[…] pisał – można znaleźć na ten temat sporo informacji. Z lokalnego podwórka polecam DevTalk 02 czy tagi AOP lub PostSharp na […]

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również