Skip to content

Implementacja Katalogu

grabarczyk-t edited this page Jun 1, 2014 · 10 revisions

Wstęp

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

Szczegóły implementacyjne

Wszystkie klasy i pakiety znajdują się w pakiecie pl.edu.agh.dsm.catalog

Ogólny opis działania

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

Konfiguracja

W module mamy możliwość ustawienia portu na którym będzie uruchamiana aplikacja (domyślnie 8081) Konfiguracja

Struktura projektu

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

Implementacja kontrolerów REST

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.

Uruchomienie:

Uruchamianie Projektu: uruchamianie katalogu

Clone this wiki locally