wtorek, 15 lutego 2011
Subskrybuj:
Komentarze do posta (Atom)
About people in software development... but not only. My top professional interests are technical leadership and deep clean code practices.
"Don't do anything that isn't play." - Marshall Rosenberg
It is a great pleasure for me to share the information that today is my "Technical Leadership" book premiere. You can buy it fr...
Copyrights @ 2013, BrandMag Blogger Template - Designed By Templateism | MyBloggerLab
2 komentarze:
Dobra wizualizacja.
Zwrócił bym tylko uwagę, na to, że w *niemałym* projekcie warto rozróżnić warstwy od mvc.
MVC mieszka sobie w warstwie prezentacji jako wzorzec organizowania właśnie prezentacji. Kontroler nie powinien zawierać logiki aplikacyjnej a jedynie logikę związaną z jakąś konkretną technologią prezentacji (nawigacja, ew. specyficzne komunikaty dla konkretnej technologii widoku).
Natomiast w warstwach poniżej możemy sobie ułożyć kolejno:
- logikę aplikacji (serwisy opisujące kroki use case)
- logikę biznesową (model domeny)
- infrastrukturę (dostęp do danych, serwisy techniczne)
Dzięki temu można dowolnie zmieniać technologię prezentacji - np na nasze serwisy aplikacyjne nałożyć web serwisy, remoting, androida idp...
Jest to oczywiście mało prawdopodobne, ale przekonywujący powinien być fakt, że taką logikę aplikacji niezbrukaną konkretną technologią prezentacji (czego nie unikniemy w kontrolerach) można po prostu łatwiej testować.
Kolejna uwaga, to: M z mvc to nie musi być to samo co model domenowy w *niemałych* aplikacjach. Zwykle model domenowy to jedna rzecz, a to co chcemy wyświetlić w danym use case na ekranie to inksza inkszość. Do tego mając rich model (do czego doprowadzi refaktoring) dojdziemy do pewnej niezręczności: dostęp do metod biznesowych na widoku.
Taki model domenowy może być też obarczony np pośrednikami JPA. Przesłanie go do zdalnego klienta to porażka.
Zapomniałem dodać, że pisząc o modelu domeny w warstwie logiki biznesowej (nie aplikacyjnej) miałem na myśli w szczególności Rich Domain Model (np taki z DDD, złożony z 7 różnych klocków, nie tylko encji).
Nie chodzi bynajmniej o to aby odzierać model z logikę biznesowej i przenosić do do warstwy logiki aplikacyjnej.
Aczkolwiek istnieją inne podejście, gdzie mamy jedną warstwę logiki (serwisy) oraz anemiczny model encji.
Prześlij komentarz