Alive and kicking:
.NET vNext im Überblick
Version 1.0.1
11.11.2014
Kurze Vorstellung
• Dr. Holger Schwichtenberg
• Wirtschaftsinformatiker, Microsoft Most Valuable Professional (MVP)
• Entwicklungsleiter @ 5Minds IT Solutions GmbH & Co KG
• Dozent & Berater @ www.IT-Visions.de
• Autor für heise.de, ix, Windows Developer, dotnetpro,Hanser, O’Reilly, Microsoft Press, Addison-Wesley, u.a.
• Blog & Twitter: www.DOTNET-DOKTOR.de
• Kontakt: [email protected], 0201 649590-0
• www.IT-Visions.de, Essen
• MVPs & Spezialisten für .NET, Visual Studio, TFS, SQL Server, SharePoint, BizTalk, Windows Server, Azure, System Center, Xamarin, JavaScript, PowerShell, Java, Oracle, Agile, Scrum u.a.
• Strategische und technische Beratung
• Schulungen (individuell/In-House und standardisiert/öffentlich)
• 5Minds IT-Solutions GmbH & Co KG, Oberhausen
• Softwareentwicklung
• Ausleihe von Softwareentwicklern
Agenda
• Was ist in letzter Zeit passiert?
• .NET 2015
• .NET Core Framework
• ASP.NET 5.0
• .NET Native
• C# 6.0 und Visual Basic 2015
• .NET Compiler Platform "Roslyn"
• Entity Framework 7.0
• Weitere Neuigkeiten in .NET Framework
• Fazit
Was ist in letzter Zeit passiert?
Es hat sich Einiges geändert…
Scott Hanselman
@TechEd US Mai 2014
Satya Nadella
@Microsoft Cloud Briefing Okt 2014
Microsoft Open Source
Quelle: Microsoft
Modularisierung von .NET
2002+ 2003:
.NET Framework
1.0/1.1
2303 Klassen
2005:
.NET Framework
2.0
6358 Klassen
2006:
.NET Framework
3.0
9588 Klassen
Zusatz Zusatz Zusatz Zusatz Zusatz Zusatz Zusatz Zusatz Zusatz
2007+ 2008:
3.5/3.5.1
10758
Klassen
Zusatz ZusatzZusatz
© Dr. Holger Schwichtenberg, www.IT-Visions.de, 2014
.NET Modularisierung – 2002 bis 2010
2010:
.NET Framework
4.0
12577 Klassen
Nuget Nuget Nuget Nuget Nuget Nuget
Nuget Nuget Nuget Nuget Nuget Nuget
2012:
4.5
13524
Klassen
2013:
4.5.1
Nuget Nuget
Nuget Nuget Nuget
2014:
4.5.2
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Zusatz Zusatz
© Dr. Holger Schwichtenberg, www.IT-Visions.de, 2014
.NET Modularisierung – 2010 bis 2014
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Seit 2013:.NET Framework
vNext
Nuget
Nuget Nuget Nuget Nuget Nuget Nuget
Nuget Nuget Nuget Nuget Nuget Nuget
Nuget Nuget
Nuget Nuget Nuget
Nuget
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
.NET Framework
vNext
Nuget
.NET Framework
vNext
Nuget
.NET Framework
vNext
Nuget
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Nuget
MS & .NET
Nuget Nuget
Nuget Nuget Zusatz Zusatz
Nuget Nuget
© Dr. Holger Schwichtenberg, www.IT-Visions.de, 2014
.NET Modularisierung – ab 2015
.NET 2015
.NET 2015 = .NET 4.x "vNext" +.NET 5.0
Grafik © Dr. Holger Schwichtenberg
klassisches, monolithisches .NET Framework 4.x
(Update zu .NET 4.5.2)
modulares.NET Core Framework 5.0
MonoFramework
WPF,Windows
Forms,WindowsServices,Console
ASP.NET Webforms, MVC 5, WebAPI 5
WebPages 3, SignalR 2
modulares ASP.NET 5.0
System.Web
Windows Store Apps
.NET Native CLR.NET CLR .NET Core CLR mit JIT
Mono CLR
System.Runtime
System.Collections System.Reflection
...
MVC + WebAPI 6
SignalR 3
WebPages 6
Hosting
Caching
Console ...
.NET heute
.NET Windows Desktop Windows Store Windows Phone Classic ASP.NET4.x
ASP.NET
5.0
Quelle: Microsoft
XamarinMicrosoft
.NET 5.0 = Strategie “One .NET”
.NET
Quelle: Microsoft
.NET Core Framework 5.0& ASP.NET 5"Project K"
.NET Core Framework - Modularität
• Parallelentwicklung zum .NET "Full Framework" 4.x
• Nur benötigte Features: ~11 MB statt ~200 MB
• Microsoft trifft "nutzungsdatenbasierte Auswahl" der Klassen
• 95% der CLR ist da, aber nur 10% der FCL
• Viele Erweiterungspakete (Nuget)
• Saubere Schichtentrennung - weniger Abhängigkeiten
• Vorteile:
• Schnellerer Anwendungstart
• Wenig RAM-Bedarf nur benötigte Komponenten
• Höhere Dichte von Anwendungen
• Weniger Angriffsfläche
.NET Core Framework – Weitere Konzepte
• Agiles Vorgehen
• Schnellere / kleinere Releases
• Updates einzelner Komponenten
• Source over Binaries
• Aber auch mehrmals im Jahr "Gesamtpakete" von Microsoft
• Nuget-Metapackages
• Komponenten im Zusammenspiel getestet
• Installation
• Nuget-Pakete als zentrales Konzept. Auch .NET Core Framework selbst.
• wird pro Anwendung installiert ohne Admin-Rechte'(XCopy-Deployment / "Side by side")
• Automatisches "ngen" (Name: CrossGen) oder .NET Native
• Cross-Platform: Windows, Linux, Mac, usw.
Weitere Neuheiten in ASP.NET 5.0
• Nun komplett Open Source
• MVC, WebAPI und WebPages werden zusammengefasst
• Dependency Injection überall
• Konfigurationsdateien: JSON. MSBuild-Einsatz aber noch möglich (.kproj-
Dateien)
• Austauschbarkeit von Projekten und Nuget-Paketen
• Kein Strong Naming mehr
• Ad-Hoc-Kompilieren im RAM dank .NET Compiler Platform "Roslyn"
• Einfaches Self-Hosting (oder im IIS)
• VS 2015 oder beliebige Editoren
• Commandline First
• Aber: Breaking Changes + Keine Webforms mehr in .NET 5.0
DEMO.NET Core Framework 5.0 &
ASP.NET 5.0 in Visual Studio 14 CTP 4
.NET Native"Project N"
to jit or not to jit
• Just-in-Timer-Kompilierung (JIT)• Ein Binärpaket für beliebige Prozessorarchitekturen
• Maschinencode für den Befehlssatz des jeweiligen Mikroprozessors
• Aber: Leistungsverlust
• Ahead-of-Time-Kompilierung (AOT)• Schnellerer native Code
• Ein Binärpaket pro Prozessorarchitektur
• .NET Native• Vorteile von beiden
• Entwickler arbeitet (fast) wie bisher (einige API-Unterschiede)
• Native Compiler in der Cloud vor Auslieferung
• "60% verringerte Startzeiten" im Vergleich zu ngen
• "25% verringerten Speicherbedarf" im Vergleich zu ngen
• Zunächst aber nur für Windows Apps (mit WinRT)
API-Unterschiede in .NET Native (Auswahl)
• Bisher nicht alle Klassen verfügbar (z.B. nur Teile von WCF)
• Arrays dürfen nicht mehr als drei Dimensionen besitzen
• XmlSerializer ignoriert IXmlSerializable
• Unterschiede bei Reflection• .NET Native Compiler nur noch benötigte Metadaten ein
• Entscheidung des Compilers oder
• Hinweise des Entwicklers mit Runtime Directives Configuration-Datei (default.rd.xml)
Richtlinien
Elemente
Aktionen
DEMO.NET Native Tool Chain in Visual Studio 14 CTP 4
& Runtime Directives
.NET Native-Werkzeugkette
C++-Compiler-
Backend
Quelle: Microsoft
C# 6.0 und Visual Basic 2015
Sprachfeatures: Stand 09.11.2014https://roslyn.codeplex.com/wikipage?title=Language Feature Status
Null-propagating operator (alias: Monadic null checking)
• Prüfung auf Null-Werte stark verkürzbar
• Operator ?. liefert null in den Fällen zurück, bei denen es
bisher eine NullReferenceException gab.
• Aus dem Zweizeiler
• wird somit der knappe Einzeiler:
Operator nameof in C# 6.0
• Liefert den Namen (ohne Namensraum!) als Zeichenkette
• Lokale Variablen, Parameter, Klassenmitglieder, Typparameter, Typen, Namensräume
• Sinnvoll für Dependency Property-Deklarationen, PropertyChangedEvents,
ArgumentNullException u.a.
String Interpolation in C# 6.0
• Alt
String.Format("Kunde #{0:0000}: {1} ist in der Liste seit
{2:d}.", k.ID, k.GanzerName, k.Datum);
• Neu
$"Kunde #{k.ID:0000}: {k.GanzerName} ist in der Liste
seit {k.Datum:d}."
.NET Compiler Platform"Roslyn"
.NET Compiler Platform "Roslyn"
• Vorher• Black-Box-Compiler (in C++)
• Werkzeuge nutzen CodeDOM und VS Code Model
• Nun• Compiler reimplementiert in .NET
• Offene Plattform mit vielen APIs
• Basis für eine bessere Developer Experience• IntelliSence, Refactoring, Code-Analyse, -Transformation, Diagnose, etc.
• Open Source• Eigene Erweiterungen möglich
• Beiträge zum offiziellen Compiler (später) möglich
.NET Compiler Platform APIs (Microsoft.CodeAnalysis.*)
Quelle: https://roslyn.codeplex.com/wikipage?title=Overview
DEMOQuellcodeanalyse und Codegenerierung mit Roslyn
Entity Framework 7
Entity Framework 7
• Fast komplette Neuimplementierung, leichtgewichtiger (weniger RAM, schneller)
• Läuft auch auf .NET Core Framework
• Windows Apps (auch Windows Phone)
• Auch nicht-Relationale Datenspeicher (NoSQL)
• Neue Treiber von Microsoft: Azure Table Storage, SQLite, In-Memory
• Neue Features: Batch Updates, Unique Contraints
• Aber:• Kein ObjectContext mehr, nur noch DbContext
• Kein EDMX mehr
• Nur noch Code-based Modeling (auch mit Reverse Eng. bestehender DB)
• Viele Features werden erst mit einer Version >7.0 wieder eingeführt (z.B. Lazy
Loading) 6.x wird noch eine Zeit parallel weiterentwickelt
• Github statt Codeplex: https://github.com/aspnet/EntityFramework
DEMOEntity Framework 7
in Windows 8.1 App
mit SQLite
Weitere Neuigkeiten in .NET Framework 4.x
.NET Framework 4.x
• Neuer 64-Bit-JITer "Ryujit": Bessere Leistung
• SIMD (Single Instruction, Multiple Data):
Parallelisierung innerhalb eines CPU-Kerns• Bibliothek "System.Numerics.Vectors"
• Ca. 150 kleinere API-Erweiterungen• Angleichungen an Erfordernisse des .NET Core Frameworks
API Portability Analyzer
• ApiPort.exe h:\AppDir -out:h:\apiport.xlsx
Fazit
Fazit
• .NET lebt und ist agiler denn je!
• Trends verschoben hin zu Flexibilität
und Plattformunabhängigkeit
• Modularität statt Monolith
• Das .NET 5.0 geht besser auf die Bedürfnisse der
verschiedenen Plattformen ein
• Open Source
• Aber auch: ein paar Breaking Changes &
etwas Umlernen
© 2014 Microsoft Corporation. All rights reserved. Because
Microsoft must respond to changing market conditions, it should
not be interpreted to be a commitment on the part of Microsoft,
and Microsoft cannot guarantee the accuracy of any information
provided after the date of this presentation. MICROSOFT MAKES
NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE
INFORMATION IN THIS PRESENTATION.
Vielen Dank
Links
• Visual Studio 14 CTPs
http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs.aspx
• ASP.NET vNext inkl. .NET Core Framework
https://github.com/aspnet/home
• .NET Native
http://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx
• .NET Compiler Platform "Roslyn" inkl. C# 6.0 und Visual Basic 2015
https://roslyn.codeplex.com/
• .NET Feature-Übersicht pro Version seit 1.0
http://microsoft.github.io/dotnet-features/
• API Portability Analyzer
http://www.microsoft.com/en-us/download/details.aspx?id=42678
• Neue .NET Samples Website
https://github.com/Microsoft/dotnetsamples
• RyuJIT
http://blogs.msdn.com/b/clrcodegeneration/archive/2014/10/31/ryujit-ctp5-getting-closer-to-
shipping-and-with-better-simd-support.aspx
Top Related