23
Dr. Holger Schwichtenberg Microsoft •NET 4.0 - Crashkurs

Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Dr. Holger Schwichtenberg

Microsoft•NET 4.0 - Crashkurs

Page 2: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Vorwort 29Über den Autor Dr. Holger Schwichtenberg 34Leserservice 35Themeneinschränkungen 35Ihre Entwicklungsumgebung für .NET 37Hinweise zu den Listings 38

1 Einführung 41Wasist.NET? 42

Definition 42Zielevon.NET 42Vielfaltvon.NET 43Verbreitung und Akzeptanz von .NET 45Technische Merkmale des .NET Framework 47

Bausteine des .NET Framework 48Blickwinkel 1: Anwendungstypen 48Blickwinkel 2: Funktionsbereiche 49Blickwinkel 3: Aufteilung nach Schichten 51

Standardisierung bei ECMA und ISO 54Plattformen 55

Microsoft .NET Framework 56Silverlight 57ECMA SSCLI (Rotor) 58Novell Mono 58

Geschichte und Versionen 59.NET 1.x 60.NET 2.0 (Whidbey) 60.NET 3.0 (WinFX) 61Erweiterungen zu .NET 2.0/3.0 62.NET 3.5 (Orcas) 62Service Pack 1 für .NET 3.5 62.NET 4.0 63

Produkte und Installationspakete 64Notwendige Produkte 65Optionale Produkte 65.NET Framework Redistributable 67

Page 3: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

.NET Framework Client Profile 67J# Redistributable : 67.NET Framework Software Development Kit (.NET SDK) und Windows SDK(WinSDK) 68Visual Studio 68Visual Studio Ultimate und Team Foundation Server (TFS) (früher: Visual StudioTeam System (VSTS)) 68Weitere Werkzeuge 69

Entscheidung zwischen der deutschen und der englischen Version 70Installation 74

Betriebssysteme, die bereits .NET enthalten 74Installation des .NET Framework 4.0 Redistributable 74.NET Software Development Kit (SDK) 76Installation von Visual Studio 2010 77

World Wide Wings - Das mehrschichtige .NET 4.0-Fallbeispiel in diesem Buch 79Einleitung 80Download 80Szenario 80Wichtige Hinweise 83Datenmodell 84

Das ältere Datenmodell (Datenbankschema-Version 4) 84Das neuere Datenmodell (Datenbankschema-Version 6) 85

Mehrschichtarchitektur 87Projekte und Projektmappen 89Softwarevoraussetzungen für das Fallbeispiel 94Installation und Konfiguration 95Mögliche Fehler 95Fragen zu diesem Fallbeispiel 95

Ihre ersten drei .NET 4.0-Anwendungen 97Motivation 98Erstellung einer Konsolenanwendung.. 98

Ziel 98Lösung 98

Erstellung einer Webanwendung mit Datenbankzugriff 99Ziel 100Lösung 100Erweiterung des Beispiels 102Schritte für die Erweiterung 102

Erstellung einer Windows-Anwendung mit Webservice-Zugriff 104Ziel 104Lösung 105

Page 4: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Grundkonzepte des .NET Framework 4.0 107Zwischensprache 108

Native Code versus Managed Code 108Just-in-Time-Compiler 109Die CIL-Sprache 109Decompiler 110Obfuskatoren 110Secure Virtual Machine (SVM) 110

Laufzeitumgebung 111Common Language Runtime (CLR) 111.NET Runtime Host 112

Programmiersprachen '. 112Sprachen von Microsoft 115Das Korsett von CTS und CLS 116

Objektorientierung 118Referenztypen 119Wertetypen (Strukturen) 121Typnamen und Namensräume (Namespaces) 122Neuheiten im Typkonzept seit .NET 2.0 124Dynamic Language Runtime (DLR) ab .NET 4.0 126

.NET-Klassenbibliothek (FCL) 127Umfang der Klassenbibliothek 127Implementierung der FCL 127Namensräume 128FCL versus BCL 133

Softwarekomponentenkonzept 133Der Softwarekomponentenbegriff in .NET Framework 133Aufbau von Assemblys 135Signierte Assemblys : 136Befreundete Assemblys (Friend Assemblies) 138Speicherorte für Assemblys 138Metadaten 139Komponentenkonfiguration 140Assembly- Referenzen 141

Verbreitung und Installation von .NET-Anwendungen 143XCopy-Installation 143Microsoft Windows Installer (MSI) 144Kommandozeilenwerkzeuge 144GUI-Werkzeuge 145No-Touch-Deployment (NTD) 145Click-Once-Deployment (COD) 145

Weitere Fähigkeiten der Laufzeitumgebung 146Speicherbereinigung (Garbage Collector) 146Prozessabgrenzung durch Application Domains 146

Page 5: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

10 Inhaltsverzeichnis

Sicherheit (Code Access Security) 148Security Transparency in .NET 4.0 153

Interoperabilität 153Interoperabilität zu klassischen C-Bibliotheken 153Interoperabilität zu COM 153Interoperabilität zu anderen Komponentenplattformen 154

.NET auf 64-Bit-Systemen 155.NET auf 64-Bit-Systemen: Entscheidungsdiagramm 156.NET auf 64-Bit-Systemen: Datentypen 157.NET auf 64-Bit-Systemen: Leistung 157

Versionskompatibilität 159Entkopplung der Versionsnummern 159Inkompatibilitäten zwischen den Versionen 160Parallelbetrieb 161Versionsumstieg 162Weiterbetreiben mit der alten CLR 162Betreiben mit einer neuen CLR 163Neukompilierung 165Ermitteln der CLR-Version 165Visual Studio-Kompatibilität 166

5 Visual Studio 2010 167Einleitung 169Versionsgeschichte 169Erweiterungen für Visual Studio 2010 169Grundfunktionen 170Neuerungen in der Entwicklungsumgebung Visual Studio in Version 2010 171Neuerungen in der Entwicklungsumgebung Visual Studio in Version 2010 mit ProductivityPower Tools 172Produktvarianten 172

Visual Studio Test Professional 2010 und Microsoft Test Manager 2010 172Vergleichstabelle 173Express-Editionen 175Preise für Visual Studio 2010 176

WPF-Oberfläche 177Geschwindigkeit 177Oberflächlich wenig Neues 177

Fensterverwaltung 177Fenstermodi 178Verbesserungen der Registerkartenverwaltung (engl. Tab Well) 180

Programmiersprachen 182

Page 6: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Projektverwaltung 183Projektvorlagen 183Multi-Targeting 185Beschränkung auf das .NET Framework Client Profile 187Projektmappen 188Projektelemente 190Ordnerstruktur 192Projekteigenschaften 192Verweise (Komponenten- und Projektreferenzen) 194Speichern und AutoWiederherstellung 196

Projektkonvertierung (Migration) 197Konvertierungsassistent 197Erfahrungen 198

Code-Editoren 200Farbdarstellung 200Hervorheben der aktuellen Zeile durch grauen Balken 201Änderungsverfolgung 201Zeilennummern und Zeilenumbruch 201Änderung der Schriftgrößen durch Mausrad 201Auswahlfunktionen 201Angleichen von Zuweisungen 202Verschieben einer Auswahl mit Cursortasten 203IntelliSense-Funktionen 203Blockvervollständigung 205Generierung von bisher nicht deklarierten Klassen und Klassenmitgliedern bei ihrerersten Verwendung 205Codebibliothek (Code Snippets) 206Coderegionen 207Refactoring (Umgestalten) 208Codeformatierung 210Kommentare 210Suchfunktion 210Aufrufhierarchie und Sequenzdiagramme 211Vertikale Hilfslinien (Editor Guidelines) 212Hintergrundkompilierung 213XML-Editor 214

Grafische Editoren (Designer) 215Designer für Windows Forms, WPF und Webforms 216Werkzeugleiste 217Designer für nichtvisuelle Komponenten 218XSD-Designer 218Designer für Workflows 220

Page 7: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Weitere Fenster 220Aufgabenliste 220Suche über Visual Studio-Funktionen 221Codedefinitionsfenster (Code Definition Window) 221Server Explorer 221Objektbrowser und Klassenansicht (Object Browser/Class View) 223

Modellierung 225Designer für Klassendiagramme (seit Visual Studio 2005) 225UML-Diagramme in Visual Studio 2010 226Oslo, »M« und Quadrant 228

Architektur- und Codeanalyse 228Statische Codeanalyse 228Code-Kennzahlen 230Architecture Explorer 230

Arbeit mit Datenbanken 231Datenverbindungen (Data Connections) 231T-SQL-Editor 232Datenquellen (Data Sources) 233Objektrelationales-Mapping-Designer 236Datenbankverwaltungswerkzeuge 236

Kompilierung und Ausführung 241Übersetzungskonfigurationen 241Fehlerliste 241Microsoft Build (MSBuild) 243

Debugger 243Start des Debuggers 243Setzen eines Haltepunktes 244Funktionen im Haltemodus 244Bearbeiten und Fortsetzen (Edit & Continue) 245Steuerung der Debugger-Anzeige 246Direktfenster (Intermediate Window) 248Objekttestcenter (Object Test Bench, OTB) 248Debugging des Quellcodes des .NET Framework 249IntelliTrace 252Einschränkungen auf 64-Bit-Systemen 254XSLT-Debugging 254

Testen 255Testarten 255Testprojekte 256Unit Tests erstellen 256Aufbau eines Unit Tests 257Weitere Möglichkeiten für Unit Tests 259Testausführung 261Datengetriebene Tests 262

Page 8: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Testabdeckung (Code Coverage) 264Webtests 265Testwirkungsanalyse (Test Impact Analysis) 267Oberflächentests (UI Tests) 269Datenbanktests 272Leistungsmessung 273Test Suite Manager 275

Verbreiten von Anwendungen (Deployment) 275Erstellen von MSI-Paketen 276

ClickOnce-Deployment 279Verbreiten von Webanwendung/Webservices mit dem IIS Web Deployment Tool 281

Nutzung des Team Foundation Server (TFS) 291Funktionsüberblick 291

Team Explorer und Source Control Explorer 293Tätigkeitsverwaltung (Work Items) 293Quellcodeverwaltung 294Automatische Kompilierungsvorgänge (Continuous Integration) 296Benachrichtigungen 297Installation und Lizensierung 298

Erweiterbarkeit 299Extension Manager 299Erweiterungsstrategie bei Microsoft 301Qualitätsstufen 301

Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303Einleitung 305Überblick über die Neuerungen 305Allgemeines zu Visual Basic (.NET) 2010 306Allgemeines zu C# 2010 309Compiler 310

C#-Compiler 311Visual Basic .NET-Compiler 311

Datentypen 313Datentypen in VB 313Notwendigkeit der Typisierung 314XML-Literale in VB 314Datentypen in C# 315Lokale Typableitung (Local Variable Type Inference) 316Dynamische Typisierung 317Typkonvertierung 319Typkonvertierung in VB 319Typinitialisierung 320Wertelose Wertetypen (Nullable Types) 321Null, Nothing und default 324

Page 9: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Operatoren 324Operatoren in VB 324Operatoren in C# 325

Klassendefinition 327Klassendefinitionen in VB 328Klassendefinitionen in C# 328Sichtbarkeiten / Zugriffsmodifizierer 328

Felder (Field-Attribute) 329Felder in VB 329Felder in C# 329

Eigenschaften (Property-Attribute) 329Eigenschaften in VB 330Eigenschaften in C# 331

Methoden 331Methoden in VB 332Methoden in C# 333

Erweiterungsmethoden (Extension Methods) 335Definition von Erweiterungsmethoden in VB 335Definition von Erweiterungsmethoden in C# 336

Konstruktoren und Destruktoren 337Konstruktoren und Destruktoren in VB 337Konstruktoren und Destruktoren in C# 338

Objektinitialisierung 338Beispiel für eine Klasse mit diversen Mitgliedern 339Generische Klassen 340

Definition generischer Klassen in VB 340Definition generischer Klassen in C# 340Verwendung generischer Klassen in VB 341Verwendung generischer Klassen in C# 341Einschränkungen für generische Typparameter (Generic Constraints) 342Ko- und Kontravarianz 343

Objektmengen 346Einfache Arrays 346Objektmengen (untypisiert und typisiert) 347

Partielle Klassen 348Partielle Klassen in VB 348Partielle Klassen in C# 349

Partielle Methoden 349Partielle Methoden in VB .: 349Partielle Methoden in C# 350

Anonyme Typen 351

Page 10: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis 15

Implementierungsvererbung 352Vererbung in VB 352Vererbung in C# 355

Ereignisse 356Ereignisse in VB 356Ereignisse in C# 357

Schnittstellen (Interfaces) 358Schnittstellen in VB 358Schnittstellen in C# 359

Namensräume (Namespaces) 359Namensräume deklarieren 360Import von Namensräumen 360Verweis auf Wurzelnamensräume 361

Operatorüberladung 362Operatorüberladung in VB 362Operatorüberladung in C# 363

Schleifen :.. 363Schleifen in VB 364Schleifen in C# 364Iterator-Implementierung mit Yield (Yield Continuations) 365

Verzweigungen 367Verzweigungen in VB 367Verzweigungen in C# 368

Funktionszeiger (Delegates) 368Funktionszeiger in VB 368Funktionszeiger in C# 369

Funktionale Programmierung mit Lambda-Ausdrücken 370Lambda-Ausdrücke in VB 371Lambda-Ausdrücke in C# 372

Annotationen (.NET-Attribute) 373Annotationen in VB 374Annotationen in C# 374

Fehlerbehandlung 374Fehlerbehandlung VB 374Fehlerbehandlung in C# '. 375

Eingebaute Objekte und Funktionen 376Eingebaute Objekte und Funktionen in VB 376Eingebaute Objekte und Funktionen in C# 377

Kommentare und XML-Dokumentation 377Kommentare in VB 377Kommentare in C# 378

Zeigerprogrammierung (Unsicherer Code) 378Abfrageausdrücke/Language Integrated Query (LINQ) 379

Page 11: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

16 Inhaltsverzeichnis

Vergleich: C# 2010 versus Visual Basic (.NET) 2010 379Vergleichstabelle 380Marktindikatoren 381Honorare 383Die Meinung des Autors 383

7 Konsolenanwendungen 385Einführung 386Erzeugen einer Konsolenanwendung 386Konsolenanwendungen in Visual Studio 387Klasse System.Console 388

Write() und WriteLine() 389Read() und ReadLine() 389

Klasse System.Environment 390Neuerungen seit .NET 2.0 390

8 Softwarekomponenten 393Komponententypen 394Erstellung von nichtvisuellen Komponenten 396Festlegung von Assembly-Eigenschaften 399Erstellung einer signierten Assembly 400Erstellung einer gemeinsamen Assembly 401Befreundete Assemblys 402Interoperabilität mit COM 402

Zugriffvon.NET auf COM 403Zugriff von COM auf .NET 403

Konfiguration von Assemblys 404

9 .NET-Klassenbibliothek 4.0 407Einleitung 408System 408

System.Object 409System.Console 412System.Type 412Elementare Datentypen 415Verzögertes Instanziieren mit System.Lazy 417System.Tupel 419

System.Collections 420System.IO 421

Neuheiten seit .NET 2.0 421Neuheiten seit .NET 3.0 422Neuheiten seit .NET 3.5 422Neuheiten seit .NET 4.0 422

Page 12: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis 17

Dateisystem 423Dateiinhalte 425Kommunikation über Pipes (System.IO.Pipes) 427

System.Configuration 429Neuheiten seit .NET 2.0 429ConfigurationManager 429Verschlüsselte Sektionen 430Anwendungseinstellungen (Application Settings) 433Nutzung der Anwendungseinstellung 434

System.Diagnostics 435Prozesse 435Ereignisprotokolle 438

System.Net 440Neuheiten seit .NET 2.0 440Neuheiten seit .NET 3.5 440Neuheiten seit .NET 4.0 440HTTP-und FTP-Unterstützung 441System.Net.Networklnformation 443Netzwerkstatus 444System.Net.Mail und System.Net.Mime 445

System.Text 446Textcodierung 446Reguläre Ausdrücke 447

Serialisierung 448Serialisierer 448Einsatz der Serialisierer 451Serialisierbarkeit 453Vergleich der Serialisierer 458

System.DirectoryServices 464Allgemeines Objektmodell 464Objektmodell für die Suche 466System.DirectoryServices.ActiveDirectory 467System.DirectoryServices.Protocol 468System.DirectoryService.AccountManagement 468

System.Management 473System.Resources 475

Erstellung von Ressourcendateien 476Zugriff auf Ressourcendateien 476Streng typisierte Ressourcen 478

Managed Extensibility Framework (MEF) 478Überblick 479Imports 481Import in Felder und Konstruktorargumente 483Verzögerter Import 484

Page 13: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Exports 484Metadaten 486Kataloge 489Fazit zu MEF 491

System.Security 492System.Security.SecureString 493System.Security .AccessControl.* 494

System.Runtime.Caching 499

10 Language Integrated Query (LINQ) 501Einführung und Motivation 502LINQ-Provider 503

LINQ-Provider von Microsoft im .NET Framework 503Andere LINQ-Provider 503Formen von LINQ 505Einführung in die LINQ-Syntax 505Übersicht über die LINQ-Befehle 510

LINQ to Objects 514LINQ to Objects mit elementaren Datentypen 514LINQ to Objects mit komplexen Typen des .NET Framework 519LINQ to Objects mit eigenen Geschäftsobjekten 523

Parallel LINQ (PLINQ) 527LINQ to XML 529LINQ to DataSet 529LINQ to SQL 530LINQ to Entities 530LINQ to DataServices 530

11 Datenzugriff mit ADO.NET 531Einführung 532ADOversusADO.NET 532BasisfunktionsumfangvonADO.NET 1.0/1.1 533Neuerungen in ADO.NET 2.0 im Überblick 533Neuerungen in ADO.NET 3.x im Überblick 535Neuerungen in ADO.NET 4.0 im Überblick 535Die ADO.NET-Architektur 535

Providermodell 536Datenprovider von Microsoft 536Datenprovider von anderen Herstellern 537Ermittlung der installierten Datenprovider 537Der Weg der Daten von der Datenquelle bis zum Verbraucher 538Datareader versus DataSet 539

Page 14: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis

Datenbankverbindungen (Connection) 541Verbindungen aufbauen und schließen 541Verbindungspooling 541

Verbindungszeichenfolgen zusammensetzen mit dem ConnectionStringBuilder 542Verbindungszeichenfolgen aus der Konfigurationsdatei auslesen 543Ermittlung der verfügbaren Microsoft SQL Server 543Datenbankbenutzerkennwörter ändern 544

Befehlsausführung mit Befehlsobjekten 544Methoden der Befehlsklassen 545Transaktionen 545Beispiel zur Ausführung von Befehlen 545Parameter für Befehle 546Asynchrone Befehlsausführung 548

Daten lesen mit einem Datareader 550Ablauf 552Beispiel 552Behandlung von Null-Werten 553Multiple Active Results Sets (MARS) 554

Daten lesen und verändern mit einem DataSet 555Das Objektmodell 556Daten lesen mit DataSets 557Datensichten (Dataviews) 562Daten ändern mit DataSets 562Typisierte DataSets (Typed DataSets) 566Umwandlung zwischen DataSet und XML 570Umwandlung zwischen DataSet und Datareader 572Serialisierung und Remoting für DataSets 572

LINQ to DataSet 573Voraussetzung 574Abfragen über eine Tabelle 574Abfragen über typisierte DataSets 575Abfragen über mehrere Tabellen (Joins) 575

Datenproviderunabhängiger Datenzugriff durch Provider-Fabriken 577Benachrichtigungen über Datenänderungen (Query Notifications) 578Massenkopieren (Bulkcopy/Bulkimport) 582Providerstatistiken 585Datenbankschema auslesen 587ZusatzdienstefurADO.NET 588ADO.NET Data Services 588ADO.NET Synchronization Services 589Positionierung von ADO.NET und Ausblick 593

Page 15: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

20 Inhaltsverzeichnis

12 Objektrelationales Mapping (ORM) mit dem ADO.NET Entity Framework 4.0 595Einführung 596Objektrelationale Abbildung: Grundlagen und Anforderungen 597

Impedance Mismatch 597Unterstützte Datenbanken 599Abbildungsszenarien 599Abfragesprachen 601Ladestrategien 602Forward Engineering vs. Reverse Engineering 602Geschäftsobjektklassen 603Mapping-Interna (Objekt-Materialisierung) 603Änderungsverfolgung und Persistierung 604Objektcontainer 604Zwischenspeicherung (Caching) 605Serialisierung 605Unterstützung für verteilte Systeme 605Plattformen 606Werkzeuge 606Überwachung 606Erweiterbarkeit 606

Beispiel für dieses Kapitel 606Grundbegriffe und Grundkonzepte des ADO.NET Entity Framework 607

Bausteine des ADO.NET Entity Framework 608Architektur des ADO.NET Entity Framework 608Konzeptionelle Datenmodelle 609Entity Data Model (EDM) 610Assemblys und Namensräume 611Unterstützte Datenbanken 611Überblick über die Object Services 612

Architekturmodelle 612Erstellen eines EDM-Modells 614

Elementvorlage 614Forward Engineering oder Reverse Engineering 615Auswahl der Datenbankelemente, Pluralisierung und Fremdschlüssel 616Entity Framework-Designer 618Generierte Klassen 620Umsetzung der Datentypen 624Entity Framework-Verbindungszeichenfolgen 625Unterstützung für komplexe Typen im Designer 626Verwendung von Views 626

Daten abfragen 628Instanziieren der Kontextklasse 628Abfragesprachen 629Abfragen mit LINQ to Entities 629

Page 16: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis ?1

Protokollierung und Tracing 632Konvertierungsfunktionen 632Vorkompilierte Abfragen 633Dynamische Abfragen 634Direkte SQL-Ausführung 636MergeOptions 639Serialisierung 640

Navigation und Ladestrategien 641Automatisches Nachladen 641Explizites Lazy Loading 642Eager Loading 644Diskussion der Ladestrategien 644Drei Warnungen vor bösen Überraschungen 645

Objektzuweisungen 646Beziehungen herstellen 646Relationship Fix Up 647Mit Fremdschlüssel abfragen 649

Änderungsverfolgung und Persistierung 650Änderungen an geladenen Objekten 650Objekte hinzufügen 650Objekte löschen 650Änderungen speichern 651Informationen über nicht gespeicherte Änderungen 652Transaktionen 652Beispiel 652Konflikte erkennen 655Konflikte lösen 656

Steuerung der Codegenerierung durch austauschbare T4-Vorlagen 658T4-Vorlagen 659Auswahl der T4-Vorlage 659Reaktivierung der Standardgenerierung 662Trennung von Kontext und Entitätsklassen 662

Persistence Ignorance mit Piain Old CLR Objects (POCO) 664POCO-Vorlage 664Anforderungen an die Entitätsklassen 665Beziehungsaktualisierung 666Änderungen gegenüber den Nicht-POCO-Entitätsklassen 667

Änderungsverfolgung in verteilten Systemen (Self-Tracking Entities) 670Anwendung der T4-Vorlage 670Mechanismen der Self-Tracking Entities 671Beispielanwendung »WPF-DataGrid mit Self-Tracking Entities« 672Implementierung der Geschäftslogik 673

Page 17: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

22 Inhaltsverzeichnis

Implementierung des Webservices 675Variablen 675Laden der Objekte 676Sonderbehandlung für angefügte und gelöschte Objekte 678Speichern 679

Unterstützung für Stored Procedures 681Beispiele 682Entity Framework-Assistent 682Verwendung der Stored Procedures 683Add Function Import 684Verwendung der Stored Procedures 687Gespeicherte Prozeduren zur Verwendung für INSERT, UPDATE und DELETE 687

Forward Engineering (Model-First/Domain First) 688Anlegen eines Modells für Forward Engineering 688Erzeugen der Datenbank 691Modell- und Schemaversionierung 692Anpassung der Datenbankgenerierung 695Entity Designer Database Generation Power Pack 696Datenbankgenerierung zur Laufzeit 698

Anpassungen und Erweiterbarkeit 699Erweitern der generierten Klassen durch partielle Klassen 700Ereignisse der Kontextklasse 701

Direktes Programmieren mit Entity SQL (eSQL) 702Entity SQL (eSQL) 702Nutzung von eSQL 703Entity Client Data Provider 703Werkzeug eSQL Blast 704Beispiele 705Modellfunktionen 707

Leistungsüberlegungen 709Kontextinstanziierungsdauer 710Ladegeschwindigkeit 711Speichergeschwindigkeit 713

Weitere Funktionen 715Verbliebene Schwächen 715Vergleich mit anderen ORM-Werkzeugen für .NET 716Fazit 718

13 Datenzugriff mit System.Xml und LINQ to XML 719XML-Programmierungmit.NET 720Neuerungen in .NET 2.0 720Neuerungen in .NET 3.0 721Neuerungen in .NET 3.5 721

, Neuerungen in .NET 4.0 721

Page 18: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis 23

Überblick über die XML-Zugriffsmodelle 721XML-DOM (XmlDocument) 722XML-Leser (XmlReader) 726XML-Schreiber (XmlWriter) 728XPathNavigator (XPath Data Model) 730LINQ to XML 732

Laden von XML 732Zugriff auf Elemente 733Abfrage von XML 734Verändern von XML-Inhalten 735Verändern der XML-Struktur 736

Vergleich der Zugriffsformen 737Ableiten eines Schemas aus XML-Dokumenten 738XML Style Sheet Transformations (XSLT) 739

14 Windows Communication Foundation (WCF) 4.0 741Einleitung 743Einsatzgebiete von WCF 743Basisfunktionsumfang von WCF 744Neuerungen in WCF 3.5 746Neuerungen in WCF 3.5 Service Pack 1 747Neuerungen in WCF 4.0 747Architektur 747

ABC-Eigenschaften 748Bindungen (Binding) 749Assemblys 752

Kompatibilität 752Werkzeuge 753

Visual Studio-Projektvorlagen 753Visual Studio-Elementvorlagen 754Service Configuration Editor 754Visual Studio-Proxy-Generator 755WCF-Test-Host 756WCF-Test-Client 758ServiceModel Registration Tool 759WCF Service Trace Viewer 760COM+ Service Model Configuration Tool 760WS-AtomicTransaction Configuration Utility 760

Erstellung von WCF-Diensten und WCF-Servern 760Dienstklassen 760Instanziierungseigenschaften 761Beispiel 764Datenklassen und Serialisierung : 765Erstellung einer Endpunktkonfiguration 767

Page 19: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

24 Inhaltsverzeichnis

Vereinfachte Konfiguration 771Beispiel für XML-basierte Konfiguration 772Codebasierte Konfiguration 773Bereitstellen eines Metadaten-Endpunktes 774Konfiguration der Fehlerübermittlung 775Hosting (WCF-Server-Prozess / WCF- Anwendungsserver) 775Best Practices: Selbsttest 780

Erstellung von WCF-Clients 781Vorüberlegungen 781Erstellen eines Proxy 781Konfigurationseinstellungen 783Auswahl der Konfiguration 784Aufrufeines WCF-Servers 784Aktualisieren des Clients 784Steuerung der Proxy-Klasse 785Erweitern der generierten Klassen 785

Shared Contracts 786Grundaufbau des Beispiels 786Shared Contracts nur für die Datenklassen 787Shared Contracts nur für die Datenklassen und Dienstklasse 788

REST-basierte WCF-Dienste 789Erstellung eines REST-Services 789Weitere Möglichkeiten 791Nutzung eines REST-Dienstes 793Weitere Neuheiten für REST-Dienste in WCF 4.0 794

Persistente WCF-Dienste (Durable Services) 794Routing 797

Architektur des WCF-Routing 797Ziele des Einsatzes eines Routers 798Aufbau eines Routers mit WCF 4.0 798Aufbau der Konfiguration eines Routers 799Beispiel: Intermediär zwischen genau einem Server und einem Client 799Filterarten..... 800Ein komplexeres Routing-Beispiel 802Eigenen Filter erstellen (ohne eigene Filtertabelle) 805 IEigenen Filter erstellen (mit eigener Filtertabelle) 809 |.

Auffinden von Diensten (Discovery) 811 |Ein erforschbarer Dienst 811 JEin Client zur Erforschung 812 ?

WCF Data Services (ADO.NET Data Services) 4.0 813Architektur der WCF Data Services 814 'Anlegen eines WCF Data Services 815Testen eines WCF Data Services 816Abfragesyntax der WCF Data Services 822

Page 20: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis 25

Nutzung eines WCF Data Services in .NET-Anwendungen 822Generieren der Zugriffsklassen 822Abfrage ohne LINQ 823LINQ to WCF Data Services 823Datenänderungen 825Neuerungen in .NET 4.0 826Projektionen 828

AJAX-Webseiten als WCF-Clients 832WCF-Sicherheit 832

Sicherheitsmechanismen 832Sicherheitsmodi 833Authentifizierungsverfahren 833Beispiel 833Übermittlung der Identität 834Ermitteln der aktuellen Identität 835Nutzung der Identität 835Zugriffsrechte 835

Protokollierung 836Weitere Funktionen 840

Funktionen des Service Model Metadata Utility Tool (svcutil.exe) 840Ein-Weg-Kommunikation (Unidirektionale Kommunikation, engl. One-Way) 841Duplex-Kommunikation 842Asynchrone WCF-Aufrufe 843Sitzungen (Sessions) 844

Beispiele in World Wide Wings 845Übliche Stolpersteine 848

Typische Fehlermeldungen 848Standardbegrenzungen (Throttling) 849Angabe von HTTP-Adressen 849Eindeutigkeit der Bindung , 850Gemeinsame Proxy-Typen (Proxy Type Sharing) 850Multi-Threading-Verhalten 853Leistung (Performanz) 853

Weitere Möglichkeiten von WCF 853Leistungsmessungen 854Fazit 857

15 Windows Presentation Foundation (WPF) 4.0 861Überblick über WPF..... 863Eigenschaften von WPF 863

Assemblys 865Namensraum 865Dokumentation der WPF-Klassen 866Erweiterungen anderer Namensräume 867

Page 21: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

26 Inhaltsverzeichnis

Neuerungen 868Neuerungen in .NET 3.5 868Neuerungen in .NET 3.5 Service Pack 1 868Neuerungen in .NET 4.0 868

Funktionen der World Wide Wings-WPF-Anwendung 869Extensible Application Markup Language (XAML) 871

XAML-Grundkonzepte 872XAML-Serialisierung 873XAML-Namensräume 874Verbindung von XAML und Programmcode (Code-Behind) 874Abhängigkeitseigenschaften (Dependency Properties) 876XAML Markup Extensions 877

XAML-EditorenfürWPF 878WPF-Designer in Visual Studio 878Microsoft Expression Blend 879XAMLPad 881Andere Anbieter 882

Anwendungen und Fenster 882WPF-Anwendungsobjekt „ 883

Fenster 884Dialogfelder 885

Visuelle Elemente und Steuerelemente (Controls) 885Allgemeine Eigenschaften von visuellen Elementen 887Liste der verfügbaren Steuerelemente 887Weitere Steuerelemente von Microsoft 889Drittanbieter 889Panel-Elemente 889Steuerelementhierarchie 891

Ereignissystem 893Weitergeleitete Ereignisse (Routed Events) 893Trigger 894

Befehlssystem 894WPF-Befehlsbindungen (Command Binding) 895Vordefinierte Befehle 896

Menüband (Ribbon) 897Fensterbausteine (User Controls) 899Datenbindung 901

Datenbindungsziele 901Datenquellen 902Datenbindungsrichtung 902Beispiel 902

DataGrid 904Datenquelle und Datenbindung 905Spaltenkonfiguration 906

Page 22: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

Inhaltsverzeichnis . ... 27

Detailbereiche 907Validierung von Eingaben 907Weitere Möglichkeiten des DataGrid-Steuerelements 909

Formatvorlagen (Styles) 910Definition einer Formatvorlage auf Fensterebene 910Definition einer Formatvorlage auf Anwendungsebene 911Formatvorlagen und Trigger 911Gestaltungsvorlagen für Steuerelemente (Control Templates) 912

Transformationen 912Animationen 913

Animierbare Eigenschaften 913Animationsarten 913Animationseigenschaften 914Definition von Animationen 914Start einer Animation 914

Visual State Manager (VSM) 915Zeichnen 918Windows 7-Integration 919

Vorschaufenster 919Symbol in der Taskleiste verändern 920Sprunglisten (Jump Lists) 921

Weitere Möglichkeiten von WPF 922Windows Forms versus WPF 923

Zukunft von Windows Forms 923Vorteile von WPF gegenüber Windows Forms 923Nachteile von WPF gegenüber Windows Forms 924Fazit 924

16 Die Entwicklergemeinde und andere Informationsquellen 927Zeitschriften 928

Zeitschriften mit dem Schwerpunkt .NET 928Zeitschriften, die regelmäßig über .NET berichten 929

Bücher 929Newsgroups, Foren und Weblogs 930Websites 930

Angebote von Microsoft 930dotnetframework.de 930Weitere Websites 931

Organisationen 931.NET Code Wise Community 931International .NET Association (INETA) 931Microsoft Most Valuable Professionals (MVPs) 932Regional Directors 932Community Leader / Influencer Program (CLIP) 932

Page 23: Microsoft •NET 4.0 - Crashkurs · Sprachsyntax Visual Basic 2010 (VB.NET 10.0) und C# 2010 (C# 4.0) 303 Einleitung 305 Überblick über die Neuerungen 305 Allgemeines zu Visual

2JL Inhaltsverzeichnis

Veranstaltungen 932Schulungen und Workshops 932Konferenzen 933.NET User Group-Treffen 933

Feedback an Microsoft 933

Anhang A - Weitere Kapitel in elektronischer Form 935Weitere Kapitel als PDF-Download 936Windows Forms 936.NETRemoting 936ASP.NET Webservices (ASMX) 937ASP.NET und AJAX 937LINQ to SQL 937.NET Enterprise Services 937System.Transactions 937Windows Workflow Foundation (WF) 938

Anhang B - Syntaxvergleich: C# 4.0 (C# 2010) versus Visual Basic 10.0 (VB 2010) 939Befehlswörter 940Datentypen 942Operatoren 943

Anhang C - Literaturverzeichnis 945

Stichwortverzeichnis ..; 951