Podział aplikacji napisanych na moduły

0

Witajcie,
Zastanawiam się nad najlepszym podziałem większej aplikacji na moduły mavenowe.
Lepiej dzielić ją po funkcjonalnościach (np. płatności, przesyłka itp) czy może lepiej po warstwach (np. web, core itp)?

5

Ja tam się nie znam, ale
wydzieliłabym moduł webowy, bo rozumiem, że będzie jakaś JEDNA aplikacja, do której użytkownik będzie się logował i tam klikał (no chyba że więcej?) i kilka modułów backendowych po obszarze, którego dotyczy (czyli te twoje przykładowe płatności, przesyłka), no i te obszary miały by wewnątrz jeszcze jakiś podział na moduł 1: z dao i moduł 2: z serwisami.
Aczkolwiek takie dzielenie po funkcjonalnościach to tylko przy większych aplikacjach.

1

Odpowiedź na pytanie jest tu (z linkami do kolejnych artykułów):
http://programmers.stackexchange.com/questions/258196/java-application-structure-horizontal-vs-vertical-split

Po polsku - w uproszczeniu: raczej dzielić domenowo.

0

Akurat ten podział który wymieniłeś nie ma za bardzo sensu. Tzn jedno nie wyklucza drugiego ;)
Podział logiki biznesowej lepiej zrobić domenowo, ale jednocześnie w projekcie i tak powstanie ci też zbiór klas związanych z logiką aplikacji a nie z logiką biznesową, czyli takie coś w stylu core / infrastructure / commons. Szczególnie jeśli masz tam np. jakieś webserwisy jeszcze czy coś w tym stylu, wtedy lepiej mieć te zalezności w jednym module a nie wrzucać ich do tych "domenowych".

Raz tylko popełniłem projekt gdzie wszystko było podzielone tylko domenowo (i w efekcie np. moduł odpowiedzialny za X miał oprócz klas domenowych także kontrolery i widok) ale to był bardzo szczególny przypadek, gdzie istniało wymaganie, że moduły są samowystarczalne i można każdy z nich deployować osobno, w efekcie takie rozwiązanie miało sens. Ale nie jestem pewien czy zwykle ma to sens. (no i tam i tak był moduł na commonsy)

0

Przykładowo - dzieli się też już ładnie Weba (nie trzeba mieć jednej aplikacji WEB... )

1

Można rozważyć taki podział na moduły, aby można było łatwo integracyjnie przetestować cały moduł: kierować się kryterium testowalności.

0

standard i klasyczna wersja mówi, że dzieli się na pakiety dao (albo repository), model(albo domain), service, business, controller itd..
Standard to standard - prawdopodobnie setki ludzi do tego dochodziło latami i po pewnym czasie wspólnie doszli do podobnych wniosków, że tak będzie najlepiej.
Potem będziesz chciał użyć sobie AOP do monitorowania wywołań jakiejś warstwy albo cuś i będzie płacz i zgrzytanie zębów. Oczywiście mowie o zwykłych aplikacjach dużych monolitycznych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1