• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Poprawna architektura aplikacji klient-serwer

Object Storage Arubacloud
0 głosów
399 wizyt
pytanie zadane 26 maja 2021 w Java przez everstudybee Użytkownik (610 p.)

Hejka,

Nadszedł czas pierwszego projektu na studiach w architekturze klient-serwer i poszukuję materiałów/porad o wzorcach projektowych w takim projekcie. Niewiele mieliśmy o architekturze na tę chwilę. Pomysł jest generalnie taki:

  1. Podział na dwa pakiety klient i serwer
  2. Projekt będzie lokalny więc będziemy korzystali z bazy MySQL z XAMPP
  3. I tu jest największy dylemat, jak podzielić klasy? Pomysł jest taki by były klasy odpowiedzialne tylko za okienka, klasy biznesowe odpowiedzialne za logikę i klasy komunikujące się z serwerem, a ten potem z bazą danych.
  4. Technologie jakie mamy narzucone to czysta JAVA + SWING.

Z chęcią przeanalizowałbym prosty projekcik (lub wytyczne/porady), który jest dobrze zrobiony pod względem architektury, zna ktoś może jakieś materiały na ten temat?

Projekt to aplikacja do obsługi schroniska dla zwierząt.

Pozdrawiam,

komentarz 26 maja 2021 przez tkz Nałogowiec (42,000 p.)
Z pierwszymi aplikacjami w czymkolwiek jest taki problem, że będziesz więcej o tym czytał niż pisał faktycznego kodu. Warto po prostu zacząć i w razie pomyłki wrócić do jakiegoś tam commitu.

Co do drugiego punktu, polecam dockera. Gdy coś się zwali, to po prostu usuniecie obraz. Zero ingerencji w XAMPA.

Trzeci punkt, to ma swoją nazwę, MVC. Jest okey, niedoskonałości wyjdą w praniu.

I ostatni punkt, polecam dodać jakąś implementacje JPA.

No i testy, niekoniecznie jednostkowe, ale integracyjne będą jak najbardziej na miejscu.
komentarz 26 maja 2021 przez everstudybee Użytkownik (610 p.)
Dziękuję za informację. Zacząłęm właśnie przeglądać w tym temacie polecaną książkę https://helion.pl/ksiazki/java-podstawy-wydanie-xi-cay-s-horstmann,javp11.htm#format/e mam nadzieję, że będą tam jakieś przykłady jak podzielić kod na pakiety i klasy we wzorcu MVC.
komentarz 26 maja 2021 przez tkz Nałogowiec (42,000 p.)
Nie wiem, czy jest sens czytania blisko 800 stron. Czasu masz stosunkowo mało by to napisać, bo domyślam się, że skoro studia, to do końca czerwca masz czas. Przeczytaj czym jest MVC i spróbuj to zaimplementować. Po przeczytaniu książki za dużo się nie zmieni, przynajmniej według mnie, bo to nadal sucha teoria.
komentarz 26 maja 2021 przez everstudybee Użytkownik (610 p.)
Dlatego przejrzałem i okazuje się, że MVC jest omówione tylko w aspekcie SWINGa jak jest np. konstruowany JButton itp. ale trafiłem na coś co brzmi identycznie do tego co chciałbym zaimplementować chodzi o architekturę-warstwową https://en.wikipedia.org/wiki/Multitier_architecture nie wiem tylko jeszcze jak to się łączy z MVC
komentarz 26 maja 2021 przez Wiciorny Ekspert (269,590 p.)

@tkz,MVC to nie jest Klient-Server,  klient server  może działać bez modelu pośredniczącego - > MODEL WIDOK :) np. to że często to idzie w parze i tak jest implementowane to akurat nie ma znaczenia. Akurat o wzorcach architektury i projektowych pisałem prace magisterska :) 

Np. serwlety w javie mogą opierać się całkowicie rezygnując z warstwy MODELU - a ten będzie zarządzany przez serwer, wtedy to nie dzielimy na MVC dlatego, że sam model " nie jest tutaj warstwą wyróżnioną" 
http://webcoursify.github.io/content/1-DjangoBasic/1-ClientServer.html

TO samo stosowanie GET/POST/PUT/DELETE i protokołu HTTP to nie jest REST API -  i to bardzo często mylone jest przez juniorów na rozmowie, gdzie mówią że stworzyli REST API i są rest, tak naprawde nie są .
Żeby mówić o REST api trzeba uwzględnić : bezstanowość STATLESS, cashing... itp, wtedy mowa o rest API :D to tak na uwadzę dla kolegi autora postu

komentarz 26 maja 2021 przez tkz Nałogowiec (42,000 p.)
Nie napisałem nigdzie, że MVC = klient-serwer. Napisałem za to, że punkt 3 pasuję do MVC. I w mojej ocenie jest prostą rzeczą na początek, bo mamy jasny podział. Oczywiście w trakcie pisania może się to rozmyć.
komentarz 27 maja 2021 przez everstudybee Użytkownik (610 p.)
No właśnie jest to pierwszy projekt, więc nie mogę tego zbytnio skomplikować. MVC znam ciut z Java Scriptu, więc jest mi to łatwiej ogarnąć. Znalazłem taki przykład https://www.codeproject.com/Articles/879896/Programming-in-Java-using-the-MVC-Architecture i wydaje się wystarczający na ten moment.
komentarz 27 maja 2021 przez everstudybee Użytkownik (610 p.)

Bardzo dziękuję za uwagi i za link. Na pewno zajrzę do niego i spróbuję przeanalizować. Jednak Django to Python, więc dochodzi jeszcze dodatkowy element analizy, bo jednak projekt muszę zrobić w JAVA. Ale się postaram smiley

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 11 czerwca 2022 w Java przez romilus Nowicjusz (120 p.)
0 głosów
1 odpowiedź 497 wizyt
0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 7 stycznia 2018 w Java przez Gemo Nowicjusz (120 p.)

92,540 zapytań

141,383 odpowiedzi

319,482 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...