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
9 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ł
9 years ago

Profesjonalnie!

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

Piotr Perak
9 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
9 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
9 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
9 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
9 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ż