SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Lab: Architekturen für
.NET Core-Anwendungen
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
@RobinSedlaczek
RobinSedlaczek.com
RobinSedlaczek
RobinSedlaczek.com
robin.sedlaczek@live.de
 Community-Leader
 CTO der GmbH Berlin
 Sprecher | Autor | Blogger
Entwickler.de, Heise, DotNetPro, Informatik aktuell, BASTA!, .NET Summit,
ParallelCon, ADC, GUI & DESIGN, DevSpace, Spartakiade...
 Open Source-Entwickler
SharpGL, Roslyn, FxCopAnalyzers, Force Feedback Programming
.NET User Group Berlin-Brandenburg
Ihr habt Fragen?
Ich beantworte sie jederzeit gerne. For free hugs. 😉
Robin Sedlaczek
@RobinSedlaczek
RobinSedlaczek.com
PROBLEME
Mit Windows,
monolithischem
.NET Framework
& MSSQL Server
in die Cloud…
Uh, was mach
ich eigentlich
hier???
@RobinSedlaczek
RobinSedlaczek.com
MOTIVATION
Auf grüner Wiese
Aller Anfang ist schwer…
Auf brauner Wiese
Migration einer Bestandssoftware…
Auf der Parkbank
Ist .NET Core überhaupt relevant für mich?
Raus aus der Komfortzone
Womit soll ich mich beschäftigen?
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Die Aufgabe
@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)
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Neues in .NET Core
@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
@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
@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
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen
@RobinSedlaczek
RobinSedlaczek.com
ARCHITEKTUREN
Anwendungstypen
 Web Applications & Web APIs
 Desktop Applications
 Mobile Apps
 Cloud Applications
 IoT
 Artificial Intelligence (AI)
@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
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Web Apps & Apis
@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
@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
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Desktop Apps
@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
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Architekturen für Mobile Apps & Microservices
@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
@RobinSedlaczek
RobinSedlaczek.com
PRINZIPIEN FÜR MICROSERVICES
https://samnewman.io/talks/principles-of-microservices/
 CI/CD
 Technologieunabhängig
 Asynchrone Kommunikation
 Container
 Technische Standards (HTTPS,
REST, GraphQL, WebSockets…)
 Monitoring (z.B. Application
Insights)
 Documentation (z.B. Swagger,
Swashbuckle)
 Resilency, Fault-Handling (z.B.
Polly.NET)
@RobinSedlaczek
RobinSedlaczek.com
MICROSERVICES & CONTAINER
https://github.com/dotnet-architecture/eShopOnContainers
@RobinSedlaczek
RobinSedlaczek.com
MICROSERVICES & CONTAINER
https://github.com/dotnet-architecture/eShopOnContainers
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Serverless
@RobinSedlaczek
RobinSedlaczek.com
SERVERLESS
https://www.stackery.io/blog/serverless-function-architecture-principles/
@RobinSedlaczek
RobinSedlaczek.com
PRINZIPIEN FÜR SERVERLESS
 Komplett verwaltet, Business Logic-Code only
 Sandboxed
 Kosten entstehen nur, wenn Code ausgeführt wird
 Trigger-basierte Ausführung (z.B. Webhook, Message Queue, Events…)
 Skaliert automatisch und on-Demand
Microsoft Serverless Computing: https://azure.microsoft.com/en-
us/overview/serverless-computing/
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Ressourcen
@RobinSedlaczek
RobinSedlaczek.com
RESSOURCEN
 Microsoft .NET Architecture Guides: https://dotnet.microsoft.com/learn/dotnet/architecture-guides
 Referenz-Implementierungen: https://github.com/dotnet-architecture
 Prinzipien für Microservices: https://samnewman.io/talks/principles-of-microservices/
 Swashbuckle: https://github.com/domaindrivendev/Swashbuckle
 Polly.NET: https://github.com/App-vNext/Polly
 Serverless: https://www.stackery.io/blog/serverless-function-architecture-principles/,
https://azure.microsoft.com/en-us/overview/serverless-computing/
eBooks
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com
Zurück zur Aufgabe
@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)
Lab: Architekturen für
.NET Core-Anwendungen
Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
@RobinSedlaczek
RobinSedlaczek.com

Weitere ähnliche Inhalte

Ähnlich wie Architekturen für .NET Core-Anwendungen

BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
OSMC 2012 | Monitoring bei der DB Systel by Ralf Döring
OSMC 2012 | Monitoring bei der DB Systel by Ralf DöringOSMC 2012 | Monitoring bei der DB Systel by Ralf Döring
OSMC 2012 | Monitoring bei der DB Systel by Ralf DöringNETWAYS
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Robin Sedlaczek
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreNETUserGroupBern
 
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...DNUG e.V.
 
DNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardDNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardRobin Sedlaczek
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
Thread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesThread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesRobin Sedlaczek
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?POINT. Consulting GmbH
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1DNUG e.V.
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1Manfred Steyer
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Digicomp Academy AG
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...QAware GmbH
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungEduard Hildebrandt
 

Ähnlich wie Architekturen für .NET Core-Anwendungen (20)

BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
OSMC 2012 | Monitoring bei der DB Systel by Ralf Döring
OSMC 2012 | Monitoring bei der DB Systel by Ralf DöringOSMC 2012 | Monitoring bei der DB Systel by Ralf Döring
OSMC 2012 | Monitoring bei der DB Systel by Ralf Döring
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
 
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
Slides (2) zu Teil 2 der Veranstaltungsreihe Anwendungsentwicklung mit Volt M...
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
 
DNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net StandardDNUGBB 2017 - .Net, .Net Core, .Net Standard
DNUGBB 2017 - .Net, .Net Core, .Net Standard
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
Thread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesThread-safe .NET durch Immutables
Thread-safe .NET durch Immutables
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio Extensions
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
 
Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1Entwicklung mit Volt MX und Co. | Teil 1
Entwicklung mit Volt MX und Co. | Teil 1
 
.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1.NET Summit 2016 in München: ASP.NET Core 1
.NET Summit 2016 in München: ASP.NET Core 1
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 

Mehr von Robin Sedlaczek

Developer Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetDeveloper Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetRobin Sedlaczek
 
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellMagdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellRobin Sedlaczek
 
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Robin Sedlaczek
 
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!Robin Sedlaczek
 
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkBASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkRobin Sedlaczek
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?Robin Sedlaczek
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET StandardRobin Sedlaczek
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionRobin Sedlaczek
 
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...Robin Sedlaczek
 
#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in ActionRobin Sedlaczek
 
#ADC 2016 - Conversational User Interfaces
#ADC 2016 - Conversational User Interfaces#ADC 2016 - Conversational User Interfaces
#ADC 2016 - Conversational User InterfacesRobin Sedlaczek
 
#ADC 2016 - Roslyn & Visual Studio Extensions
#ADC 2016 - Roslyn & Visual Studio Extensions#ADC 2016 - Roslyn & Visual Studio Extensions
#ADC 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
Dream-Team: Roslyn & Visual Studio Extensions
Dream-Team: Roslyn & Visual Studio ExtensionsDream-Team: Roslyn & Visual Studio Extensions
Dream-Team: Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?Robin Sedlaczek
 
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebautBASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebautRobin Sedlaczek
 
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler PlattformRobin Sedlaczek
 
Code Reviews - Best Practices
Code Reviews - Best PracticesCode Reviews - Best Practices
Code Reviews - Best PracticesRobin Sedlaczek
 

Mehr von Robin Sedlaczek (18)

Developer Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der RealitaetDeveloper Week 2019: Identity & Access Management in der Realitaet
Developer Week 2019: Identity & Access Management in der Realitaet
 
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellMagdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
Magdeburger Developer Days 2018 - Das perfekte Anwendungsmodell
 
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
Alleskönner: Azure Cosmos DB - Was kann der neue Datenbank-Service von Micros...
 
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!
 
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot FrameworkBASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
BASTA! 2017 Jubiläumskonferenz - CUIs & The Microsoft Bot Framework
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
 
ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?ADC Core 2017 - Warum warten auf die IDE?
ADC Core 2017 - Warum warten auf die IDE?
 
.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard.NET Summit 2017 - .NET, .NET Core, .NET Standard
.NET Summit 2017 - .NET, .NET Core, .NET Standard
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in Action
 
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...
#DNUG Berlin-Brandenburg - Conversational User Interfaces (CUIs) und das Micr...
 
#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action#ADC 2016 - C# Script in Action
#ADC 2016 - C# Script in Action
 
#ADC 2016 - Conversational User Interfaces
#ADC 2016 - Conversational User Interfaces#ADC 2016 - Conversational User Interfaces
#ADC 2016 - Conversational User Interfaces
 
#ADC 2016 - Roslyn & Visual Studio Extensions
#ADC 2016 - Roslyn & Visual Studio Extensions#ADC 2016 - Roslyn & Visual Studio Extensions
#ADC 2016 - Roslyn & Visual Studio Extensions
 
Dream-Team: Roslyn & Visual Studio Extensions
Dream-Team: Roslyn & Visual Studio ExtensionsDream-Team: Roslyn & Visual Studio Extensions
Dream-Team: Roslyn & Visual Studio Extensions
 
Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?Roslyn - Ein offener Compiler. Ja, und nun?
Roslyn - Ein offener Compiler. Ja, und nun?
 
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebautBASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut
BASTA! Spring: Roslyn - Refactorings, Analyzer und Code Fixes selbst gebaut
 
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
 
Code Reviews - Best Practices
Code Reviews - Best PracticesCode Reviews - Best Practices
Code Reviews - Best Practices
 

Architekturen für .NET Core-Anwendungen

  • 1. Lab: Architekturen für .NET Core-Anwendungen Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin @RobinSedlaczek RobinSedlaczek.com
  • 2. @RobinSedlaczek RobinSedlaczek.com RobinSedlaczek RobinSedlaczek.com robin.sedlaczek@live.de  Community-Leader  CTO der GmbH Berlin  Sprecher | Autor | Blogger Entwickler.de, Heise, DotNetPro, Informatik aktuell, BASTA!, .NET Summit, ParallelCon, ADC, GUI & DESIGN, DevSpace, Spartakiade...  Open Source-Entwickler SharpGL, Roslyn, FxCopAnalyzers, Force Feedback Programming .NET User Group Berlin-Brandenburg Ihr habt Fragen? Ich beantworte sie jederzeit gerne. For free hugs. 😉 Robin Sedlaczek
  • 4. Uh, was mach ich eigentlich hier???
  • 5. @RobinSedlaczek RobinSedlaczek.com MOTIVATION Auf grüner Wiese Aller Anfang ist schwer… Auf brauner Wiese Migration einer Bestandssoftware… Auf der Parkbank Ist .NET Core überhaupt relevant für mich? Raus aus der Komfortzone Womit soll ich mich beschäftigen?
  • 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
  • 13. @RobinSedlaczek RobinSedlaczek.com ARCHITEKTUREN Anwendungstypen  Web Applications & Web APIs  Desktop Applications  Mobile Apps  Cloud Applications  IoT  Artificial Intelligence (AI)
  • 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
  • 22. @RobinSedlaczek RobinSedlaczek.com PRINZIPIEN FÜR MICROSERVICES https://samnewman.io/talks/principles-of-microservices/  CI/CD  Technologieunabhängig  Asynchrone Kommunikation  Container  Technische Standards (HTTPS, REST, GraphQL, WebSockets…)  Monitoring (z.B. Application Insights)  Documentation (z.B. Swagger, Swashbuckle)  Resilency, Fault-Handling (z.B. Polly.NET)
  • 25. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin @RobinSedlaczek RobinSedlaczek.com Serverless
  • 27. @RobinSedlaczek RobinSedlaczek.com PRINZIPIEN FÜR SERVERLESS  Komplett verwaltet, Business Logic-Code only  Sandboxed  Kosten entstehen nur, wenn Code ausgeführt wird  Trigger-basierte Ausführung (z.B. Webhook, Message Queue, Events…)  Skaliert automatisch und on-Demand Microsoft Serverless Computing: https://azure.microsoft.com/en- us/overview/serverless-computing/
  • 28. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin @RobinSedlaczek RobinSedlaczek.com Ressourcen
  • 29. @RobinSedlaczek RobinSedlaczek.com RESSOURCEN  Microsoft .NET Architecture Guides: https://dotnet.microsoft.com/learn/dotnet/architecture-guides  Referenz-Implementierungen: https://github.com/dotnet-architecture  Prinzipien für Microservices: https://samnewman.io/talks/principles-of-microservices/  Swashbuckle: https://github.com/domaindrivendev/Swashbuckle  Polly.NET: https://github.com/App-vNext/Polly  Serverless: https://www.stackery.io/blog/serverless-function-architecture-principles/, https://azure.microsoft.com/en-us/overview/serverless-computing/ eBooks
  • 30.
  • 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

Hinweis der Redaktion

  1. 1
  2. 6
  3. 8
  4. 12
  5. 15
  6. 18
  7. 20
  8. 25
  9. 28
  10. 31
  11. 33