-
Notifications
You must be signed in to change notification settings - Fork 0
Implementacja Katalogu
DSM-catalogue jest modułem projektu DSM, którego zadaniem jest przeglądanie i prechowywanie dostępnych monitorowanych zasobów i metryk. Katalog napisany został w Javie z użyciem Spring Framework. W implementacji została wykorzystana technologia spring-boot, dzięki której konfiguracja serwera została znacząco uproszczona. Wspólne elementy Katalogu i Monitora znajdują się w DSM-common.jar. Zależności między modułowe są obsługiwane za pomocą technologi Maven
Wszystkie klasy i pakiety znajdują się w pakiecie pl.edu.agh.dsm.catalog
Główną klasą programu jest CatalogueConfig. Moduł umożliwia rejestrowanie zasobów i pomiarów przez monitor oraz przeglądanie ich przez zewnętrzne GUI. Do komunikacji wykorzystywany jest REST API
W module mamy możliwość ustawienia portu na którym będzie uruchamiana aplikacja (domyślnie 8081) Konfiguracja
Struktura projektu opiera się na ideach MVC i DDD (pomysł zaczerpnięty z prezentacji Crafted Design).
Główne założenia:
- Podział na core i mechanizmy dostępu (np. web, rest, udp, itp)
Struktura Core'a:
- package
core.model- zawiera wyraźnie umiejscowione obiekty domenowe- wiadomo co stanowi sedno aplikacji
- tu umiejscowione są wszystkie encje domenowe i klasy pomocnicze z nimi związane
- funkcjonalności umiejscowione są w serwisach domenowych
- zawiera interfejsy do komunikacji z zewnętrznymi obiektami (np. bazy danych, web serwisy)
- package
core.usecase- przejrzysty interfejs aplikacji- wiadomo co aplikacja robi
- stanowi fasadę aplikacji dla użytkowników
- usecase'y wywołują odpowiednie serwisy domenowe, definiują flow operacji, a nie jej implementację
- jest odzwierciedleniem wymagań funkcjonalnych użytkownika
- package
core.infrastructure- osobne miejsce na infrastrukturę aplikacji- integracja z technologiami i usługami
- funkcjonalności i obiekty, które bezpośrednio nie stanowią domeny aplikacji
Struktura Web
- package
web.controller- obsługa żądań - wywołanie usecase'ów - package
web.view- obiekty definiujące widok, walidatory - package
web.infrastructure- parsery, konwertery
W klasach MeasurementsController oraz SystemResourcesController zaimplementowano mapowania adresów URL zgodnych z API REST. Przy tworzeniu kontrolerów wykorzystano spring-mvc oraz spring-hal. Większa część konfiguracji opiera się na adnotacjach.