30

Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Embed Size (px)

Citation preview

Page 1: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit
Page 2: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim Fuchs

Microsoft .NET 4.5 Update

Page 3: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit
Page 4: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

3

Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim Fuchs

Microsoft .NET 4.5 Update

Page 5: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim Fuchs: Microsoft .NET 4.5 Update Copyright © 2013 by O’Reilly Verlag GmbH & Co. KG

Das in diesem Buch enthaltene Programmmaterial ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor, Übersetzer und der Verlag übernehmen folglich keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programmmaterials oder Teilen davon entsteht. Die in diesem Buch erwähnten Software- und Hardware-bezeichnungen sind in den meisten Fällen auch eingetragene Marken und unterliegen als solche den gesetz-lichen Bestimmungen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk, einschließlich aller Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt ins-besondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Ver-arbeitung in elektronischen Systemen. Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei erfunden, soweit nichts anderes angegeben ist. Jede Ähnlichkeit mit tatsächlichen Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen, E-Mail-Adressen und Logos ist rein zufällig.

Kommentare und Fragen können Sie gerne an uns richten: Microsoft Press Deutschland Konrad-Zuse-Straße 1 85716 Unterschleißheim E-Mail: [email protected]

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 15 14 13 Druck-ISBN 978-3-86645-468-2, PDF-ISBN 978-3-84833-008-9 EPUB-ISBN 978-3-84830-139-3, MOBI-ISBN 978 3-84831-135-4 © 2013 O’Reilly Verlag GmbH & Co. KG Balthasarstraße 81, 50670 Köln Alle Rechte vorbehalten

Korrektorat: Kristin Grauthoff, Lippstadt Fachlektorat: Frank Langenau, Chemnitz Satz: Silja Brands, ActiveDevelop, Lippstadt (www.ActiveDevelop.de) Illustrationen: Corinne Wenger, Ostermundigen Layout: Gerhard Alfes, mediaService, Siegen (www.media-service.tv) Umschlaggestaltung: Hommer Design GmbH, Haar (www.HommerDesign.com) Gesamtherstellung: Kösel, Krugzell (www.KoeselBuch.de)

Page 6: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Inhaltsverzeichnis

Vorwort..................................................................................................................................................... 13 Über die Firma www.IT-Visions.de................................................................................................... 16 Über den Autor Dr. Holger Schwichtenberg.................................................................................... 16 Über den Autor Manfred Steyer......................................................................................................... 18 Über den Autor Dr. Joachim Fuchs ................................................................................................... 19 Leserservice............................................................................................................................................ 20 Ihre Entwicklungsumgebung für .NET 4.5....................................................................................... 20

1 Allgemeines zum .NET Framework 4.5....................................................................................... 23 Unterstützte Betriebssysteme .............................................................................................................. 24 Installation als »In-Place-Update«...................................................................................................... 24 Common Language Runtime (CLR) 4.5............................................................................................ 26

Verbesserungen bei der Speicherverwaltung............................................................................. 26 Parallel JIT Compilation............................................................................................................... 26 Aggressives Inlining ...................................................................................................................... 28

Änderungen bei der Native Image Generation................................................................................. 29 Managed Profile Guided Optimization (MPGO) ............................................................................ 30

2 Visual Studio 2012 ......................................................................................................................... 33 Varianten ................................................................................................................................................ 35 Installation ............................................................................................................................................. 39 Vierteljährliche Updates....................................................................................................................... 39 Neues Design für Visual Studio .......................................................................................................... 39 Projektarten ........................................................................................................................................... 41 Beispiele herunterladen........................................................................................................................ 41 Projektformat......................................................................................................................................... 42 Multi-Targeting ..................................................................................................................................... 44 Portable Class Libraries........................................................................................................................ 44 Add Reference-Dialog.......................................................................................................................... 48 NuGet Library Package Manager........................................................................................................ 49 Dateiverwaltung mit dem Solution Explorer .................................................................................... 53 Registerkartenverwaltung der geöffneten Dateien........................................................................... 54 Verbesserter Suchen und Ersetzen-Dialog........................................................................................ 55 Suche über Visual Studio-Funktionen/-Optionen (Quick Launch) .............................................. 56 Codeduplikate suchen (Code Clone Analysis) ................................................................................. 56 Webeditor............................................................................................................................................... 58 Page Inspector ....................................................................................................................................... 60

Page 7: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

6 Inhaltsverzeichnis

JavaScript-Editor .................................................................................................................................. 62 Standardinhalt eines Webprojekts...................................................................................................... 63 IIS Express ............................................................................................................................................. 65 Web Publishing Profiles....................................................................................................................... 67 Datenwerkzeuge.................................................................................................................................... 68 XAML-Designer für WPF, Silverlight und Apps.............................................................................. 69

Fenster-Layout ............................................................................................................................... 72 Das Eigenschaftenfenster ............................................................................................................. 76 Ressourcen...................................................................................................................................... 79 Styles und Templates .................................................................................................................... 81 Was Visual Studio nicht kann ..................................................................................................... 87

Diff- und Merge-Werkzeuge............................................................................................................... 87 Debugger ............................................................................................................................................... 89 Unit Testing ........................................................................................................................................... 90 Attrappen-Objekte mit Microsoft Fakes ........................................................................................... 91

Stub-Attrappen .............................................................................................................................. 92 Shim-Attrappen............................................................................................................................. 93

Zusammenarbeit mit Team Foundation Server ............................................................................... 94 PowerPoint-Storyboarding ................................................................................................................. 96 Feedback Client .................................................................................................................................... 97 Visual Studio LightSwitch (RAD) ...................................................................................................... 97 Weitere Funktionen von Visual Studio 2012 .................................................................................... 99

3 Neuerungen in C# 5.0 und Visual Basic .NET 11.0 .................................................................. 101 Iteratoren ............................................................................................................................................... 102 Global-Keyword in Namensräumen.................................................................................................. 104 Call Hierarchy ....................................................................................................................................... 104 ByVal nicht mehr automatisch in der Codegenerierung ................................................................ 105

4 Parallele und Asynchrone Anwendungen mit .NET 4.5 ........................................................... 107 Async und Await................................................................................................................................... 108

Regeln und Konventionen ........................................................................................................... 112 TPL Dataflow (TDF)............................................................................................................................ 112

Akteure und Datenflüsse mit TDF implementieren ................................................................ 112 Überblick zu Datenfluss-Blöcken ............................................................................................... 116 Datenfluss-Blöcke konfigurieren ................................................................................................ 117

5 ADO.NET Entity Framework 5.0................................................................................................... 119 Versionsgeschichte ............................................................................................................................... 120 Verbesserungen im Reverse Engineering-Assistent ........................................................................ 121 Verbesserungen im Entity Framework-Designer ............................................................................ 122 Standardcodegenerierung mit DbContext........................................................................................ 123 Enums (Designer und Code Only), auch als Keys........................................................................... 124

Page 8: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Inhaltsverzeichnis 7

Geografische Datentypen (»Spatial«): DbGeography und DbGeometry ..................................... 126 Table Valued Functions (TVF)............................................................................................................ 127

Einführung in Table Valued Functions...................................................................................... 127 TVF verwenden im klassischen ADO.NET ............................................................................... 129 TVF im ADO.NET Entity Framework 5.0................................................................................. 130

Automatische Kompilierung und Zwischenspeichern von LINQ-Befehlen ................................ 135 Code First (Code Only) ....................................................................................................................... 136

Überblick......................................................................................................................................... 136 Erste Schritte mit Code Only ....................................................................................................... 137 Konventionen über Konfiguration.............................................................................................. 139 Proxies für Change-Tracking und Lazy Loading ...................................................................... 145 Weitere Möglichkeiten mit DbContext und DbSet .................................................................. 145 Change-Tracking bei getrennten Entitäten ............................................................................... 147 Database First und Code Only..................................................................................................... 148 Automatisches Migrieren von Datenbanken............................................................................. 148

Weitere Verbesserungen im Entity Framework 5.0.......................................................................... 151

6 WCF 4.5............................................................................................................................................ 153 Bindings.................................................................................................................................................. 154

WebSockets..................................................................................................................................... 154 UDP-Binding und Multicasts ...................................................................................................... 158 Kompression................................................................................................................................... 159

Konfiguration ........................................................................................................................................ 160 IntelliSense in der Konfiguration ................................................................................................ 160 Vereinfachte Code-Konfiguration .............................................................................................. 161 Unterstützung für mehrere Authentifizierungsarten pro Endpunkt..................................... 162 Neue Standard-Quotas.................................................................................................................. 163

Weitere Neuerungen............................................................................................................................. 163

7 Windows Identity Foundation 4.5 ............................................................................................... 165 Architektur............................................................................................................................................. 166 Web Service-Standards ........................................................................................................................ 167 Erste Schritte mit WCF und WIF 4.5 ................................................................................................. 168

Verweis auf STS einrichten .......................................................................................................... 168 Übermittelte Claims prüfen ......................................................................................................... 172 Claims in Service-Methoden verwenden ................................................................................... 173 Szenario testen................................................................................................................................ 174

Delegation implementieren ................................................................................................................. 175 STS für Delegation einrichten...................................................................................................... 175 FlugBuchungsService aufrufen .................................................................................................... 178 Testen des Szenarios...................................................................................................................... 179

Token manuell anfordern .................................................................................................................... 179

Page 9: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

8 Inhaltsverzeichnis

Windows Identity Foundation und ASP.NET .................................................................................. 181 Konfigurieren von ASP.NET-Projekten für den Einsatz mit WIF ........................................ 181 Programmatisches Anfordern einer Anmeldung..................................................................... 182 Session-Cookie für Claims erstellen ........................................................................................... 183 Gegen Claims mit ClaimsAuthorizationManager prüfen....................................................... 183

8 Windows Workflow Foundation 4.5............................................................................................ 185 Side-by-Side-Versionisierung ............................................................................................................. 186

Side-by-Side-Versionisierung mit Workflow-Services............................................................ 187 Side-by-Side-Versionisierung mit Self-Hosting ....................................................................... 188 Side-by-Side-Versionisierung mit Workflow-Application..................................................... 190

Dynamic Update................................................................................................................................... 193 Dynamic Update mit WorkflowApplication ............................................................................ 194 Dynamic Update mit WorkflowControlEndpoint................................................................... 199

Contract First ........................................................................................................................................ 200 Verbesserungen am Designer ............................................................................................................. 202 Zustandsautomaten.............................................................................................................................. 202

9 Managed Extensibility Framework 2........................................................................................... 205 API-basierte Konfiguration ................................................................................................................ 206 Leichtgewichtiges Programmiermodell fürs Web und Windows 8 ............................................... 209 Instanziierung von Imports mit ExportFactory beeinflussen........................................................ 211 Beeinflussung des Instanziierungs-Verhaltens über Scopes........................................................... 212

10 .NET Framework Class Library 4.5 .............................................................................................. 215 Umfang der Neuerungen..................................................................................................................... 216 Aufruferinformationen (Caller Info)................................................................................................. 217 Asynchrone Methoden in IO-Klassen............................................................................................... 219 LeaveOpen-Option für BinaryReader, BinaryWriter, StreamReader und StreamWriter ........... 220 ZIP-Archive ........................................................................................................................................... 221 Asynchrone Methoden in ADO.NET................................................................................................ 222 Datenannotationen............................................................................................................................... 224 Objektmengen (System.Collections) ................................................................................................. 229 Arrays mit mehr als zwei Gigabyte Größe ........................................................................................ 230 Konsolenanwendungen ....................................................................................................................... 230 Netzwerk................................................................................................................................................ 231 Reguläre Ausdrücke ............................................................................................................................. 232 Assembly-Metadaten ........................................................................................................................... 233 Standardspracheinstellung für Threads ............................................................................................ 234 ExceptionDispatchInfo ........................................................................................................................ 234 Weitere Neuerungen ............................................................................................................................ 236

Page 10: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Inhaltsverzeichnis 9

11 Windows-Runtime (WinRT) .......................................................................................................... 237 Windows 8 ............................................................................................................................................. 238 Programmieren für Windows 8 .......................................................................................................... 239 WinRT-Konzepte .................................................................................................................................. 242 WinRT-Klassen ..................................................................................................................................... 242 Abbildung von WinRT-Klassen auf .NET-Klassen .......................................................................... 244 Nutzung von WinRT-Klassen in .NET .............................................................................................. 245

Referenzierung der Windows-Runtime-API............................................................................. 246 Referenzieren der System.Runtime.WindowsRuntime ........................................................... 247 Referenzieren der Fassaden-Assemblys...................................................................................... 248 Beispiel 1: Geräteinformationen ausgeben................................................................................. 249 Beispiel 2: Dateisuche mit Windows (Desktop) Search ........................................................... 250

Pro- und Contra WinRT ...................................................................................................................... 251 WinRT als neue Betriebssystem-API.......................................................................................... 251 WinRT ist COM............................................................................................................................. 251 Inkompatibilitäten ......................................................................................................................... 252 Fragmentierung der .NET-Welt .................................................................................................. 254 WinRT ist nur für Windows 8 verfügbar ................................................................................... 255 Kritische Bewertungen WinRT.................................................................................................... 255

12 Neuerungen in ASP.NET 4.5-Web Forms, Handlern und Modulen........................................ 257 Varianten von ASP.NET ....................................................................................................................... 258

ASP.NET-Oberflächentechniken ................................................................................................ 258 Nicht-visuelle ASP.NET-Techniken ........................................................................................... 260

Installation von ASP.NET 4.5 .............................................................................................................. 260 Verbesserungen für HTML5 ............................................................................................................... 262

Neue ASP.NET-Steuerelemente .................................................................................................. 262 Verbesserung in den ASP.NET-Steuerelementen..................................................................... 263

Typisierte Datenbindungsausdrücke.................................................................................................. 265 Model Binding (ein neues Datenbindungsverfahren) ..................................................................... 266

Datenbindungsverfahren in ASP.NET Web Forms 4.5 ........................................................... 266 Einführung in ASP.NET Model Binding ................................................................................... 267 Validierung ..................................................................................................................................... 270 Abfrageparameter beim Model Binding..................................................................................... 276

WebSockets mit ASP.NET 4.5 ............................................................................................................. 280 Verkleinern und Verbinden von CSS- und JavaScript-Dateien...................................................... 285

Standardbundles ............................................................................................................................ 285 Benutzerdefinierte Bundles .......................................................................................................... 286

Asynchrone Seitenverarbeitung.......................................................................................................... 287 Asynchrone Handler und Module...................................................................................................... 288 Verbesserungen der Anfrageprüfung................................................................................................. 291 Weitere Änderungen in Kürze............................................................................................................. 291

Page 11: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

10 Inhaltsverzeichnis

13 ASP.NET MVC 4 .............................................................................................................................. 293 Unterstützung für mobile Anwendungen ......................................................................................... 294

Vorlagen für mobile Anwendungen........................................................................................... 294 Auswählen einer passenden View............................................................................................... 296 Seiten für Mobile und Klassische Endgeräte ............................................................................. 298

Login mit Google, Facebook, Twitter und Co. ................................................................................. 298 Protokolle und Implementierungen........................................................................................... 299 Login-Provider registrieren ......................................................................................................... 299 Authentifizierung über Login-Provider anfordern .................................................................. 300 Callback von Login-Provider entgegennehmen ....................................................................... 301 Authentifizierung mit vorgefertigter Logik aus Vorlage ......................................................... 302

Asynchrone Controller ........................................................................................................................ 306

14 ASP.NET-Web-API .......................................................................................................................... 309 Einen einfachen REST-Service erstellen ........................................................................................... 310

Parameter und Rückgabewerte ................................................................................................... 311 REST-Services konfigurieren....................................................................................................... 312 REST-Services mit Fiddler testen................................................................................................ 313

Mehr Kontrolle über HTTP-Nachrichten......................................................................................... 315 REST-Services über HttpClient konsumieren.................................................................................. 318 Weiterführende Schritte mit Web-API .............................................................................................. 320

Benutzerdefinierte Routen ........................................................................................................... 321 Dynamische Parameter ................................................................................................................ 321 Tracing ............................................................................................................................................ 322 Querschnittsfunktionen mit Message Handler implementieren ........................................... 323 Handler mit HttpClient verwenden ........................................................................................... 324 Benutzerdefinierte Formate unterstützen.................................................................................. 326 Formatter mit HttpClient verwenden ........................................................................................ 328

Web-APIs ohne IIS verwenden .......................................................................................................... 329 Self-Hosting konfigurieren .......................................................................................................... 329 SSL für Web-API ohne IIS ........................................................................................................... 330

Serialisierung beeinflussen.................................................................................................................. 330 JSON-Serializer konfigurieren .................................................................................................... 331 XML-Serializer konfigurieren ..................................................................................................... 332 Eigenschaften von der Serialisierung ausnehmen .................................................................... 332 Zirkuläre Referenzen serialisieren .............................................................................................. 332

Streaming............................................................................................................................................... 335 Action-Methoden für Streaming vorbereiten ........................................................................... 335 Streaming in Self-Hosting-Szenarien konfigurieren................................................................ 336 Streaming für IIS konfigurieren .................................................................................................. 336 Streams über HttpClient verwenden .......................................................................................... 338

Web-API und HTML-Formulare....................................................................................................... 339 Einfache Formularfelder übermitteln ........................................................................................ 339 Dateiupload via HTML-Formular .............................................................................................. 339

Page 12: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Inhaltsverzeichnis 11

Fortschritt ermitteln ............................................................................................................................. 341 Feingranulare Konfiguration............................................................................................................... 343

Controller-basierte Konfiguration .............................................................................................. 343 Routen-basierte Konfiguration.................................................................................................... 344

15 WPF 4.5............................................................................................................................................ 345 Ribbon-Control..................................................................................................................................... 346 Delay bei Datenbindungen .................................................................................................................. 352 StaticPropertyChanged ........................................................................................................................ 353 Laufzeitinformationen zu Bindungsausdrücken abrufen ............................................................... 355 Validierung von Benutzereingaben mittels INotifyDataErrorInfo ................................................ 356 CollectionViewSource Live Shaping .................................................................................................. 360 Neue Eigenschaften des VirtualizingStackPanels ............................................................................. 362 Thread-Synchronisation von Collections.......................................................................................... 363 Weitere Ergänzungen ........................................................................................................................... 364

MarkupExtension für Events ....................................................................................................... 364 ICustomTypeProvider .................................................................................................................. 365 Neue Dispatcher.Invoke-Überladungen .................................................................................... 365

16 Windows Store-Apps mit C# und XAML entwickeln ................................................................ 367 Anlegen und Einrichten einer App..................................................................................................... 368 Debuggen und Testen von Windows Store-Apps............................................................................. 375 Steuerelemente für Windows Store-Apps.......................................................................................... 378

ListView........................................................................................................................................... 378 GridView......................................................................................................................................... 379 SemanticZoom ............................................................................................................................... 380 FlipView .......................................................................................................................................... 384 ProgressRing................................................................................................................................... 384 VariableSizedWrapGrid................................................................................................................ 384 ToggleButton und ToggleSwitch ................................................................................................. 385

Techniken und GUI-Konventionen ................................................................................................... 386 Navigation....................................................................................................................................... 387 App-Bars ......................................................................................................................................... 388 Share Contract................................................................................................................................ 389 Search Contract.............................................................................................................................. 393 Popupbenachrichtigungen ........................................................................................................... 394

Lebenszyklusverwaltung von Apps .................................................................................................... 395

Stichwortverzeichnis ............................................................................................................................... 399

Page 13: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit
Page 14: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Vorwort Liebe Leserin, lieber Leser, bereits zu .NET 4.0 haben wir mit dem Buch ».NET 4.0 Update« über die Neuerungen informiert. Nun liegt vor Ihnen mit dem Buch ».NET 4.5 Update« unser Werk, das Neuerungen im .NET Framework 4.5 und Visual Studio 2012 vorstellt.

Zielgruppe

Das Buch richtet sich an Softwareentwickler, die bereits mit der vorherigen Version .NET Framework 4.0 und Visual Studio 2010 gearbeitet haben. Das Buch setzt Kenntnisse in diesen Vorgängerversionen voraus. Das Buch stellt Neuerungen in .NET Framework 4.5 und Visual Studio 2012 Professional gegenüber der vorgenannten Version dar. Verweise auf ältere Funktionen erfolgen nur zur Veranschaulichung der Neue-rungen.

Besprochene Version

Das Buch behandelt die am 15.08.2012 erschienene Release to Manufacturing (RTM)-Version von Micro-soft .NET Framework 4.5 sowie der Entwicklungsumgebung Visual Studio 2012. Bei der Entwicklungsum-gebung, die es in den Varianten Express, Professional, Premium und Ultimate gibt, liegt der Schwerpunkt des Buchs auf der im kommerziellen Umfeld am weitesten verbreiteten Professional-Version. Aber auch einzelne Aspekte aus der Premium- und Ultimate-Version werden besprochen. Die meisten der in diesem Buch dargestellten Funktionen sind auch mit den Express-Editionen verfügbar.

Zielsetzung des Buchs

Zielsetzung dieses Buchs ist es, Ihnen einen schnellen Überblick über die wesentlichen Neuerungen zu geben. Wir werden sie an ausgewählten Stellen vertiefen.

Themeneinschränkungen

Das Buch fokussiert auf den Kern von .NET 4.5 und Visual Studio 2012 Professional. Einige Funktionen aus Visual Studio 2012 Premium und Visual Studio 2012 Ultimate werden ebenfalls beschrieben. Das Buch thematisiert nicht:

Die Sprachen Visual C++, F#, JScript.NET/JavaScript

Team Foundation Server (TFS)

Microsoft Silverlight

WCF RIA Services

ASP.NET Webpages und Microsoft Webmatrix

Page 15: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

14 Vorwort

Entwicklung für mobile Geräte wie Windows Phone

SharePoint-Entwicklung

Entwicklung von Microsoft Office-Erweiterungen mit Visual Studio Tools for Office

Entwicklung von Cloud-Anwendungen

Vollständigkeit

Das Buch kann leider keinen Anspruch auf Vollständigkeit hinsichtlich der Neuerungen erheben. Dies hat drei Gründe: 1. Es gibt viel mehr Neuerungen, als wir auf der vom Verlag vorgegebenen Seitenanzahl dieses Buchs

überhaupt niederschreiben könnten. 2. Es gibt nirgendwo (auch nicht auf Nachfrage bei Microsoft) eine vollständige Liste aller Neuerungen. 3. Die Seitenzahl für dieses Buch ist durch den Verlag begrenzt.

Quellen

Die in diesem Buch dargestellten Neuerungen basieren auf folgenden Quellen:

What’s New-Listen in der Visual Studio 2012-Dokumentation

Einträge in Weblogs der Produktteams

Eigenes Ausprobieren ab der Developer Preview-Version

Produktiver Einsatz in Softwareentwicklungsprojekten ab der RTM-Version

Verwendete Programmiersprache

Für dieses Buch gab es nur die Möglichkeit, die beiden primären .NET-Sprachen (C# und Visual Basic .NET) in einem einzigen Buch zu mischen. Primär befasst sich das Buch jedoch mit C#, weil die meisten .NET-Entwickler inzwischen diese Sprache einsetzen. Alle Leser, die lieber mit Visual Basic .NET arbeiten, möchten wir darauf hinweisen, dass die Transformati-on zwischen Visual Basic und C# sehr einfach ist: Es existieren kostenlose Werkzeuge, die dies auf Maus-klick erledigen (siehe http://www.dotnetframework.de/tools.aspx). Einer der Autoren dieses Buchs arbeitet selbst übrigens im Entwickleralltag zu 75% mit C# und zu 25% mit Visual Basic .NET, die anderen nur mit C#. .NET Framework und das zugehörige SDK sowie die Express-Editionen der Entwicklungsumgebung Visual Studio 2012 sind kostenlos auf der Microsoft Website verfügbar.

Sprachversion

Dieses Buch beschreibt die englische Version von Visual Studio, weil inzwischen viele deutsche Entwickler (einschließlich der Autoren) die englische Version der Software eindeutig bevorzugen, da die Übersetzun-gen ins Deutsche oft holprig sind und die Fehlermeldungen nur schwerer verständlich machen. Als Kom-promiss zwischen dem Kundenkreis mit englischsprachiger und deutschsprachiger Entwicklungsumgebung wird dieses Buch – so oft es möglich ist, ohne den Lesefluss zu stören – sowohl die deutschen als auch die englischen Namen der Menüpunkte nennen. Die Bildschirmabbildungen sind aus Platzgründen allerdings immer nur in einer Sprache abgedruckt.

Page 16: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Vorwort 15

Weiterhin möchten wir noch darauf hinweisen, dass die Anordnung der Menüs und auch einige Tastatur-kürzel von den gewählten Einstellungen in Visual Studio abhängen. Alle Ausführungen in diesem Buch beziehen sich auf die Umgebungseinstellung Common Settings, die bei der Installation des Produkts ausge-wählt werden kann.

Danksagungen

Unseren Dank für ihre Mitwirkung an diesem Buch möchten wir aussprechen an

unsere Familienangehörigen, die uns neben unserem Hauptberuf das Umfeld geschaffen haben, auch an manchen Abenden und Wochenenden an diesem Buch zu arbeiten

die Microsoft Press-Lektoren Thomas Braun-Wiesholler und René Majer, die dieses Buch von der Verlagsseite aus betreut haben

den Fachlektor Frank Langenau, der alle Texte inhaltlich und alle Beispiele hinsichtlich der Funktions-fähigkeit geprüft hat

die Korrektorin Kristin Grauthoff, die das Buch sprachlich verbessert hat und

die Setzerin Silja Brands, die sich um die optischen Aspekte des Buchs gesorgt hat Viel Erfolg mit Ihrem durch dieses Buch aktualisierten .NET-Wissen wünschen Ihnen Dr. Holger Schwichtenberg, Manfred Steyer und Dr. Joachim Fuchs Essen, Graz und Whiel, im Oktober 2012

Page 17: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

16 Vorwort

Über die Firma www.IT-Visions.de Alle drei Autoren arbeiten bei der Firma www.IT-Visions.de als Softwarearchitekten, Softwareentwickler, Trainer und Berater für .NET-Techniken. www.IT-Visions.de ist ein Verbund der deutschen Top-Experten im Bereich der Microsoft-Produkte und -Technologien insbesondere .NET. Unter Leitung und Mitwirkung des bekannten .NET-Experten Dr. Holger Schwichtenberg bietet www.IT-Visions.de:

Strategische und technische Beratung

Konzepte, Machbarkeitsstudien und Reviews

Coaching bei Entwicklungsprojekten

Softwareentwicklung (Prototypen und Produkte)

Technischer Support vor Ort und via Telefon, E-Mail oder Web-Konferenz

Individuell zugeschnittene technische Vor-Ort-Schulungen und anforderungsorientierte Workshops

Öffentliche Seminare (in Kooperation mit dem Heise-Verlag), siehe www.dotnet-akademie.de Zu den Kunden gehören neben vielen mittelständischen Unternehmen auch Großunternehmen wie z. B. E.ON, Bertelsmann, EADS, Siemens, MAN, Bayer, VW, Bosch, ThyssenKrupp, Merkle, Fuji, Festo, Dr. Oetker, Deutsche Post, Deutsche Telekom, Fielmann, Roche, HP, Jenoptik, Hugo Boss, Zeiss, IKEA, diverse Banken und Versicherungen sowie mehrere Landesregierungen.

Page 18: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Vorwort 17

Über den Autor Dr. Holger Schwichtenberg Studienabschluss Diplom-Wirtschaftsinformatik an der Universität Essen

Promotion an der Universität Essen im Gebiet komponentenbasierter Soft-wareentwicklung

Seit 1996 selbstständig als unabhängiger Berater, Dozent, Softwarearchitekt und Fachjournalist

Geschäftsführung und Leitung der Softwareentwicklung bei www.IT-Visions.de

Mehr als 40 Fachbücher bei Microsoft Press, Addison-Wesley und dem Carl Hanser-Verlag und mehr als 500 Beiträge in Fachzeitschriften

Gutachter in den Wettbewerbsverfahren der EU gegen Microsoft (2006–2009)

Ständiger Mitarbeiter der Zeitschriften iX (seit 1999), dotnetpro (seit 2000) und Windows Developer (seit 2010) sowie beim Online-Portal heise.de (seit 2008).

Regelmäßiger Sprecher auf nationalen und internationalen Fachkonferenzen (z. B. TechEd, Microsoft IT Forum, BASTA, Advanced Developers Conference, OOP, VS One, Wirtschaftsinformatik, Net.Object Days, Windows Forum, DOTNET-Konferenz, XML-in-Action)

Zertifikate und Auszeichnungen von Microsoft:

Microsoft Most Valuable Professional (MVP)

Microsoft Certified Solution Developer (MCSD)

Thematische Schwerpunkte:

Microsoft .NET Framework, Visual Studio, C#, Visual Basic .NET

.NET-Architektur / Auswahl von .NET-Technologien

Einführung von .NET Framework und Visual Studio / Migration auf .NET

Webanwendungsentwicklung mit IIS, ASP.NET, AJAX und Silverlight

Enterprise .NET, verteilte Systeme mit .NET insbes. Windows Communication Foundation

Relationale Datenbanken, XML, Datenzugriffsstrategien

Objektrelationales Mapping (ORM) insbes. ADO.NET Entity Framework

Windows PowerShell (WPS) und Windows Management Instrumentation (WMI)

Ehrenamtliche Community-Tätigkeiten:

Vortragender für die International .NET Association (INETA)

Betrieb diverser Community-Websites, u. a. www.dotnetframework.de, www.aspnetdev.de und www.powershell-doktor.de

Weblog: http://www.dotnet-doktor.de

Kontakt: [email protected] sowie Telefon 0201 7490-700

Page 19: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

18 Vorwort

Über den Autor Manfred Steyer Manfred Steyer ist Trainer und Berater bei www.IT-Visions.de sowie verantwortlich für den Fachbereich Software Engineering der Studien-richtung IT und Wirtschaftsinformatik an der FH CAMPUS 02 in Graz. Er schreibt für das windows.developer magazin (vormals dot.net ma-gazin) und ist Buchautor bei Microsoft Press, Carl Hanser sowie Ent-wickler Press. Manfred hat berufsbegleitend IT und IT-Marketing in Graz sowie Computer Science in Hagen studiert und kann auf mehr als zehn Jahre an Erfahrung in der Planung und Umsetzung von großen Applika-tionen zurückblicken. Er ist ausgebildeter Trainer für den Bereich der Erwachsenenbildung und spricht regelmäßig auf Fachkonferenzen. In der Vergangenheit war Manfred Steyer mehrere Jahre für ein großes österreichisches Systemhaus tätig. In der Rolle als Bereichsleiter hat er gemeinsam mit seinem Team Geschäftsanwendungen konzipiert und umgesetzt. Sein Weblog errreichen Sie unter www.softwarearchitect.at Seine E-Mail-Adresse lautet [email protected]

Page 20: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Vorwort 19

Über den Autor Dr. Joachim Fuchs Studienabschluss Dipl.-Ing. Elektrotechnik, Schwerpunkt Technische

Informatik an der RWTH Aachen

Promotion am Laboratorium für Werkzeugmaschinen und Betriebslehre der RWTH Aachen

Seit 1995 selbstständig als Softwareentwickler, Berater, Dozent und Fach-journalist

Fachbücher bei Addison-Wesley und Microsoft Press

Autor bei den Zeitschriften dotnetpro und iX

Vortragender auf Fachkonferenzen (z. B. BASTA)

Thematische Schwerpunkte:

Microsoft .NET Framework, Visual Studio, C#, Visual Basic .NET

Einführung von .NET Framework und Visual Studio / Migration auf .NET

Windows Forms

XAML

Windows Presentation Foundation (WPF)

Mirosoft Silverlight

Windows Store-Apps

Kontakt: [email protected]

Page 21: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

20 Vorwort

Leserservice Den Lesern dieses Buchs werden von den Autoren folgende Serviceleistungen im Rahmen einer zugangs-beschränkten Website angeboten:

Downloads Sie können alle in diesem Buch vorgestellten Codebeispiele hier herunterladen

Diskussionsrunde Ein webbasiertes Forum bietet die Möglichkeit, Fragen an die Autoren zu stellen. Bitte beachten Sie jedoch, dass dies eine freiwillige Leistung der Autoren ist und kein Anspruch auf eine kostenlose Betreuung besteht.

Newsletter Alle registrierten Leser erhalten zwei- bis viermal jährlich einen Newsletter mit aktuellen Terminen und Publikationshinweisen

Leserbewertung Vergeben Sie Noten für dieses Buch und lesen Sie nach, was andere Leser von diesem Buch halten

Errata Trotz eines jahrelang erprobten Vorgehensmodells und der dreifachen Qualitätskontrolle (Co-Autor, Fachlektor, Verlag) ist es möglich, dass sich einzelne Fehler in dieses Buch eingeschlichen haben. Im Webportal können Sie nachlesen, welche Fehler gefunden wurden. Sie können hier auch selbst Fehler melden, die Ihnen auffallen.

Zugang zum Leser-Portal

Der URL für den Zugang zum Leser-Portal lautet: http://www.dotnetframework.de/leser Bei der Anmeldung müssen Sie das Kennwort FIREFLY angeben. Alternativ finden Sie die Dateien auf der Verlagsseite unter: www.microsoft-press.de/support/9783866454682

Ihre Entwicklungsumgebung für .NET 4.5 Zum Entwickeln mit .NET 4.5 empfehlen wir folgende Konfiguration:

1. .NET Framework 4.5 Redistributable (inkl. .NET Framework Client Profile) 2. Entwicklungsumgebung Visual Studio 2012 Professional oder höher, Englische Version 3. Microsoft SQL Server 2012 Express oder höher, Englische Version TIPP Wenn Sie Visual Studio 2012 Professional (oder höher) installieren, wird dadurch automatisch .NET Framework 4.5 Redistributable ebenfalls installiert. Durch die Installation von .NET Framework 4.5 wird ein eventuell vorher vorhandenes .NET Framework 4.0 überschrieben (siehe »In-Place-Update« in Kapitel 1).

Page 22: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Vorwort 21

Express-Editionen Microsoft bietet neben Visual Studio auch noch eine Produktfamilie unter dem Titel »Visual Studio Express Editionen« an. Bei den Express-Editionen handelt es sich um größere Bausteine, die aus Visual Studio heraus-gebrochen wurden und jeweils für einen speziellen Anwendungsfall bereitstehen. Diese Express-Editionen sind kostenlos auf der Microsoft Website (http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products) beziehbar. Sie dürfen ohne Gebühren unbegrenzt verwendet werden. Es existieren derzeit die in nachfolgender Tabelle genannten Express-Editionen. Die Express-Editionen reichen für die wichtigs-ten Anwendungstypen aus. Es gibt keine Express-Editionen für exotischere .NET-Anwendungsarten, z. B. Microsoft Office-Anwendungen, SharePoint-Webparts oder SQL Server-Anwendungen. Als Express-Editionen erhalten Sie auch den Datenbankserver SQL Server 2012 und das Quellcodeverwal-tungssystem/ALM-System Team Foundation Server 2012.

Programmier-sprachen

UI-Sprachen Konsolen-anwen-dungen

Windows-Desktop-Anwendung

Windows 8 Store-Apps

Bibliotheken (DLL)

Web-anwen-dungen

Webservices

Visual Studio 2012 Professional und höher

C#, Visual Basic, C++, F#, JavaScript

XAML, HTML, Windows Forms

X X X X X X (IIS oder EXE gehostet)

Visual Studio 2012 Express for Windows Desktop

C#, Visual Basic, C++

XAML, Windows Forms

X X X X (EXE gehostet)

Visual Studio 2012 Express for Windows 8

C#, Visual Basic, C++, F#, JavaScript

XAML, HTML X (nur Client)

Visual Studio 2012 Express for Web

C# und Visual Basic

HTML X X (im IIS gehostet)

Tabelle V.1 Übersicht über die Express-Editionen von Visual Studio

ACHTUNG Bitte beachten Sie, dass in diesem Buch aus Platzgründen nicht explizit die Unterschiede zwischen Express-Variante und den kommerziellen Varianten beschrieben werden können.

Installation der Express-Editionen Sie können alle Express-Editionen problemlos gemeinsam auf einem Computersystem installieren. Jedoch integrieren sich die Produkte nicht ineinander, d. h. alle Entwicklungsumgebungen besitzen ein eigenes Anwendungsfenster, auch eine Mischung von verschiedenen Projekttypen in einer Projektmappe ist nicht möglich. Diese Integration hat Microsoft den käuflich zu erwerbenden Visual Studio 2012-Vollprodukten vorbehalten. Im Dateisystem verwenden die vier Express-Editionen viele Dateien gemeinsam, sodass der Platzbedarf der Produkte zusammen weniger ist als die Summe der Einzelinstallationen. Die Express-Editionen müssen nach 30 Tagen zwingend bei Microsoft registriert werden.

Page 23: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit
Page 24: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

23

Kapitel 1

Allgemeines zum .NET Framework 4.5

In diesem Kapitel: Unterstützte Betriebssysteme 24 Installation als »In-Place-Update« 24 Common Language Runtime (CLR) 4.5 26 Änderungen bei der Native Image Generation 29 Managed Profile Guided Optimization (MPGO) 30

Page 25: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

24 Kapitel 1: Allgemeines zum .NET Framework 4.5

Unterstützte Betriebssysteme Das .NET Framework 4.5 ist enthalten in Windows 8 und Windows Server 2012. Zudem ist das .NET Framework 4.5 installierbar in Windows 7, Windows Vista SP2, Windows Server 2008 und Windows Server 2008 R2. Windows XP und Windows Server 2003 werden nicht mehr unterstützt.

Betriebssystem Enthaltenes .NET Framework Weitere installierbare .NET Framework-Versionen

Windows 8 .NET Framework 4.5 .NET Framework 3.5 SP1

Windows 7 .NET Framework 3.5 SP1 .NET Framework 4.5, .NET Framework 4.0

Windows Vista SP2 .NET Framework 3.0 SP2 .NET Framework 4.5, .NET Framework 4.0, .NET Framework 3.5 SP1

Windows XP Professional and Windows XP Home Edition

– .NET Framework 4.0, .NET Framework 3.5 SP1, .NET Framework 2.0 SP2

Windows Server 2012 .NET Framework 4.5 .NET Framework 3.5 SP1

Windows Server 2008 R2 .NET Framework 2.0 SP2 (Standard), .NET Framework 3.5 SP1 (optional), .NET Framework 3.0 SP2 (optional)

.NET Framework 4.5, .NET Framework 4.0

Windows Server 2008 SP2 .NET Framework 2.0 SP2 (Standard), .NET Framework 3.0 SP2 (optional)

.NET Framework 4.5, .NET Framework 4.0,

.NET Framework 3.5 SP1

Windows Server 2003 .NET Framework 2.0 SP2 .NET Framework 4.0, .NET Framework 3.5 SP1, .NET Framework 3.0 SP2

Tabelle 1.1 .NET-Versionen und Betriebssysteme

Installation als »In-Place-Update« Das .NET Framework 4.5 nennt Microsoft ein »In-Place-Update« und meint damit, dass ein eventuell schon vorhandenes .NET Framework 4.0 durch 4.5 ersetzt wird. Anders als bei den bisherigen .NET-Versionen ist eine Koexistenz von .NET 4.0 und .NET 4.5 also nicht möglich. Dabei ist nicht nur diese Vorgehensweise befremdlich, sondern auch die Tatsache, dass Microsoft die Ver-sionsnummer des .NET Frameworks in den ersten drei Stellen nicht ändert.

NET 4.0 hat die Versionsnummer: 4.0.30319.269

NET 4.5 hat die Versionsnummer 4.0.30319.17929 Diese Versionsnummer liefern alle .NET-DLLs und alle .NET-Werkzeuge (z. B. csc.exe) sowie die Eigen-schaft Environment.Version. Nur anhand der vierten Stelle ist erkennbar, dass es sich um .NET Framework 4.5 handelt. Lediglich Visual Studio 2012 meldet ein ».NET Framework 4.5.50709«. Eine .NET 4.0-Anwendung wird also auf .NET 4.5 starten und dort einwandfrei laufen, solange nicht eine der kleineren, aber zahlreichen Änderungen zuschlägt, die Microsoft in .NET 4.5 eingebaut hat. Die Liste ist recht lang und kann hier aus Platzgründen nicht vollständig wiedergegeben werden (http://msdn.microsoft.com/ en-us/library/hh367887(v=vs.110).aspx). Es sei nur ein Beispiel zitiert:

Page 26: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Installation als »In-Place-Update« 25

System.Data.SqlClient::SqlConnection type Connections to SQL Server databases using the Virtual Interface Adapter (VIA) protocol are no longer supported

Applications running under the .NET Framework 4.5 cannot connect to SQL Server databases using VIA

Andersherum wird eine .NET 4.5-Anwendung aber auch auf .NET 4.0 starten. Und das ist sehr bedenklich, denn die Anwendung wird dort nur einwandfrei laufen, wenn keine neuen Klassen oder Klassenmitglieder aus .NET 4.5 zum Einsatz kommen. Die Anwendung wird aber auf jeden Fall starten und erst mit einem Fehler abbrechen, wenn Klassen oder Klassenmitglieder aus .NET 4.5 aufgerufen werden. Es gibt aber zum Glück eine Einstellung in den Konfigurationsdateien, mit denen man erzwingen kann, dass die Anwendungen nur starten, wenn .NET 4.5 vorhanden ist. ACHTUNG Beim Anlegen von neuen .NET-Projekten in Visual Studio 2012 wird diese Einstellung automatisch in der Konfigurationsdatei abgelegt. Wenn Sie aber ein bestehendes Projekt in den Build-Eigenschaften des Projekts auf .NET 4.5 hochstufen, müssen Sie selbst für den Konfigurationseintrag sorgen!

Auch ist zu beachten, dass ein Eintrag Version=v4.0 nicht wirkt, um zu verhindern, dass eine .NET 4.0-Anwendung auf .NET 4.5 startet.

<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> … </configuration>

Listing 1.1 Konfigurationseinstellung mit der in einer app.config-Datei erzwungen wird, dass .NET 4.5 beim Start der Anwendung vorhanden sein muss

<?xml version="1.0"?> <configuration> <system.web> <compilation debug="false" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> …. </system.web> </configuration>

Listing 1.2 Konfigurationseinstellung mit der in einer web.config-Datei erzwungen wird, dass .NET 4.5 beim Start der Anwendung vorhanden sein muss

Im Programmcode kann man durch Prüfung der letzten Versionsstelle oder durch Prüfung auf Existenz einer der neuen Klassen in .NET 4.5 feststellen, ob die Anwendung unter .NET 4.5 läuft.

using System; namespace Konsole45.CLR45 { class Versionscheck

Page 27: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

26 Kapitel 1: Allgemeines zum .NET Framework 4.5

{ public static bool IsDotNet45() { return Environment.Version.Major == 4 && Environment.Version.Revision > 17000; } public static bool SupportsProfileOptimization() { // Die Klasse "System.Runtime.ProfileOptimization" exists rest ab .NET 4.5 return Type.GetType("System.Runtime.ProfileOptimization", false) != null; } } }

Listing 1.3 Feststellung der Versionsnummer im Programmcode

HINWEIS Da das .NET 4.5-Setup die Dateien von .NET 4.0 aktualisiert, müssen alle .NET 4.0-Anwendungen bei der Installation geschlossen werden. Gegebenenfalls fordert ein Dialog den Benutzer zum Schließen von Anwendungen auf. Ein Neustart ist erforderlich, wenn Anwendungen nicht geschlossen werden können.

Common Language Runtime (CLR) 4.5 Mit .NET Framework 4.5 liefert Microsoft auch eine neue Version der .NET-Laufzeitumgebung (Common Language Runtime – CLR) aus. An der Intermediate Language hat sich nichts geändert, sodass alle mit den .NET 4.5-Compilern übersetzten Anwendungen auch unter .NET 4.0 laufen, sofern keine neuen Klassen oder Klassenmitglieder aus .NET 4.5 genutzt werden. In der CLR 4.5 gibt es aber Änderungen bei der Just-in-time (JIT) Compilation und der Speicherverwaltung (Garbage Collector).

Verbesserungen bei der Speicherverwaltung Microsoft bietet die in .NET 4.0 für Client-Anwendungen eingeführte Background Garbage Collection nun auch für Serveranwendungen an. Zudem wurde die Verwaltung großer Objekte auf dem Heap optimiert.

Parallel JIT Compilation Auch die Just-in-time (JIT) Compilation findet nun auch parallel auf mehreren Prozessoren/Prozessorkernen statt (Parallel JIT Compilation alias Multi-Core-JIT – MCJ). Die folgende Abbildung zeigt das bisherige Ver-fahren im Vergleich zum neuen Verfahren. Das neue Verfahren ermöglicht einen schnelleren Anwendungs-start. Voraussetzung ist aber, dass ein so genanntes Optimierungsprofil existiert, in dem der Just-In-Time-Compiler Informationen erhält, welche Klassen zu Anwendungsstart benötigt werden. HINWEIS Die Parallel JIT Compilation arbeitet nur auf Systemen mit mehreren Prozessoren oder Prozessorkernen.

Page 28: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Common Language Runtime (CLR) 4.5 27

Abbildung 1.1 Parallel JIT Compilation

Ein Optimierungsprofil wird aufgezeichnet über die neue Klasse System.Runtime.ProfileOptimization. Der Entwickler einer Client-Anwendung muss selbst zu Anwendungsstart dafür sorgen, dass das Profil aufge-zeichnet wird. Die Profilaufzeichnung erfolgt in einer Binärdatei in einem beliebigen Verzeichnis. Im fol-genden Listing wird ein neuer Ordner ProfileOptimization unterhalb des aktuellen Anwendungsordners angelegt und dort eine Datei ProfileOptimization-Standard.bin abgelegt. Wenn das Profil existiert, wird es für die Optimierung verwendet, es wird aber auch parallel ein neues aufgezeichnet, das bei regulärem Anwendungsende geschrieben wird und das vorher vorhandene Profil überschreibt. Falls noch kein Profil existiert (z. B. beim ersten Anwendungsstart), findet keine parallele Just-in-Time Compilation statt; es wird aber ein Profil aufgezeichnet.

class Program { static void Main(string[] args) { Console.WriteLine("Hauptprogramm Start"); Console.WriteLine(".NET-Version: " + System.Environment.Version); string ProfilePath = System.IO.Path.Combine(System.Environment.CurrentDirectory,"ProfileOptimization"); if (!System.IO.Directory.Exists(ProfilePath)) System.IO.Directory.CreateDirectory(ProfilePath); System.Runtime.ProfileOptimization.SetProfileRoot(ProfilePath); System.Runtime.ProfileOptimization.StartProfile("ProfileOptimization-Standard.bin"); … }}

Listing 1.4 Aufzeichnung eines Optimierungsprofils bei Anwendungsstart

Page 29: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

28 Kapitel 1: Allgemeines zum .NET Framework 4.5

Abbildung 1.2 Ansicht einer Optimierungsprofildatei im HEX-Editor

TIPP Es können verschiedene Optimierungsprofile abgelegt werden. Das macht Sinn für verschiedene Startwege in einer Anwendung. Zudem kann man die Optimierungsprofile nicht nur bei Anwendungsstart, sondern auch jederzeit während des Anwendungsablaufs einsetzen, wenn der Just-in-Time-Compiler stark beansprucht wird. HINWEIS In IIS-basierten Serveranwendungen (ASP.NET 4.5/WCF 4.5) wird das Optimierungsprofil automatisch angelegt. Der Entwickler oder Betreiber muss hier nichts tun. Der Betreiber kann dies aber abschalten:

<compilation profileGuidedOptimizations="None" />

Aggressives Inlining Als Inline-Ersetzung (Inlining) bezeichnet man eine Optimierung von Compilern, bei denen Unterroutinen aufgelöst und in den Aufrufcode eingebettet werden, um die Ausführungsgeschwindigkeit zu steigern, weil Aufrufe von Unterroutinen kostspieliger sind. Microsoft hatte im Jahr 2004 einige Kriterien für Methoden verkündet, für die kein Inlining beim Just-In-Time-Compiler stattfindet (vgl. http://blogs.msdn.com/b/ davidnotario/archive/2004/11/01/250398.aspx). Dazu gehören zum Beispiel virtuelle Methoden sowie Methoden, die in der Intermediate Language länger als 32 Bytes sind. Zumindest dieses Längenkriterium kann man nun mit der Annotation

[MethodImpl(MethodImplOptions.AggressiveInlining)]

Page 30: Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim ...download.e-bookshelf.de/download/0002/2403/28/L-G-0002240328... · TPL Dataflow (TDF)..... 112 Akteure und Datenflüsse mit

Änderungen bei der Native Image Generation 29

die man auf einer Methode vergeben kann, außer Kraft setzen.

class InliningDemo { public static void run() { KleineMethode(10, 20); GrosseMethode(10, 20); } public static int KleineMethode(int i, int j) { if (i > j) return i + j; else return i + 2 * j - 1; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int GrosseMethode(int i, int j) { if (i + 14 > j) { return i + j; } else if (j * 12 < i) { return 42 + i - j * 7; } else { return i % 14 - j; } } }

Listing 1.5 Beispiel für das erzwungene Inlining größerer Methoden

Änderungen bei der Native Image Generation Bisher wurden für alle .NET Framework-Assemblys zwei Fassungen abgelegt: Die Fassung in Intermediate Language (IL) und die Fassung als Native Image in Native Code. Microsoft hat sich nun (unter Windows 8 und Windows Server 2012!) entschlossen, Festplattenplatz zu sparen. In .NET 4.5 wird nur noch ein Teil der Assemblys, die häufig verwendet werden, auch als Native Image abgelegt. Microsoft nennt diesen Teil den »Frequent Set«. Zudem zeichnet .NET nun die Verwendungshäufigkeit der übrigen Assemblys auf (Assembly Usage Logs) in .log-Dateien im Ordner C:\Users\(Name)\AppData\Local\Microsoft\CLR_v4.0\UsageLogs. Auf dieser Basis übersetzt dann der NGen Automatic Maintenance Task weitere Assemblys (Auto NGEN). Ebenso werden auch Native Images selten verwendeter Assembly gelöscht (Reclaiming Native Images).