Version 1.0.1 11.11.2014 .NET vNext im...

40
Alive and kicking: .NET vNext im Überblick Version 1.0.1 11.11.2014

Transcript of Version 1.0.1 11.11.2014 .NET vNext im...

Page 1: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Alive and kicking:

.NET vNext im Überblick

Version 1.0.1

11.11.2014

Page 2: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 3: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 4: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Was ist in letzter Zeit passiert?

Page 5: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Es hat sich Einiges geändert…

Scott Hanselman

@TechEd US Mai 2014

Satya Nadella

@Microsoft Cloud Briefing Okt 2014

Page 6: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Microsoft Open Source

Quelle: Microsoft

Page 7: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 8: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET 2015

Page 9: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.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 ...

Page 10: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET heute

.NET Windows Desktop Windows Store Windows Phone Classic ASP.NET4.x

ASP.NET

5.0

Quelle: Microsoft

Page 11: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

XamarinMicrosoft

.NET 5.0 = Strategie “One .NET”

.NET

Quelle: Microsoft

Page 12: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET Core Framework 5.0& ASP.NET 5"Project K"

Page 13: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.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

Page 14: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.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.

Page 15: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 16: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

DEMO.NET Core Framework 5.0 &

ASP.NET 5.0 in Visual Studio 14 CTP 4

Page 17: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET Native"Project N"

Page 18: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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)

Page 19: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 20: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

DEMO.NET Native Tool Chain in Visual Studio 14 CTP 4

& Runtime Directives

Page 21: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET Native-Werkzeugkette

C++-Compiler-

Backend

Quelle: Microsoft

Page 22: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

C# 6.0 und Visual Basic 2015

Page 23: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Sprachfeatures: Stand 09.11.2014https://roslyn.codeplex.com/wikipage?title=Language Feature Status

Page 24: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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:

Page 25: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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.

Page 26: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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}."

Page 27: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET Compiler Platform"Roslyn"

Page 28: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.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

Page 29: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.NET Compiler Platform APIs (Microsoft.CodeAnalysis.*)

Quelle: https://roslyn.codeplex.com/wikipage?title=Overview

Page 30: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

DEMOQuellcodeanalyse und Codegenerierung mit Roslyn

Page 31: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Entity Framework 7

Page 32: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 33: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

DEMOEntity Framework 7

in Windows 8.1 App

mit SQLite

Page 34: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Weitere Neuigkeiten in .NET Framework 4.x

Page 35: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

.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

Page 36: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

API Portability Analyzer

• ApiPort.exe h:\AppDir -out:h:\apiport.xlsx

Page 37: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

Fazit

Page 38: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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

Page 39: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

© 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

Page 40: Version 1.0.1 11.11.2014 .NET vNext im Überblickdownload.microsoft.com/download/3/3/1/3314E256-7BD... · •.NET 2015 •.NET Core Framework •ASP.NET 5.0 •.NET Native •C# 6.0

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