Version 1.0.1 11.11.2014 .NET vNext im...

Post on 19-Jul-2020

18 views 0 download

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

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: buero@IT-Visions.de, 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