microsoft •net 4.0 - crashkurs · sprachsyntax visual basic 2010 (vb.net 10.0) und c# 2010 (c#...
TRANSCRIPT
Dr. Holger Schwichtenberg
Microsoft•NET 4.0 - Crashkurs
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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