In.NET 2015 ist vieles anders

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors In...
Author: Peter Klein
1 downloads 1 Views 3MB Size
© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

In .NET 2015 ist vieles anders Dr. Holger Schwichtenberg Softwarearchitekt, Berater, Trainer, Fachjournalist www.dotnet-doktor.de www.twitter.com/dotnetdoktor

Version 5.1 07.05.2015 #1

Vorstellung • • • •

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. www.IT-Visions.de, Essen – Strategische und technische Beratung – Schulungen (individuell/In-House und standardisiert/öffentlich) 5Minds IT-Solutions GmbH & Co KG, Gelsenkirchen – Softwareentwicklung Dr. Holger Schwichtenberg – Wirtschaftsinformatiker, MVP, MCSD – Entwicklungsleiter, Architektur, Beratung, Schulung – Autor für heise.de, iX, windows developer, dotnetpro, O'Reilly, Carl Hanser, Addison-Wesley, Microsoft Press u.a. – Gutachter Verfahren EU versus Microsoft – Blog: www.DOTNET-DOKTOR.de – Twitter: www.twitter.com/DOTNETDOKTOR – Kontakt: [email protected], 0201 7490-700

Kundenbeispiele

#3

Blatt 1

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Agenda • • • • • • • • •

Das ist in "letzter Zeit" passiert .NET 2015 .NET Core 5 C# 6.0 & Visual Basic 14 .NET Compiler Platform "Roslyn" WPF 4.6  eigener Vortrag ASP.NET 4.6 + 5.0  eigener Vortrag Entity Framework 7.0 Neuerungen in der der Klassenbibliothek

#19

Das ist in letzter Zeit passiert

#25

Blatt 2

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Aktienkurs • 31.12.2012: Steven Sinofsky verlässt Microsoft • 4.2.2014: Satya Nadella folgt auf Steve Ballmer: "Mobile first, Cloud first", Windows 10

#28

Es hat sich Einiges geändert… Scott Hanselman @TechEd US Mai 2014

Satya Nadella @Microsoft Cloud Briefing Okt 2014 #31

Blatt 3

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

VS Community Edition (VSCE) • • • • •

Community Edition Angekündigt und verfügbar seit 12.11.2014 Funktionen wie Professional, inkl. Add-Ins Gilt seit: VS 2013 Update 4 Kostenfrei für: Hochschulen, Studenten, Schulungen, Open Source-Entwickler und bis zu fünf Entwickler in Unternehmen bis zu 250 PCs / 250 Benutzern und einer Millionen Dollar Umsatz • korreliert mit den bisher schon gebotenen fünf freien Benutzern bei Visual Studio Online. • Express-Editionen laufen auch für VS 2015 weiter (anders als im Nov 2014 angekündigt) #36

Modularisierung von .NET

#38

Blatt 4

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Nutzung von Nuget.org

23.3.2015 25.11.2013

7.4.2014

#39

Modularisierung von .NET

#40

Blatt 5

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

.NET 2015

#44

.NET 2015 = .NET 4.6 +.NET 5.0 .NET 4.6 sollte ursprünglich 4.5.3 heißen; ist wieder ein In-Place-Update  überschreibt 4.0/4.5.x!

#46

Blatt 6

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Wo läuft .NET Framework 4.6? • Windows 10: vorinstalliert (offen, ob in allen Varianten, also auch IoT, Hololens) • Add-On: Windows Vista Service Pack 2, Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Server 2012 R2;

#47

Open Source bei .NET • Alles in .NET wird Stück für Stück Open Source mit MITLizenz • .NET Foundation übernimmt • .NET "Full" Framework 4.x – Mono u.a. dürfen sich dort "bedienen"  macht Mono bereits – Aber ohne Benutzerbeteiligung (wäre hier kaum möglich)

• .NET Core Framework 5.x – – – – –

Microsoft arbeitet auf Github Pull-Requests gestattet Microsoft übernimmt QS + Support Issues / Work Items einsehbar Design Meeting Notes

• Große Chance für Mono/Xamarin

#49

Blatt 7

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

.NET Core 5.0

#58

Das bringt .NET Core (1) • Plattformunabhängigkeit – Nicht an Windows gebunden – Auch Linux, Mac (iOS, Android über Xamarin) • Starke Modularisierung – Viele kleine Nuget-Pakete, auch die CLR und die FCL selbst – 95% der CLR. Es entfallen z.B. CAS und App Domains – aber nur zunächst 10% der FCL ("Nutzungsbasierte Auswahl) – ~11 MB statt ~200 MB – Schnellerer Anwendungstart – Wenig RAM-Bedarf  nur benötigte Komponenten laden – Höhere Dichte von Anwendungen – Weniger Angriffsfläche • Neue Aufgaben & Herausforderungen für Entwickler

#59

Blatt 8

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Modulbeispiele

https://www.myget.org/gallery/aspnetvnext

#60

Neue Bibliotheken • In .NET Core geht es nicht nur darum, bestehende Bibliothek in Assemblies zuzuschneiden, Microsoft erfindet auch einige Dinge neu, z.B. – – – – – –

Microsoft.Framework.Cache(Caching) Microsoft.Framework.ConfigurationModel Microsoft.Framework.DependencyInjection Microsoft.Framework.Logging Microsoft.Framework.WebEncoders Microsoft.AspNet.Session

#62

Blatt 9

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Das bringt .NET Core (2) • Installation – Framework wird pro Anwendung installiert ohne Admin-Rechte ("App Local" / XCopy-Deployment / "Side by side") – Automatisches "ngen" (Name: CrossGen) oder .NET Native • Saubere Schichtentrennung – weniger Abhängigkeiten – Leichtere Aktualisierung und Austauschbarkeit • Agilität – Kurze Veröffentlichungszyklen – Schnellere / kleinere Releases – Updates einzelner Komponenten – Source over Binaries • Aber auch mehrmals im Jahr "Gesamtpakete" von Microsoft – Nuget-Metapackages – Komponenten im Zusammenspiel getestet • ASP.NET 5: .NET Execution Environment (DNX)

#63

.NET "Full" versus .NET Core .NET "Full" 4.6

.NET Core 5.0

Setup.exe

XCopy oder setup.exe

Innovationen

●●●

●●●●

Agilität



●●●●

Stabilität

●●●●

● bis ●●●● (je nach Releaseform)

Speicherplatzbedarf



●●●●

Geschwindigkeit

●●

●●●● (Startzeit, .NET Native)

Funktionsumfang

●●●●

● (wird aber steigen)

Zukunftsperspektive

●● (Support für 4.6 bis min. ●●●● 2025. Es wird auch 4.x mit x>6 geben!)

Anwendungsarten Installation

Web, Desktop, Apps Console, Windows Services

Web, Win 10-Apps

#64

Blatt 10

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Veröffentlichungszyklen • .NET 4.x: Wie bisher, ca. 1x im Jahr ein Update • .NET Core 5.x:

– Sehr häufige Nuget.org-Releases einzelner Teile UND – Offizielle .NET Core Distribution: Snapshot der Pakete, zusammen getestet, Offline-Installation, auch in VS-Updates enthalten, x-mal im Jahr – Hotfixes für beides über Windows Update

Quelle: http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx

#65

Noch eine .NET-Variante

Quelle: http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx

#67

Blatt 11

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

.NET 2015 ausprobieren • RC ist – .NET Framework 4.6 – .NET Core 5 für Windows – ASP.NET 5 – Visual Studio 2015 – TFS 2015 • Beta 4 ist – Entity Framework 7 RTM  Sommer 2015

• Preview ist – NET Core 5 für Linux – NET Core 5 für Mac

• Quellcode: – https://github.com/aspnet /home • Nightly Builds: – https://www.myget.org/ga llery/aspnetvnext • Milestone-Releases: – https://www.nuget.org: • Visual Studio-Vorabversionen – 29.4.2015: Visual Studio 2015 RC • Lokal installierbar oder verfügbar als Azure VM Image (Windows Server) #86

Praxiswarnung: Nuget-Pakethölle • Sie können jederzeit von https://www.myget.org/gallery/aspnetvnext ein aktuelles Paket laden und damit arbeiten • Wenn Sie ein paar Tage später noch ein Paket brauchen, ist der Entwicklungsstand aber schon weiter • Wenn Sie dann ein weiteres Paket laden, werden in der Regel auch bisherige Pakete aktualisiert • Dann geht aber ihr Code meist nicht mehr – weil Microsoft immer noch ständig die APIs ändert – Weil Microsoft immer noch ständig den Zuschnitt der Assemblies ändert:

#87

Blatt 12

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Demo .NET Core Framework .NET Core-Konsolenanwendung in Visual Studio 2015 RC

#96

Sprachfeatures C# 6.0

#97

Blatt 13

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Initialisierung für automatische Eigenschaften



• Automatische Eigenschaften (engl. Automatic Property) – in C# seit Version 3.0 (2008) – Visual Basic seit Version 10.0 (2010). • Neu: Initialisierung schon bei Deklaration • public int Version { get; set; } = 1; • public byte Status { get; set; } = status.HasValue ? status.Value : 1; • Diese Initialisierer können aber – genau wie bei Feldern – nicht die Referenzierung this verwenden. • Getter-Only/Read-Only Automatic Properties, auch Setzen im Konstruktor: • public DateTime ErzeugtAm { get; } = DateTime.Now; #104

Null-propagating operator

Null-Conditional operator / 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:

#105

Blatt 14

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

String Interpolation



• Bisher: String.Format("Kunde #{0:0000}: {1} ist in der Liste seit {2:d}.", k.ID, k.GanzerName, k.ErzeugtAm); • Neu: $"Kunde #{k.ID:0000}: {k.GanzerName} ist in der Liste seit {k.ErzeugtAm:d}.";

Das geht bisher nicht: #106

Index-Initialisierung für Dictionaries



• Mit C# 3.0 hatte Microsoft Objekt- und Objektmengeninitialisierer eingeführt. • Nun kann der C#-Entwickler ein Objekt mit Indexer auch mit selektiven Werten initialisieren:

#107

Blatt 15

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors



Operator nameof

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

#108

Filter für Laufzeitfehler (Exception Filters)



• In Visual Basic war es bisher schon möglich, in einem beim Anfangen von Fehlern mit catch neben einem Fehlertyp auch noch einen Bedingungsausdruck anzugeben. • Dies kann C# jetzt auch: when seit VS 2015 CTP6, vorher: if

#109

Blatt 16

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Using für statische Klassenmitglieder



• Using: Bisher schon zwei Bedeutungen • Neu: Bei einem using-Befehl unter Angabe von static und einem Klassennamens einer statischen Klasse werden alle Mitglieder so eingebunden, dass ein Aufruf ohne Klassenname möglich ist. • Verkürzung der Schreibweise • kann aber auch als einen Rückfall in die Zeit des prozeduralen Programmierens angesehen werden kann! using static System.Console; using static System.Environment; ... // Zugriff möglich auf statische Attribute und Methoden ohne // Klassennamen wegen using WriteLine(UserDomainName + @"\" + UserName); ReadLine();

#110

Expression Bodied Members • Properties – public string GanzerName => Vorname + " " + Name; – public double Dist => Sqrt(X * X + Y * Y); • Methoden – public string GetStatus() => this.Name + (this.Status < 3 ? ": Guter Kunde" : ""); – public override string ToString() => this.Name + ": " + this.Status;

• Haltepunkte möglich:

#111

Blatt 17

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Await in Catch und Finally • Das in C# 5.0 eingeführte Schlüsselwort await durfte bisher nicht im catch- und finally-Block einer try-Anweisung enthalten sein. Dies ist in C# 6.0 erlaubt sein.

#112

War schon implementiert, aber dann doch noch entfallen für C# 6.0 • Primärkonstruktoren

• Deklaration innerhalb von Ausdrücken

#113

Blatt 18

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

VB 2015 • Wie in C#: – – – – –

Automatische Properties mit Zuweisung Read-Only automatic Properties ?. Nameof String Interpolation

– – – – –

Multiline String Literals Kommentare in LINQ-Ausdrücken und impliziten Zeilenfortsetzungen Prüfung XML-Kommentare Operator TypeOf x IsNot y Datumsliterale mit Jahr zuerst

• Andere Dinge

#118

Sprachfeatures: Stand 06.05.2015

https://github.com/dotnet/roslyn/wiki/Languages-features-in-C%23-6-and-VB-14

#129

Blatt 19

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

.NET Compiler Platform "Roslyn"

#132

.NET Compiler Platform "Roslyn" • Bisher:

– Black-Box-Compiler (in C++) – Werkzeuge nutzen CodeDOM und VS Code Model

• Neu:

– Compiler für C# und VB.NET reimplementiert in .NET (nicht der C++-Compiler!)

– Offene Plattform mit vielen APIs – Basis für eine bessere Developer Experience • IntelliSence, Refactoring, Code-Analyse, -Transformation, Diagnose, etc. – Codegeneratoren – .NET 4.6 und .NET Core 5.0 – Open Source • Eigene Erweiterungen möglich • Beiträge zum offiziellen Compiler (später) möglich

#133

Blatt 20

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

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

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

#134

DEMO

Quellcodeanalyse und Codegenerierung mit Roslyn

#135

Blatt 21

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Desktop-Anwendungen

#176

WPF-Zukunft • WPF lebt! • Microsoft hat eine Roadmap veröffentlicht am 12.11.2014 • Am meisten gelesener .NET-Blog-Eintrag aller Zeiten und > 300 Kommentare

http://blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx

#177

Blatt 22

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

WPF 4.6

• Keine neue Steuerelemente • Microsoft arbeitet an den Grundlagen, damit Steuerelementanbieter besser arbeiten können • Microsoft verspricht, sich aktiver um alle auf Microsoft Connect gemeldeten Bugs zu kümmern • WPF-Designer und Blend bleiben getrennte Designer

#178

WPF 4.6: Transparente Kinder-Fenster • • • •

Transparente Kind-Fenster sind möglich ab Windows 8.1 Jetzt auch in WPF: Window.UserPerPixelTransparency = true Muss im App-Manifest aktiviert werden

#179

Blatt 23

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

WPF: Verbesserungen für High DPI

#181

WPF-Pläne (> 4.6): App Local • • • • •

WPF aufgeteilt in viele kleine Assemblies Deployment via Nuget "App Local"-Installation Aber vorerst nur für .NET Full Framework Möglichst kompatibel zur in .NET-Setup integrierten Version • Schnellere Veröffentlichungszyklen

#182

Blatt 24

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

WPF-Pläne (> 4.6): Content Deferral • Bisher werden alle Visuals beim Start erzeugt (auch wenn sie vorerst nicht oder sogar nie gebraucht werden im aktuellen Programmablauf) • neu: – Verzögertes Erzeugen möglich – Unterelemente werden erst erzeugt, wenn sie gebraucht werden

#183

ASP.NET 5

"Project K"

#188

Blatt 25

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Neuheiten in ASP.NET 5.0 (1) • Neuimplementierung, ohne (das schwerfällige) System.Web • Kompatibilität zu ASP.NET 4.x/MVC5/WebAPI 2.x ist KEIN Ziel. • Es gibt keinen Konverter und wird keinen von Microsoft geben! • MVC, WebAPI und WebPages werden zu einem Framework zusammengefasst (maximaler Code Reuse!) • Ad-Hoc-Kompilieren im RAM dank .NET Compiler Platform "Roslyn"  Speichern, Neuladen • Einfachere Erweiterbarkeit • Dependency Injection – Eingebautes DI-Framework – DI in View und Controller – andere Klassen • Einfaches Self-Hosting (oder im IIS) #189

Neuheiten in ASP.NET 5.0 (2) • Werkzeugunabhängigkeit

– Commandline First – VS 2015 oder beliebige Editoren – VS 2015: • Paketverwaltung mit Bower (zusätzlich zu Nuget) • Build-Tasks mit Gulp und Grunt

• Konfiguration

– Projektkonfiguration: JSON – MSBuild-Einsatz aber noch möglich (.kproj-Dateien) – Eigene Konfigurationseinträge: XML, JSON, INI, erweiterbar

• Wiederverwendung

– Tag Helpers: Eigene HTML-Tags, die serverseitig ausgewertet werden – View Components: Seitenteil mit View + Controller

#190

Blatt 26

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

ASP.NET Webforms 4.6 in .NET 4.6 • Keine Webforms mehr in ASP.NET 5.0

Quelle: http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview

• ASP.NET Webforms 4.6 in .NET 4.6 1. HTTP2 (Windows 10/Server 2016)  Leistungssteigerungen 2. Async Model Binding 3. Roslyn CodeDOM Compilers (Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform)  schnellere Startzeit 4. EF6-Unterstützung in Dynamic Data Framework, Entity Data Source Control + Universal Providers (Add-On seit 28.4.2014)

AJAX Control Toolkit seit Sep 2014 von DevExpress weiter entwickelt http://devexpress.com/ms-act

#191

Entity Framework 7

#193

Blatt 27

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Entwicklung von EF

EF 6.0

Eines Tages: EF 7.x/8.x/9.x/…

EF 5.0 EF 4.0

EF 1.0

EF 7.0

#194

Entity Framework 7.0 Beta 4 • • • • • • • •



Fast komplette Neuimplementierung Leichtgewichtiger: Weniger RAM, Schneller Läuft auf .NET Full 4.6 und .NET Core 5 Auch nicht-Relationale Datenspeicher (NoSQL) Neue Treiber von Microsoft: In-Memory, Azure Table Storage, SQLite, Redis Neue Features: Batch Updates, Default Values, LINQ-Verbesserungen, … v7.0 nur für ASP.NET 5 gedacht, V7.x auch Windows Phone und Windows Apps Das wird entfallen: – Kein ObjectContext mehr, nur noch DbContext – Kein EDMX mehr – Nur noch Code-based Modeling (auch mit Reverse Eng. bestehender DB) Das gibt es derzeit noch nicht – Lazy Loading – N:M, TPH, TPT – Validierung – SQL, SPs, TVF #195 – …

Blatt 28

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Weitere Neuigkeiten in .NET Framework 4.6 & Core 5

#196

Weitere Neuerungen • Neuer 64-Bit-JITer "Ryujit": Bessere Leistung • SIMD (Single Instruction, Multiple Data): Parallelisierung innerhalb eines CPU-Kerns – Bibliothek "System.Numerics.Vectors"

• Verbesserung des Assembly Loaders: Entladen von IL-Assemblies, nachdem NGEN-Assembly geladen wurde • Ca. 150 kleinere API-Erweiterungen – Angleichungen an Erfordernisse des .NET Core Frameworks – EnableWindowsFormsHighDpiAutoResizing

#198

Blatt 29

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

System.AppContext • Globale, Assembly- und Thread-übergreifende Variablen

• Base Directory: liefert alles das Gleiche

• Fehler in Doku:

#201

Duck Typing mit Assembly Neutral Interfaces • Schnittstellendefinitionen, die nicht an Assembly gebunden sind • Name ist Namensraum + Schnittstellenname • Verwendung der Schnittstelle ohne Referenz auf Assembly – Stattdessen: Neudeklarierung im Quellcode

• Schnittstellen gelten als gleich, wenn Name und Mitglieder inkl. Typen gleich sind • Etwas schlechtere Performanz: siehe http://blog.srulytaber.com/2014/11/assembly-neutralinterface-performance/

#202

Blatt 30

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Beispiel

#203

Fazit

#217

Blatt 31

© Dr. Holger Schwichtenberg, www.IT-Visions.de Weitergabe, Vervielfältigung und Nutzung für Weiterbildungsmaßnahmen nur mit Genehmigung des Autors

Chancen • • • • • • • • • •

.NET lebt und ist agiler denn je! Anpassung an Markttrends .NET auf allen Betriebssystemen Langfristig ein .NET ("One .NET") Open Source Schnellere Innovationen Modularität statt Monolith Einfache Erweiterbarkeit und Austauschbarkeit Langfristig Vereinheitlichung Veränderungen sind wichtig, um .NET konkurrenzfähiger zu machen

#219

Herausforderungen • • • •

Dokumentation leidet unter Agilität Verzicht auf Strong Naming bringt neue Herausforderungen Probleme mit Nuget z.B. Zugang (Firewall), längere Ladezeiten in IDE u.a. Neue Aufgaben – Auswahl ("Qual der Wahl"): Entwickler muss sich sein Framework aus Nuget-Paketen zusammensuchen – Abhängigkeitsmanagement / Versionsmanagement – Kompatibilitätsprobleme zwischen Paketen • Risikobewertung für Open Source-Projekte – Wer entwickelt die Software (weiter)? – Kann ich darauf vertrauen, dass die Software tut / nur das tut, was beschrieben ist (ohne den ganzen Quellcode zu lesen)? – Welchen Support gibt es? • Open Source ist nicht kostenfrei! • Umlernen & Umstiegsaufwand #220

Blatt 32

Suggest Documents