Aspect Oriented Programming w .NET

AOPCzęść NR.1

Programowanie aspektowe – to brzmi skomplikowanie, ale w rzeczywistości tak nie jest. Programowanie aspektowe - w skrócie AOP, pomaga spędzić mniej czasu na kopiowaniu i wklejaniu tego samego kodu.

Te powtarzające fragmenty kodu fachowo nazywają się “boilerplate”.

Redukując powtarzalność kodu możesz poświęcić więcej czasu na ważniejsze części projektu i dodać do niego, i do innych projektów wartość dodaną.

AOP w .NET może zostać uzyskane na wiele sposobów. Najpopularniejszymi sposobami są techniki związane z:

  • Castle Windsor i Intercepotrami
  • PostSharpem i Aspektach

#2 PostSharpCzęść NR.2

Czas na proste demo AOP przy użyciu PostSharp i IL Code Weaving.

W poprzednim wpisie omówiłem na czym polega AOP. Jeśli jeszcze wszystkiego nie rozumiesz, to spokojnie dopiero patrząc na konkretne przykłady, sprawa z AOP staje się jasna jak żarówka.

Projekt Demo zaczynamy od utworzenia nowego projektu w Visual Studio.  Demo będzie proste, dlatego wystarczy nam aplikacja konsolowa.

#3 CastleCzęść NR.3

W poprzednim wpisie pokazałem prosty przykład AOP z PostSharpem.

Teraz pokażę wam podobny prosty przykład AOP, ale z Interceptorami z Castle.Windosor.

Różnica tej techniki z PostSharpem jest duża.

Kontener wstrzykiwania zależności Castle będzie dodawał aspekty w trakcie wykonywania programu. PostSharp robił to poprzez dodatkowy proces kompilacyjny.

Warto też zaznaczyć, że ten przykład będzie się różnił od poprzedniego przykładu. Dlaczego?

Muszę wyjaśnić czym jest intercepcja metody

#4 InterceCzęść NR.4

W poprzednim wpisie omówiłem, czym jest intercepcja w programowaniu. Chociaż jak zajrzysz do Googli, to możesz zobaczyć, że słowo to często jest używane w footballu amerykańskim.

Poprzednim razem skorzystaliśmy z Castle.Windsor i DynamicProxy.

Teraz zrobię to samo tylko przy użyciu PostSharpa. Wpis będzie krótki, gdyż omówienie techniczne zostało zrobione wcześniej.

Aby użyć PostSharpa musimy stworzyć klasę aspektową.

ThreadingCzęść NR.5 Jak można wykorzystać programowanie aspektowe w pożyteczny sposób?

Interceptory mogą się przydać przy tworzeniu nowych wątków. Pisząc aplikację w WPF lub Windows Forms łatwo zauważyć tę sytuację. Podczas wykonywania jakiejś długiej czynności w kodzie możesz zauważyć, że cały wątek UI został zatrzymany. Oznacza to, że nie możesz ruszyć okna, nie możesz skrolować okna i nie możesz na nic klikać, bo cały wątek odpowiedzialny za to jest zajęty.

Wszystkie Kategorie