6. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Die Aufgabe
7. @RobinSedlaczek
RobinSedlaczek.com
PROPERTY MANAGEMENT SYSTEM (PMS)
Entwickelt ein plattformunabhängiges Property Management System
(PMS) mit folgenden fachlichen Anforderungen:
Verwaltung des Inventars eines oder mehrerer Hotels
Kapazität pro Zimmertyp
Nicht verfügbarer Zimmer (z.B. wegen Out-of-Order, Out-of-Service)
Belegte Zimmer (nur definitive Reservierungen)
Verfügbarkeit pro Zimmertyp (Kapazität – nicht verfügbare Zimmer)
Verwaltung von Gast-Profilen
Persönliche Infos
Verwaltung von Zimmerreservierungen
Gast & Hotel
Zeitraum der Reservierung
Anzahl der Zimmer pro Zimmertyp in Reservierung
Reservierung definitiv/tentativ (z.B. bereits bezahlt = definitiv)
Ein Gast kann mittels einer Mobile oder Web App Reservierungen vornehmen
Für gewünschten Zeitraum wird Verfügbarkeit geprüft und Reservierung ggf. abgelehnt
bei ausreichender Verfügbarkeit, Reservierung im System merken, Benutzer bekommt
Bestätigung
Technische Anforderungen:
Alle Bestandteile (Inventar, Profile, Reservierungen)
sind eigenständige und unabhängige Einheiten
Bei Ausfall einer Komponente, funktioniert
System weiterhin
Lose Kopplung aller Komponenten
Architektur/technischer Entwurf basiert auf
maximaler Kostenminimierung
Zusatz: Benutzerverwaltung und Authentifizierung
lokale Benutzerverwaltung und
Anbindung an ein Unternehmensnetzwerk
(z.B. AD, AAD)
8. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Neues in .NET Core
9. @RobinSedlaczek
RobinSedlaczek.com
NEUES IN .NET CORE
Stand heute (27.02.2019)
Aktuelle Preview: .NET Core 3.0.0 Preview 2
Aktuelle Version: .NET Core 2.2.2 (12.02.2019)
LTS: .NET Core 2.1.x with SDK 2.1.x
Maintenance: .NET Core 1.1 und .NET Core 1.0
10. @RobinSedlaczek
RobinSedlaczek.com
.NET Core 3
ASP.NET Core ab Version 3 nicht
mehr auf Full Framework lauffähig -
nur noch auf .NET Core
WPF, WinForms, EF6 und UWP-
Controls unterstützt in .NET Core
.NET Fx komplett eingebettet in
Anwendung (.exe) auslieferbar
.NET Core Side-by-Side UND WPF-,
WinForms-, UWP-Unterstützung
11. @RobinSedlaczek
RobinSedlaczek.com
.NET CORE 3
.NET Standard v2.1
ABER: Desktop Packs nur auf Windows!
Side-by-Side für Windows Desktop
Anwendungen möglich
Komfortable/problemlose Migration zu .NET
Core durch Tooling angestrebt
Umstellung auf neues Project File Format
Mit ML.NET hält AI/ML Einzug in .NET Core
12. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen
14. @RobinSedlaczek
RobinSedlaczek.com
ARCHITEKTUREN
.NET Application Architecture (Center)
https://www.microsoft.com/net/learn/architecture
Architekturen, Patterns & Guides/Guidelines
viele und vor allem „real-komplexe“
Beispiele
das meiste Material als eBooks verfügbar
alle Beispiele als Open Source auf GitHub
verfügbar https://github.com/dotnet-architecture
15. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Web Apps & Apis
16. @RobinSedlaczek
RobinSedlaczek.com
WEB APPS & WEB APIS
Clean/Onion-Architektur ist altbekannt: früher
hexagonale Architektur, später Ports & Adapter
Pattern genannt…
Applikationsmodell ist Zentrum der Anwendung
saubere Trennung von UI, BL und vor allem
Infrastrukturcode
Durch IoC bzw. DI ist Infrastrukturcode abhängig von
Anwendungskern
Austauschbarkeit & erleichtert Mocking/Testing
Clean Architecture (Onion-View)
https://github.com/dotnet-architecture/eShopOnWeb
17. @RobinSedlaczek
RobinSedlaczek.com
WEB APPS & WEB APIS
Ports & Adapter Pattern
Domain Layer
Definiert Entities (werden im DAL verwendet)
Definiert ViewModels (werden in API verwendet)
Definiert Interface für Datenzugriffslogik (implementiert in DAL)
Implementiert Supervisor (benutzt von API), konvertiert Models
Data Layer
Implementiert Repository Pattern
Repository implementiert
Interface aus Domain Layer
API Layer
Implementiert HTTP Services
Leitet Aufrufe an Domain Layer weiter
Leitet Antworten von Domain Layer als Response weiter
18. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Desktop Apps
19. @RobinSedlaczek
RobinSedlaczek.com
DESKTOP APPS
MVVM-Pattern trennt UI von BL
Trennung von Application (Login,
Navigation, Messages), Domain (Entities,
BL) und Data Services (Datenzugriff)
saubere Trennung von UI, BL und vor
allem Infrastrukturcode
Durch IoC bzw. DI ist Infrastrukturcode
abhängig von Anwendungskern
Austauschbarkeit & erleichtert
Mocking/Testing
https://github.com/Microsoft/InventorySample
20. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Mobile Apps & Microservices
21. @RobinSedlaczek
RobinSedlaczek.com
MOBILE APPS & MICROSERVICES
Business Logic A
Technologiestack XY
Business Logic B
Technologiestack YZ
Business Logic C
Technologiestack ZA
Business Logic D
Technologiestack YA
Business Logic A
Technologiestack XY
Business Logic B
Technologiestack YZ
Business Logic A
Technologiestack XY
Business Logic B
Technologiestack YZ
Business Logic A
Technologiestack XY
Business Logic B
Technologiestack YZ
Event Bus
31. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Zurück zur Aufgabe
32. @RobinSedlaczek
RobinSedlaczek.com
PROPERTY MANAGEMENT SYSTEM (PMS)
Entwickelt ein plattformunabhängiges Property Management System
(PMS) mit folgenden fachlichen Anforderungen:
Verwaltung des Inventars eines oder mehrerer Hotels
Kapazität pro Zimmertyp
Nicht verfügbarer Zimmer (z.B. wegen Out-of-Order, Out-of-Service)
Belegte Zimmer (nur definitive Reservierungen)
Verfügbarkeit pro Zimmertyp (Kapazität – nicht verfügbare Zimmer)
Verwaltung von Gast-Profilen
Persönliche Infos
Verwaltung von Zimmerreservierungen
Gast & Hotel
Zeitraum der Reservierung
Anzahl der Zimmer pro Zimmertyp in Reservierung
Reservierung definitiv/tentativ (z.B. bereits bezahlt = definitiv)
Ein Gast kann mittels einer Mobile oder Web App Reservierungen vornehmen
Für gewünschten Zeitraum wird Verfügbarkeit geprüft und Reservierung ggf. abgelehnt
bei ausreichender Verfügbarkeit, Reservierung im System merken, Benutzer bekommt
Bestätigung
Technische Anforderungen:
Alle Bestandteile (Inventar, Profile, Reservierungen)
sind eigenständige und unabhängige Einheiten
Bei Ausfall einer Komponente, funktioniert
System weiterhin
Lose Kopplung aller Komponenten
Architektur/technischer Entwurf basiert auf
maximaler Kostenminimierung
Zusatz: Benutzerverwaltung und Authentifizierung
lokale Benutzerverwaltung und
Anbindung an ein Unternehmensnetzwerk
(z.B. AD, AAD)
33. Lab: Architekturen für
.NET Core-Anwendungen
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com