Robin Sedlaczek | CTO Fairmas GmbH | .NET User Group Berlin
RobinSedlaczek Robin.Sedlaczek@live.de RobinSedlaczek.com
Robin Sedlaczek
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
 Community Leader
 CTO der GmbH Berlin
 Blogger / .NET Code Geek
 Freier Autor & Sprecher
[ Entwickler.de, Heise, DotNetPro, Informatik aktuell ]
 Open Source-Entwickler
[ SharpGL, Roslyn, FxCopAnalyzers, Force Feedback Programming ]
.NET User Group Berlin-Brandenburg
Fragen?
Jederzeit, immer gerne & kostenlos – Und
wahrscheinlich nicht umsonst!
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
WINDOWS, DESKTOP & .NET
Im Jahr 2000:
Microsoft veröffentlicht das .NET Framework
für Windows
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
BEST DESKTOP APPLICATION EVER
Windows
Forms
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
BEST DESKTOP APPLICATION EVER
Windows
Presentation
Foundation
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
WINDOWS, DESKTOP & .NET
Was brachte das .NET Framework mit?
 Laufzeitumgebung
 Klassenbibliothek
 Applikationsmodell
 „.NET Vertical“
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
AM ANFANG WAR .NET
 …als Monolith
 …für die Entwicklung von Desktop und Server-
Anwendungen
 …für den Einsatz auf Desktop- und Server-
Maschinen
Das .NET Framework wurde konzipiert…
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
MICROSOFT & DAS INTERNET
Microsoft: „Das können wir doch auch…!“
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
MICROSOFT & DAS INTERNET
.NET und C#
im Web !
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
SILVERLIGHT
Was brachte Silverlight mit?
 Laufzeitumgebung
 Klassenbibliothek
 Applikationsmodell
„.NET Vertical“
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PROBLEM: INTEROPERABILITÄT
Wie können Assemblies zwischen
den Verticals geteilt werden?
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
DIE LÖSUNG (2010)
Wie machen wir Assemblies binärkompatibel?
 Portabilität von Low-Level-Assemblies:
Mscorlib
System
System.Core
System.ComponentModel.Composition
Microsoft.VisualBasic
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
DIE LÖSUNG (2010)
.NET-Projekt referenziert
Silverlight-Assembly
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
INNOVATIONEN
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
MICROSOFT BLEIBT HART DRAN
.NET und C#
auf
Windows
Phone !
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
WINDOWS PHONE
Was brachte
Windows Phone mit?
 Laufzeitumgebung
 Klassenbibliothek
 Applikationsmodell
„.NET Vertical“
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
VERTICALS, VERTICALS, VERTICALS
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PROBLEM: INTEROPERABILITÄT
Erneut die Frage:
Wie können Assemblies zwischen
den Verticals geteilt werden?
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
DIE LÖSUNG
Portable Class Libraries (PCLs)
 PCLs sind binärkompatibel
 Unterstützung durch Tooling
 Schnittmenge der Plattform-APIs
durch Contracts
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PORTABLE CLASS LIBRARY
 Auswahl der Framework-Version
 Auswahl des Betriebssystems
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PORTABLE CLASS LIBRARY
Ganz nebenbei:
Was ist eigentlich, wenn eine
neue Plattform hinzukommt?
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PORTABLE CLASS LIBRARY
Technische Probleme:
 API-Konvergenz
 App-local vs. Machine-wide Framework
Und noch ein ganz anderes…
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PROBLEME
Wachstum der
Amazon Cloud
2006-2013
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PROBLEME
Wachstum von
Docker
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
PROBLEME
Mit Windows,
monolithischem
.NET Framework
& MSSQL Server
in die Cloud…
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET CORE
.NET Core als Lösung…
 Leichtgewichtig
 Modular
 plattformunabhängig
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET CORE
.NET Framework
in Häppchen
&
NuGet als
Häppchenlieferant
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET CORE
Was bringt .NET Core mit?
 Laufzeitumgebung
 Klassenbibliothek
 Applikationsmodell
Doch wieder eine neue
„.NET Vertical“
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
WAR DAS SCHON ALLES?
Aber etwas muss noch in
Betracht gezogen werden…
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD
Base Class Library
Core Library
Mono Class Library
!=
!=
Die modernen Verticals...
.NET Standard Library
One Library
to serve
them all!
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD
Ziele von .NET Standard
 Vereinheitlichte Klassenbibliothek (alles, außer UI )
 API-Konvergenz
 Kompilieren gegen EINEN Standard
 (Binär)kompatibilität
 Wiederverwendbarkeit
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD
Was ist .NET Standard?
 API-Spezifikation
 Enthält die Definitionen von APIs, aber
keine Implementierungen
 Folgeversion enthält alle APIs der
vorherigen Version
 Analogie: .NET Standard ist ein Interface,
.NET Core, Mono, .NET Framework etc. sind
Implementierungen
 Library wird gegen das “Interface”
kompiliert, und kann dann auf allen
Plattformen verwendet werden, die das
Interface implementieren
 NuGet:
https://www.nuget.org/packages/NETStand
ard.Library/
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD PLATFORM SUPPORT
.NET Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0
.NET Core 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0
.NET Framework 4.5 4.5 4.5.1 4.6 4.6.1 4.6.1 4.6.1 4.6.1
Mono 4.6 4.6 4.6 4.6 4.6 4.6 4.6 5.4
Xamarin.iOS 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.14
Xamarin.Mac 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.8
Xamarin.Android 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0
Universal Windows Platform 10.0 10.0 10.0 10.0 10.0 10.0.16299 10.0.16299 10.0.16299
Windows 8.0 8.0 8.1
Windows Phone 8.1 8.1 8.1
Windows Phone Silverlight 8.0
 Spalten repräsentieren die .NET
Standard-Versionen. Header verlinken
zur Dokumentation der jeweils
hinzugefügten APIs.
 Zeilen zeigen an, welche Version von
einer gegebenen .NET-Plattform eine
gegebene .NET Standard-Version
erfüllt/implementiert.
 Fetter Text zeigt an, seit wann eine .NET-
Plattform eine gegebene .NET Standard-
Version erfüllt/implementiert.
Das Versionsmapping reflektiert den Stand zur Veröffentlichung von des .NET Standard 2.0 Toolings.
Quelle: https://github.com/dotnet/standard/blob/master/docs/versions.md
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
ENTSCHEIDUNGSHILFE
Ich benötige für meine Library viele verschiedene APIs:
 Wähle höhere .NET Standard-Version!
 Library kann auf weniger Plattformen eingesetzt/benutzt werden.
Ich möchte meine Library auf möglichst vielen Plattformen
benutzen:
 Wähle niedrigere .NET Standard-Version!
 Es stehen weniger APIs zur Verfügung.
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD VS. PCL PROFILES
 .NET Standard ist kompatibel mit PCLs
(.NET Standard Libraries können PCLs
referenzieren, und andersherum)
 Mapping zwischen PCL-Profile und .NET
Standard-Version in Tabelle abzulesen
 Beispiel: Zielt existierende PCL auf .NET
Framework 4.5.1 und Windows 8.1 ab,
dann verwendet die PCL das Profil 44 
Library kann dann zu .NET Standard 1.2
konvertiert werden
Das Versionsmapping reflektiert den Stand zur Veröffentlichung von des .NET Standard 2.0 Toolings.
Quelle: https://github.com/dotnet/standard/blob/master/docs/versions.md
PCL Profile .NET Standard PCL Platforms
7 1.1 .NET Framework 4.5, Windows 8
31 1.0 Windows 8.1, Windows Phone Silverlight 8.1
32 1.2 Windows 8.1, Windows Phone 8.1
44 1.2 .NET Framework 4.5.1, Windows 8.1
49 1.0 .NET Framework 4.5, Windows Phone Silverlight 8
78 1.0 .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8
84 1.0 Windows Phone 8.1, Windows Phone Silverlight 8.1
111 1.1 .NET Framework 4.5, Windows 8, Windows Phone 8.1
151 1.2 .NET Framework 4.5.1, Windows 8.1, Windows Phone 8.1
157 1.0
Windows 8.1, Windows Phone 8.1, Windows Phone Silverlight
8.1
259 1.0
.NET Framework 4.5, Windows 8, Windows Phone 8.1, Windows
Phone Silverlight 8
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD 2.0
Was bedeutet das für meine Komponenten?
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD 2.0
Alles für die Kompatibilität….
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET STANDARD 2.0
Großer
API-Sprung
mit .NET
Standard 2.0
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
HISTORIE
Microsoft .NET
2000
Gründung
Mono-
Projekt
2001
Mono 1.0
2004
Windows
Phone 7.5
Silverlight 5
Xamarin
(Gründung)
2011
2017
.NET Core 1.1.1
.NET
Framework 4.7
.NET Framework
2.0
2005
Xbox 360
.NET Framework
3.0
2006 Silverlight
2007
.NET Framework
3.5
Mono 2.0
C# 3, .NET 2.0 (3/3.5)
2008
2016
.NET Core 1.0
.NET Core 1.1
Windows 8.1
2013
Xbox One
2015
MSBuild wird
Open Source
Neues
C#, F#, VB.NET
Project-System
(Open Source)
.NET Framework
4.6
Windows 10
HoloLens
Windows
Phone 7
2010
.NET Framework
4.0
Silverlight 4
Windows 8
Windows RT
Windows Phone 8
2012
.NET Framework
4.5
„Roslyn“
.NET Standard
.NET Core 2.0
.NET Standard 2.0
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
.NET CORE
Wachstum der
Microsoft Cloud
RobinSedlaczek
RobinSedlaczek.com
Robin.Sedlaczek@live.de
„Jetzt seid Ihr dran...“
RobinSedlaczek Robin.Sedlaczek@live.de RobinSedlaczek.com

DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mittendrin

Hinweis der Redaktion