Click here to load reader

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

  • View
    219

  • Download
    5

Embed Size (px)

Text of Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim...

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

    Microsoft .NET 4.5 Update

  • 3

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

    Microsoft .NET 4.5 Update

  • Dr. Holger Schwichtenberg, Manfred Steyer, Dr. Joachim Fuchs: Microsoft .NET 4.5 Update Copyright 2013 by OReilly 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 erwhnten Software- und Hardware-bezeichnungen sind in den meisten Fllen auch eingetragene Marken und unterliegen als solche den gesetz-lichen Bestimmungen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk, einschlielich aller Teile, ist urheberrechtlich geschtzt. Jede Verwertung auerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulssig und strafbar. Das gilt ins-besondere fr Vervielfltigungen, bersetzungen, Mikroverfilmungen und die Einspeicherung und Ver-arbeitung in elektronischen Systemen. Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten, Domnen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei erfunden, soweit nichts anderes angegeben ist. Jede hnlichkeit mit tatschlichen Firmen, Organisationen, Produkten, Domnen, Personen, Orten, Ereignissen, E-Mail-Adressen und Logos ist rein zufllig.

    Kommentare und Fragen knnen Sie gerne an uns richten: Microsoft Press Deutschland Konrad-Zuse-Strae 1 85716 Unterschleiheim 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 OReilly Verlag GmbH & Co. KG Balthasarstrae 81, 50670 Kln 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: Ksel, Krugzell (www.KoeselBuch.de)

  • 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 fr .NET 4.5....................................................................................... 20

    1 Allgemeines zum .NET Framework 4.5....................................................................................... 23 Untersttzte 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 Vierteljhrliche Updates....................................................................................................................... 39 Neues Design fr 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 geffneten 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

  • 6 Inhaltsverzeichnis

    JavaScript-Editor .................................................................................................................................. 62 Standardinhalt eines Webprojekts...................................................................................................... 63 IIS Express ............................................................................................................................................. 65 Web Publishing Profiles....................................................................................................................... 67 Datenwerkzeuge.................................................................................................................................... 68 XAML-Designer fr 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 Namensrumen.................................................................................................. 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 Datenflsse mit TDF implementieren ................................................................ 112 berblick zu Datenfluss-Blcken ............................................................................................... 116 Datenfluss-Blcke 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

  • Inhaltsverzeichnis 7

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

    Einfhrung 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 fr Change-Tracking und Lazy Loading ...................................................................... 145 Weitere Mglichkeiten mit DbContext und DbSet .................................................................. 145 Change-Tracking bei getrennten Entitten ............................................................................... 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 Untersttzung fr 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 prfen ......................................................................................................... 172 Claims in Service-Methoden verwenden ................................................................................... 173 Szenario testen................................................................................................................................ 174

    Delegation implementieren ................................................................................................................. 175 STS fr Delegation einrichten...................................................................................................... 175 FlugBuchungsService aufrufen .................................................................................................... 178 Testen des Szenarios...................................................................................................................... 179

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

  • 8 Inhaltsverzeichnis

    Windows Identity Foundation und ASP.NET .................................................................................. 181 Konfigurieren von ASP.NET-Projekten fr den Einsatz mit WIF ........................................ 181 Programmatisches Anfordern einer Anmeldung..................................................................... 182 Session-Cookie fr Claims erstellen ........................................................................................... 183 Gegen Claims mit ClaimsAuthorizationManager prfen....................................................... 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 frs 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 fr 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 Gre ........................................................................................ 230 Konsolenanwendungen ....................................................................................................................... 230 Netzwerk................................................................................................................................................ 231 Regulre Ausdrcke ............................................................................................................................. 232 Assembly-Metadaten ........................................................................................................................... 233 Standardspracheinstellung fr Threads ............................................................................................ 234 ExceptionDispatchInfo ........................................................................................................................ 234 Weitere Neuerungen ............................................................................................................................ 236

  • Inhaltsverzeichnis 9

    11 Windows-Runtime (WinRT) .......................................................................................................... 237 Windows 8 ............................................................................................................................................. 238 Programmieren fr 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: Gerteinformationen 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 Inkompatibilitten ......................................................................................................................... 252 Fragmentierung der .NET-Welt .................................................................................................. 254 WinRT ist nur fr Windows 8 verfgbar ................................................................................... 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-Oberflchentechniken ................................................................................................ 258 Nicht-visuelle ASP.NET-Techniken ........................................................................................... 260

    Installation von ASP.NET 4.5 .............................................................................................................. 260 Verbesserungen fr HTML5 ............................................................................................................... 262

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

    Typisierte Datenbindungsausdrcke.................................................................................................. 265 Model Binding (ein neues Datenbindungsverfahren) ..................................................................... 266

    Datenbindungsverfahren in ASP.NET Web Forms 4.5 ........................................................... 266 Einfhrung 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 Anfrageprfung................................................................................................. 291 Weitere nderungen in Krze............................................................................................................. 291

  • 10 Inhaltsverzeichnis

    13 ASP.NET MVC 4 .............................................................................................................................. 293 Untersttzung fr mobile Anwendungen ......................................................................................... 294

    Vorlagen fr mobile Anwendungen........................................................................................... 294 Auswhlen einer passenden View............................................................................................... 296 Seiten fr Mobile und Klassische Endgerte ............................................................................. 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 Rckgabewerte ................................................................................................... 311 REST-Services konfigurieren....................................................................................................... 312 REST-Services mit Fiddler testen................................................................................................ 313

    Mehr Kontrolle ber HTTP-Nachrichten......................................................................................... 315 REST-Services ber HttpClient konsumieren.................................................................................. 318 Weiterfhrende 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 untersttzen.................................................................................. 326 Formatter mit HttpClient verwenden ........................................................................................ 328

    Web-APIs ohne IIS verwenden .......................................................................................................... 329 Self-Hosting konfigurieren .......................................................................................................... 329 SSL fr Web-API ohne IIS ........................................................................................................... 330

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

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

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

  • 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 Bindungsausdrcken abrufen ............................................................... 355 Validierung von Benutzereingaben mittels INotifyDataErrorInfo ................................................ 356 CollectionViewSource Live Shaping .................................................................................................. 360 Neue Eigenschaften des VirtualizingStackPanels ............................................................................. 362 Thread-Synchronisation von Collections.......................................................................................... 363 Weitere Ergnzungen ........................................................................................................................... 364

    MarkupExtension fr 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 fr 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

  • 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 Vorgngerversionen voraus. Das Buch stellt Neuerungen in .NET Framework 4.5 und Visual Studio 2012 Professional gegenber 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 verfgbar.

    Zielsetzung des Buchs

    Zielsetzung dieses Buchs ist es, Ihnen einen schnellen berblick ber die wesentlichen Neuerungen zu geben. Wir werden sie an ausgewhlten Stellen vertiefen.

    Themeneinschrnkungen

    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

  • 14 Vorwort

    Entwicklung fr mobile Gerte wie Windows Phone SharePoint-Entwicklung Entwicklung von Microsoft Office-Erweiterungen mit Visual Studio Tools for Office Entwicklung von Cloud-Anwendungen

    Vollstndigkeit

    Das Buch kann leider keinen Anspruch auf Vollstndigkeit hinsichtlich der Neuerungen erheben. Dies hat drei Grnde: 1. Es gibt viel mehr Neuerungen, als wir auf der vom Verlag vorgegebenen Seitenanzahl dieses Buchs

    berhaupt niederschreiben knnten. 2. Es gibt nirgendwo (auch nicht auf Nachfrage bei Microsoft) eine vollstndige Liste aller Neuerungen. 3. Die Seitenzahl fr dieses Buch ist durch den Verlag begrenzt.

    Quellen

    Die in diesem Buch dargestellten Neuerungen basieren auf folgenden Quellen:

    Whats New-Listen in der Visual Studio 2012-Dokumentation Eintrge in Weblogs der Produktteams Eigenes Ausprobieren ab der Developer Preview-Version Produktiver Einsatz in Softwareentwicklungsprojekten ab der RTM-Version

    Verwendete Programmiersprache

    Fr dieses Buch gab es nur die Mglichkeit, die beiden primren .NET-Sprachen (C# und Visual Basic .NET) in einem einzigen Buch zu mischen. Primr 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, mchten 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 zugehrige SDK sowie die Express-Editionen der Entwicklungsumgebung Visual Studio 2012 sind kostenlos auf der Microsoft Website verfgbar.

    Sprachversion

    Dieses Buch beschreibt die englische Version von Visual Studio, weil inzwischen viele deutsche Entwickler (einschlielich der Autoren) die englische Version der Software eindeutig bevorzugen, da die bersetzun-gen ins Deutsche oft holprig sind und die Fehlermeldungen nur schwerer verstndlich machen. Als Kom-promiss zwischen dem Kundenkreis mit englischsprachiger und deutschsprachiger Entwicklungsumgebung wird dieses Buch so oft es mglich ist, ohne den Lesefluss zu stren sowohl die deutschen als auch die englischen Namen der Menpunkte nennen. Die Bildschirmabbildungen sind aus Platzgrnden allerdings immer nur in einer Sprache abgedruckt.

  • Vorwort 15

    Weiterhin mchten wir noch darauf hinweisen, dass die Anordnung der Mens und auch einige Tastatur-krzel von den gewhlten Einstellungen in Visual Studio abhngen. Alle Ausfhrungen in diesem Buch beziehen sich auf die Umgebungseinstellung Common Settings, die bei der Installation des Produkts ausge-whlt werden kann.

    Danksagungen

    Unseren Dank fr ihre Mitwirkung an diesem Buch mchten wir aussprechen an

    unsere Familienangehrigen, 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-fhigkeit geprft 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 wnschen Ihnen Dr. Holger Schwichtenberg, Manfred Steyer und Dr. Joachim Fuchs Essen, Graz und Whiel, im Oktober 2012

  • 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 fr .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 gehren neben vielen mittelstndischen Unternehmen auch Grounternehmen 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.

  • Vorwort 17

    ber den Autor Dr. Holger Schwichtenberg Studienabschluss Diplom-Wirtschaftsinformatik an der Universitt Essen Promotion an der Universitt Essen im Gebiet komponentenbasierter Soft-

    wareentwicklung

    Seit 1996 selbststndig als unabhngiger Berater, Dozent, Softwarearchitekt und Fachjournalist

    Geschftsfhrung und Leitung der Softwareentwicklung bei www.IT-Visions.de Mehr als 40 Fachbcher bei Microsoft Press, Addison-Wesley und dem Carl

    Hanser-Verlag und mehr als 500 Beitrge in Fachzeitschriften

    Gutachter in den Wettbewerbsverfahren der EU gegen Microsoft (20062009) Stndiger Mitarbeiter der Zeitschriften iX (seit 1999), dotnetpro (seit 2000) und Windows Developer

    (seit 2010) sowie beim Online-Portal heise.de (seit 2008).

    Regelmiger 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 Einfhrung 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-Ttigkeiten: Vortragender fr 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

  • 18 Vorwort

    ber den Autor Manfred Steyer Manfred Steyer ist Trainer und Berater bei www.IT-Visions.de sowie verantwortlich fr den Fachbereich Software Engineering der Studien-richtung IT und Wirtschaftsinformatik an der FH CAMPUS 02 in Graz. Er schreibt fr 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 groen Applika-tionen zurckblicken. Er ist ausgebildeter Trainer fr den Bereich der Erwachsenenbildung und spricht regelmig auf Fachkonferenzen. In der Vergangenheit war Manfred Steyer mehrere Jahre fr ein groes sterreichisches Systemhaus ttig. In der Rolle als Bereichsleiter hat er gemeinsam mit seinem Team Geschftsanwendungen konzipiert und umgesetzt. Sein Weblog errreichen Sie unter www.softwarearchitect.at Seine E-Mail-Adresse lautet [email protected]

  • Vorwort 19

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

    Informatik an der RWTH Aachen

    Promotion am Laboratorium fr Werkzeugmaschinen und Betriebslehre der RWTH Aachen

    Seit 1995 selbststndig als Softwareentwickler, Berater, Dozent und Fach-journalist

    Fachbcher 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 Einfhrung von .NET Framework und Visual Studio / Migration auf .NET Windows Forms XAML Windows Presentation Foundation (WPF) Mirosoft Silverlight Windows Store-Apps

    Kontakt: [email protected]

  • 20 Vorwort

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

    Downloads Sie knnen alle in diesem Buch vorgestellten Codebeispiele hier herunterladen Diskussionsrunde Ein webbasiertes Forum bietet die Mglichkeit, 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 jhrlich einen Newsletter mit aktuellen Terminen und Publikationshinweisen

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

    Errata Trotz eines jahrelang erprobten Vorgehensmodells und der dreifachen Qualittskontrolle (Co-Autor, Fachlektor, Verlag) ist es mglich, dass sich einzelne Fehler in dieses Buch eingeschlichen haben. Im Webportal knnen Sie nachlesen, welche Fehler gefunden wurden. Sie knnen hier auch selbst Fehler melden, die Ihnen auffallen.

    Zugang zum Leser-Portal

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

    Ihre Entwicklungsumgebung fr .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 hher, Englische Version 3. Microsoft SQL Server 2012 Express oder hher, Englische Version TIPP Wenn Sie Visual Studio 2012 Professional (oder hher) 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).

  • 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 grere Bausteine, die aus Visual Studio heraus-gebrochen wurden und jeweils fr 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 drfen ohne Gebhren unbegrenzt verwendet werden. Es existieren derzeit die in nachfolgender Tabelle genannten Express-Editionen. Die Express-Editionen reichen fr die wichtigs-ten Anwendungstypen aus. Es gibt keine Express-Editionen fr 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 hher

    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 Platzgrnden nicht explizit die Unterschiede zwischen Express-Variante und den kommerziellen Varianten beschrieben werden knnen.

    Installation der Express-Editionen Sie knnen 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 mglich. Diese Integration hat Microsoft den kuflich 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 mssen nach 30 Tagen zwingend bei Microsoft registriert werden.

  • 23

    Kapitel 1

    Allgemeines zum .NET Framework 4.5

    In diesem Kapitel: Untersttzte 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

  • 24 Kapitel 1: Allgemeines zum .NET Framework 4.5

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

    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 mglich. 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 zuschlgt, die Microsoft in .NET 4.5 eingebaut hat. Die Liste ist recht lang und kann hier aus Platzgrnden nicht vollstndig wiedergegeben werden (http://msdn.microsoft.com/ en-us/library/hh367887(v=vs.110).aspx). Es sei nur ein Beispiel zitiert:

  • 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 Glck 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, mssen Sie selbst fr 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.

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

    .

    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 Prfung der letzten Versionsstelle oder durch Prfung auf Existenz einer der neuen Klassen in .NET 4.5 feststellen, ob die Anwendung unter .NET 4.5 luft.

    using System; namespace Konsole45.CLR45 { class Versionscheck

  • 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, mssen alle .NET 4.0-Anwendungen bei der Installation geschlossen werden. Gegebenenfalls fordert ein Dialog den Benutzer zum Schlieen von Anwendungen auf. Ein Neustart ist erforderlich, wenn Anwendungen nicht geschlossen werden knnen.

    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 gendert, 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 fr Client-Anwendungen eingefhrte Background Garbage Collection nun auch fr Serveranwendungen an. Zudem wurde die Verwaltung groer 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 ermglicht einen schnelleren Anwendungs-start. Voraussetzung ist aber, dass ein so genanntes Optimierungsprofil existiert, in dem der Just-In-Time-Compiler Informationen erhlt, welche Klassen zu Anwendungsstart bentigt werden. HINWEIS Die Parallel JIT Compilation arbeitet nur auf Systemen mit mehreren Prozessoren oder Prozessorkernen.

  • 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 dafr sorgen, dass das Profil aufge-zeichnet wird. Die Profilaufzeichnung erfolgt in einer Binrdatei 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 fr die Optimierung verwendet, es wird aber auch parallel ein neues aufgezeichnet, das bei regulrem 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

  • 28 Kapitel 1: Allgemeines zum .NET Framework 4.5

    Abbildung 1.2 Ansicht einer Optimierungsprofildatei im HEX-Editor

    TIPP Es knnen verschiedene Optimierungsprofile abgelegt werden. Das macht Sinn fr verschiedene Startwege in einer Anwendung. Zudem kann man die Optimierungsprofile nicht nur bei Anwendungsstart, sondern auch jederzeit whrend 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:

    Aggressives Inlining Als Inline-Ersetzung (Inlining) bezeichnet man eine Optimierung von Compilern, bei denen Unterroutinen aufgelst und in den Aufrufcode eingebettet werden, um die Ausfhrungsgeschwindigkeit zu steigern, weil Aufrufe von Unterroutinen kostspieliger sind. Microsoft hatte im Jahr 2004 einige Kriterien fr Methoden verkndet, fr die kein Inlining beim Just-In-Time-Compiler stattfindet (vgl. http://blogs.msdn.com/b/ davidnotario/archive/2004/11/01/250398.aspx). Dazu gehren zum Beispiel virtuelle Methoden sowie Methoden, die in der Intermediate Language lnger als 32 Bytes sind. Zumindest dieses Lngenkriterium kann man nun mit der Annotation

    [MethodImpl(MethodImplOptions.AggressiveInlining)]

  • nderungen bei der Native Image Generation 29

    die man auf einer Methode vergeben kann, auer 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 fr das erzwungene Inlining grerer Methoden

    nderungen bei der Native Image Generation Bisher wurden fr 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 hufig verwendet werden, auch als Native Image abgelegt. Microsoft nennt diesen Teil den Frequent Set. Zudem zeichnet .NET nun die Verwendungshufigkeit 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 gelscht (Reclaiming Native Images).