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
Quelle: Microsoft Microsoft Open Source
Modularisierung von.net.net Modularisierung ab 2015 Dr. Holger Schwichtenberg, www.it-visions.de, 2014.NET Modularisierung 2010 bis 2014.NET Modularisierung 2002 bis 2010 Dr. Holger Schwichtenberg, www.it-visions.de, 2014 Dr. Holger Schwichtenberg, www.it-visions.de, 2014 Zusatz Nuget Zusatz Nuget Nuget Nuget Zusatz Nuget Zusatz Zusatz Nuget Nuget Nuget Zusatz Nuget Zusatz Nuget Zusatz Zusatz Nuget Zusatz Nuget Zusatz NugetZusatz 2002+ 2003:.NET Framework 1.0/ vnext 1.1 2303 Klassen Nuget Nuget Nuget Nuget Nuget Nuget.NET Framework Nuget 2010:.NET Framework vnext 4.0 Nuget 12577 Klassen.NET Framework 2005:.NET vnext Framework 2.0 Nuget 6358 Klassen Nuget Nuget Nuget Nuget Nuget Nuget Nuget.NET Framework.NET Framework vnext Nuget 2012: 4.5 13524 Klassen Nuget Nuget Seit Nuget 2013: MS &.NET 2006: MS &.NET 2013:.NET Framework Nuget Nuget 4.5.1 MS 3.0Nuget &.NET MS & 2014:.NET 4.5.2 9588 MS Klassen &.NET Nuget Nuget MS Nuget &.NET MS &.NET MS &.NET Nuget MS &.NET Nuget Nuget Nuget Nuget MS 2007+ &.NET 2008: Nuget 3.5/ 3.5.1 MS Nuget & 10758.NET MS & Klassen.NET Nuget MS Nuget &.NET MS &.NET Nuget MS &.NET Nuget Nuget Zusatz Zusatz Nuget Nuget Nuget Nuget Nuget Nuget Nuget Nuget Nuget Zusatz Zusatz
.NET 2015
.NET 2015 =.NET 4.x "vnext" +.NET 5.0 WPF, Windows Forms, Windows Services, Console ASP.NET Webforms, MVC 5, WebAPI 5 WebPages 3, SignalR 2 System.Web modulares ASP.NET 5.0 MVC + WebAPI 6 WebPages 6 SignalR 3 Caching Hosting Console... Windows Store Apps klassisches, monolithisches.net Framework 4.x (Update zu.net 4.5.2) Mono Framework modulares.net Core Framework 5.0 System.Collections System.Runtime System.Reflection....NET CLR Mono CLR.NET Core CLR mit JIT.NET Native CLR Grafik Dr. Holger Schwichtenberg
.NET heute.net Windows Desktop Windows Store Windows Phone Classic ASP.NET 4.x ASP.NET 5.0 Quelle: Microsoft
.NET 5.0 = Strategie One.NET Microsoft Xamarin.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.
Nun komplett Open Source Weitere Neuheiten in ASP.NET 5.0 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) Elemente Aktionen Richtlinien
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.2014 https://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"
Vorher.NET Compiler Platform "Roslyn" 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
DEMO Quellcodeanalyse 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
DEMO Entity 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
Vielen Dank 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.
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-toshipping-and-with-better-simd-support.aspx