D Lab Exercise 4

Erstellt werden soll ein einfachs Reservierungssystem für Hotelzimmer. Die Stammdaten, also die verfügbaren Zimmer, können dabei statisch im System hinterlegt werden. Die Daten müssen dabei auch nicht dauerhaft persistiert werden, das Speichern des aktuellen Zustands für die Laufzeit des Programmes ist ausreichend.

Die Anwendung soll mithilfe des CQRS-Patterns umgesetzt werden, wichtige Eckpunkte der Anwendung:

Unterstützte Commands:

  • BookRoom (mit zumindest Zeitraum, Zimmernummer, Personendatem)
  • CancelBooking (mit Reservierungsnummer)

Unterstützte Queries:

  • GetBookings (Parameter: Zeitraum): Zeigt alle Buchungen im gewählten Zeitraum an
  • GetFreeRooms (Parameter: Zeitraum, Anzahl Personen): Zeigt die verfügbaren Zimmer für die angefragten Daten an

Die Commands sollen auf einem einfach Domänenmodell, bestehend aus zumindest Zimmern und Buchungen, validiert werden. Erfolgreich ausgeführte Commands führen zu Events, welche für das aufbauen der Read-Modelle benötigt werden.

Zwei verschiedene Read-Modelle für die zwei unterstützten Queries sollen aufgebaut werden. Die Daten müssen dabei nicht in eine relationalen Struktur abgebildet werden, sondern können “flach” als eine einzige Entität dargestellt werden. Die Struktur der Daten soll dabei so gewählt werden, dass die Abfragen möglichst unkompliziert durchgeführt werden können.

Für die Kommunikation im Programm wird ein einfacher Publish-Subscribe Mechanismus nötig sein. Auch hier muss kein spezieller Service-Bus verwendet werden. Eine einfache In-Memory Komponente, mithilfe derer Nachrichten veröffentlicht bzw. bestimmte Nachrichtentypen abonniert werden können, reicht aus.