Slides from my presentation about application architectures for .NET Core applications. It covers desktop application, web applications, mobile applications as well as container-based applications. It's a roundup of the Microsoft Architecture Guides.
1. Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
RobinSedlaczek
RobinSedlaczek.com
2. 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
8. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
KOLLABORATIONSPLATTFORM
Entwickelt eine plattformunabhängige und chat-basierte Kollaborationsplattform für Unternehmen.
Diese Plattform soll, in der täglichen Kommunikation zwischen Angestellten, das Medium E-Mail
mittelfristig ersetzen. Daraus ergeben sich folgende Anforderungen:
Benutzer kommunizieren entweder in Direktchats oder gemeinsam in Gruppen.
Textnachrichten sollen sofort und zeitnah ausgeliefert werden (Echtzeit).
Neben Chat-Nachrichten können auch Dokumente ausgetauscht werden. Dateiübertragungen erscheinen im entsprechenden Chat als
Nachricht und dienen so als Log.
Kommunikation soll zentral gespeichert und aufgehoben werden. Auch wenn z.B. ein Mitarbeiter das Unternehmen verlässt, soll seine
Kommunikationshistorie für einen bestimmten Zeitraum gespeichert werden.
Das gilt ebenfalls für ausgetauschte Dateien. Daher ist für ausreichend Speicherplatz zu sorgen.
Die Plattform soll soweit es geht auf allen System und überall verfügbar sein: im Web, als mobile App, als Desktopanwendung etc. Neue
Versionen müssen schnell verteilt werden können.
Benutzerverwaltung und Authentifizierung kann lokal geschehen. Aber auch Anbindung an ein Unternehmensnetzwerk (z.B. an Windows-
Domäne aka Active Directory) muss möglich sein.
Schnell expandierende Kunden, generell zunehmende Datenvolumina und globale Echtzeitkommunikation verlangen, dass:
das System entsprechend skalieren kann.
das Deployment neuer Versionen einfach und transparent für den Benutzer ist.
ad hoc skaliert werden kann.
1. Teilt euch selbstständig in Gruppen ein.
2. Besprecht gemeinsam die Anforderungen, technische
Umsetzung und den Architekturentwurf.
3. Legt realistische Ziele fest und verteilt die Arbeit in die Teams.
4. Legt los!
Integriert so oft wie möglich, auch teamübergreifend!
So viel
Text…
11. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.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
12. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET CORE 3
.NET Core + Desktop Packs komplett auf .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
18. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
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
19. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
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
21. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
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
23. RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
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