Wprowadzenie
W tej serii wpisów będę prowadził Cię krok po kroku przez proces tworzenia mojej aplikacji opartej na architekturze Client-Server w języku Java. W kolejnych wpisach będę stopniowo prezentował rozwój projektu, zgłębiając coraz bardziej zaawansowane koncepcje i technologie.
Client-Server
Architektura C/S (Client-Server) opiera się na podziale funkcji aplikacji między dwie części: Klienta i Serwer.
Klient jest odpowiedzialny za interakcję z użytkownikiem oraz prezentację danych, podczas gdy serwer zarządza danymi, logiką biznesową i udostępnia usługi klientom. Klient wysyła żądania do serwera, a serwer odpowiada na te żądania, przetwarzając je i zwracając konkrente odpowiedzi.
Wykonane prace
Pierwszym krokiem było przygotowanie prostego kodu części Client i Server, który umożliwi podstawową komunikację pomiędzy tymi częściami aplikacji. W moim przypadku, korzystam z języka Java oraz biblioteki log4j do logowania zdarzeń w aplikacji.
1. Stworzyłem klasy Client oraz Server operujące się na tzn. socketach + klasę dodatkową ResponseService
2. Klient nawiązuje połączenie z serwerem. Następnie wysyła proste żądania i odbiera odpowiedzi
3. Serwer obsługuje polecenia i zwraca odpowiedź w formacie JSON:
- ""uptime"" - zwraca czas życia serwera
- ""info"" - zwraca numer wersji serwera i datę jego utworzenia
- ""help"" - zwraca listę dostępnych komend z ich opisem
- ""stop"" - zatrzymuje jednocześnie serwer i klienta
3. Na ten moment z serwerem może pracować tylko JEDEN podłączony klient
Struktura kodu
Klasa Client:
- Odpowiada za łączenie się z serwerem oraz obsługę komunikacji z nim
Klasa Server:
- Odpowiada za nasłuchiwanie na połączenia oraz obsługę żądań klient
Klasa ResponseService:
- Udostępnia metody generujące odpowiedzi na żądania klienta.
Program w akcji
Link do repozytorium
Client-Server-Application
jakubBone • Updated Sep 2, 2024
Jakie dalsze plany?
1. Rozpiszę całe zadanie jako Issues na Githubie
2. Dodam zarządzanie użytkownikami
3. Dodam obsługę uprawnień:
- admin -> może wszystko
- user -> ma dostęp wyłącznie do swoich danych
4. Aplikacja będzie umożliwiać wysyłanie (i odczytywanie) wiadomości prywatnych (do 255 znaków) między użytkownikami, a skrzynka nieodczytanych wiadomości będzie przechowywać max 5 wiadomości. Po przepełnieniu klient ma uzyskać informację o jej przepełnieniu
5. Informacje (użytkownicy, hasła, wiadomości) - przechowam w formacie json w plikach na dysku
Śledź moją aktywność na LinkedIn
Zapisz się na mój newsletter
Jeśli masz jakieś sugestie lub pytania, proszę napisz do mnie wiadomość: kuba@javampokaze.pl