Inhaltsverzeichnis Vorwort Über den Autor Dr. Holger Schwichtenberg Leser-Service Themeneinschränkungen Ihre Entwicklungsumgebung für .NET Hinweise zu den Listings 1
Einführung Wasist.NET? Definition Zielevon.NET Technische Merkmale des .NET Framework Kernbausteine Standardisierung bei ECMA und ISO .NET Connected Plattformen Microsoft .NET Framework ECMA SSCLI (Rotor) Novell Mono Geschichte und Versionen .NET 1.x .NET 2.0 (Whidbey) .NET 3.0 (WinFX) Erweiterungenzu.NET .NET 3.5 (Orcas) ECMA SSCLI (Rotor) Mono Produkte Notwendige Produkte Optionale Produkte Details zu einigen Produkten Entscheidung zwischen der deutschen und der englischen Version Installation Betriebssysteme, die bereits .NET enthalten Installation des .NET Framework Redistributable Installation von Visual Studio 2005
2 World Wide Wings - Das mehrschichtige Fallbeispiel in diesem Buch Einleitung Szenario Datenmodell Mehrschichtarchitektur Objektmodell Implementierung Softwarevoraussetzungen für das Fallbeispiel Installation und Konfiguration Mögliche Fehler Dokumentation Aktualisierungen Fragen zu diesem Fallbeispiel
23 24 24 27 28 29 30 31 32 32 33 34 35
3
37 38 38 40 42 43 44
Ihre ersten drei .NET-3.0-Anwendungen Motivation Erstellung einer Konsolenanwendung in C# 2005 an der Kommandozeile Erstellung einer Webanwendung mit Visual Studio 2005 Erweiterung des Beispiels Schritte für die Erweiterung Erstellung einer Windows-Anwendung in Visual Basic mit Visual Studio 2005
4 Grundkonzepte des .NET Framework 3.0 Zwischensprache Anwendungstypen Laufzeitumgebung Programmiersprachen Klassenbibliothek Namensräume Umfang der Klassenbibliothek FCL versus BCL Implementierung der FCL Objektorientierung Referenztypen Wertetypen (Strukturen) Typnamen und Namensräume (Namespaces) Neuheiten im Typkonzept seit .NET 2.0 Softwarekomponentenkonzept Der Softwarekomponentenbegriff im .NET Framework Aufbau von Assemblies Signierte Assemblies Befreundete Assemblies (Friend Assemblies) Speicherorte für Assemblies
Metadaten Komponentenkonfiguration Assembly-Referenzen Anwendungsdienste (Application Services) Installation von .NET-Anwendungen XCopy-Installation Microsoft Windows Installer (MSI) Kommandozeilenwerkzeuge GUI-Werkzeuge No-Touch-Deployment (NTD) Click-Once-Deployment (COD) Weitere Fähigkeiten der Laufzeitumgebung Speicherbereinigung (Garbage Collector) Prozessabgrenzung durch Application Domains Sicherheit (Code Access Security) Mehrschichtige .NET-Anwendungen Benutzerschnittstellensteuerung Geschäftslogik Ressourcenzugriff Verteilte .NET-Anwendungen ASP.NET-basierte XML-Webservices (ASMX) .NETRemoting Windows Communication Foundation (WCF) Zukunft von .NETRemoting Interoperabilität Interoperabilität zu klassischen C-Bibliotheken Interoperabilität zu COM Interoperabilität zu anderen Komponentenplattformen .NETauf64-Bit-Systemen Entscheidungsdiagramm Datentypen Leistung Kompatibilität zwischen den .NET-Versionen Weiterbetreiben mit der alten CLR Betreiben mit einer neuen CLR Neukompilierung Visual Studio-Kompatibilität Ermitteln der CLR-Version 5 Visual Studio 2005 Einleitung Grundfunktionen Neuerungen in der Entwicklungsumgebung Produktvarianten
Fensterverwaltung Projektverwaltung Projektvorlagen Projektmappen Projektelemente Ordnerstruktur Projekteigenschaften Verweise (Komponenten- und Projektreferenzen) Speichern und Autowiederherstellung Projektkonvertierung Code-Editoren IntelliSense-Funktionen Farbdarstellung Änderungsverfolgung Zeilennummern und Zeilenumbruch Coderegionen Refactoring (Umgestalten) Codeformatierung Kommentare Hintergrundkompilierung Grafische Editoren (Designer) Designer für Windows Forms, WPF und Webforms Designer für nichtvisuelle Komponenten Designer für Workflows Designer für Klassendiagramme Arbeit mit Datenquellen Datenverbindungen (Data Connections) Datenquellen (Data Sources) Kompilierung und Ausführung Übersetzungskonfigurationen Fehlerliste Microsoft Build (MS Build) Debugger Start des Debugger Funktionen im Haltemodus Bearbeiten und Fortsetzen (Edit & Continue) Steuerung der Debugger-Anzeige Direktfenster (Intermediate Window) Objekttestcenter (Object Test Bench, OTB) Einschränkungen auf 64-Bit-Systemen Weitere Funktionen Aufgabenliste Server-Explorer
Konsolenanwendungen Einführung Erzeugen einer Konsolenanwendung Konsolenanwendungen in Visual Studio 2005 Klasse System.Console Write() und WriteLineO Read() und ReadLine() Klassen System.Environment Neuerungen in .NET 2.0
221 222 222 223 224 225 225 226 226
9 Softwarekomponenten Der Softwarekomponentenbegriff im .NET Framework Komponententypen Erstellung von nichtvisuellen Komponenten Festlegung von Assembly-Eigenschaften Erstellung einer signierten Assembly Erstellung einer gemeinsamen Assembly Befreundete Assemblies Interoperabilität mit COM Zugriffvon.NET auf COM ZugriffvonCOMauf.NET Konfiguration von Assemblies 10 MT-Klassenbibliothek 2.0 Einleitung System System.Object System.Console System.Type System.Collections System.IO Dateisystem Dateiinhalte System.Configuration Neuheiten ab .NET 2.0 ConfigurationManager Verschlüsselte Sektionen Anwendungseinstellungen (Application Settings) Nutzung der Anwendungseinstellung System.Diagnostics Prozesse Ereignisprotokolle System.Net HTTP-und FTP-Unterstützung System.Net.Networklnformation.* Netzwerkstatus System.Net.Mail und System.Net.Mime System.Text Textcodierung Reguläre Ausdrücke System.DirectoryServices Allgemeines Objektmodell Objektmodell für die Suche
System.DirectoryServices.ActiveDirectory System.DirectoryServices.Protocol System.Management System.Resources Erstellung von Ressourcendateien Zugriff auf Ressourcendateien Streng typisierte Ressourcen System.Security System.Security.SecureString System.Security.AccessControl.*
277 278 278 281 282 282 284 284 285 286
Datenzugriff mit ADO.NET 2.0 Einführung Neuerungen im Überblick Die ADO.NET-Architektur Datenprovider von Microsoft Datenprovider von anderen Herstellern Ermittlung der installierten Datenprovider Der Weg der Daten von der Datenquelle bis zum Verbraucher Datenbankverbindungen (Connection) Verbindungen aufbauen und schließen Verbindungspooling Verbindungszeichenfolgen zusammensetzen mit dem ConnectionStringBuilder Verbindungszeichenfolgen aus der Konfigurationsdatei auslesen Ermittlung der verfügbaren Microsoft SQL Server Datenbankbenutzerkennwörter ändern Daten lesen mit einem Datareader Ablauf Beispiel Behandlung von Null-Werten Multiple Active Results Sets (MARS) Daten lesen und verändern mit einem Dataset Das Objektmodell Daten lesen mit DataSets Datensichten (Dataviews) Daten ändern mit Datasets Typisierte DataSets (Typed DataSets) Umwandlung zwischen DataSet und XML Umwandlung zwischen Dataset und Datareader Serialisierung und Remoting für DataSets Befehlsausführung mit Command-Objekten Methoden der Befehlsklassen Transaktionen
Parameter für Befehle Asynchrone Befehlsausführung Datenproviderunabhängiger Datenzugriff durch Providerfabriken Benachrichtigungen über Datenänderungen (Query Notifications) Massenkopieren (Bulkcopy/Bulkimport) Providerstatistiken Datenbankschema auslesen Positionierung von ADO.NET und Ausblick
•*—»,
Xl
"
324 325 328 330 333 337 338 339
12 Datenzugriff mit System.Xml 2.0 XML-Programmierung Neuerungen in .NET 2.0 Neuerungen in .NET 3.0 XML-DOM Alternative XML-Zugriffsformen XmlReader XmlWriter XPathNavigator (XPath Data Model) Ableiten eines Schemas aus XML-Dokumenten XML Style Sheet Transformations (XSLT)
341 342 342 342 343 345 346 349 351 353 354
13 .NETRemoting Einleitung Neuerungen in .NET 2.0 Formatters und Channels Hosting Art der Objektnutzung Channel-Erzeugung Aktivierung und Lebenszyklus Remoting- Beispiel Konfiguration Quellcode Ergebnisse Deklarative Remoting-Konfiguration
14 ASRNET-basierte XML-Webservices (ASMX) Einleitung Neue Funktionen Webservices erstellen mit ASP.NET 2.0 Webservices nutzen Generierung der Proxy-Klasse Aufruf der Proxy-Klasse Gemeinsame Proxy-Typen (Proxy Type Sharing)
381 382 382 383 387 388 389 390
Inhaltsverzeichnis
Asynchroner Aufruf Authentifizierung Weitere Möglichkeiten RAD-Datenbindung für von Webservices gelieferte Daten Fehlerbehandlung Generierung der Server-Schnittstellen Statische Generierung von Serialisierungs-Assemblies (sgen.exe) Benutzerdefinierte Serialisierung Zustandsbehaftete Webservices Web Services Enhancements (WSE) 3.0 Vergleich zwischen .NET Remoting und ASRNET-basierten XML-Webservices 15 Windows Communication Foundation (WCF) Einleitung Architektur Bindungen (Binding) Assemblies Kompatibilität Werkzeuge Visual Studio-Integration ServiceModel Registration Tool Service Configuration Editor WCF Service Trace Viewer COM+ Service Model Configuration Tool WS-AtomicTransaction Configuration Utility Implementierung von WCF-Diensten Dienstklasse Datenklassen Erstellung einer Endpunktkonfiguration Bereitstellen eines Metadaten-Dienstes Konfiguration der Fehlerübermittlung Hosting (WCF-Server-Prozess) Best Practices: Selbsttest Erstellung eines WCF-Clients Vorüberlegungen Erstellen eines Proxy Konfigurationseinstellungen Auswahl der Konfiguration Aufrufeines WCF-Servers Steuerung der Proxy-Klasse Erweitern der generierten Klassen WCF-Sicherheit Sicherheitsmechanismen Sicherheitsmodi
Authentifizierungsverfahren Beispiel Übermittlung der Identität Ermitteln der aktuellen Identität Nutzung der Identität Zugriffsrechte Protokollierung Beispiele in World Wide Wings Weitere Funktionen Funktionen des Service Model Metadata Utility Tool (svcutil.exe) Ein-Weg-Kommunikation (One-Way) Duplex-Kommunikation Asynchrone WCF-Aufrufe Sitzungen Gemeinsame Proxy-Typen (Proxy Type Sharing) Weitere Möglichkeiten Fazit 16 Windows Workflow Foundation (WF) Einleitung World Wide Wings-Buchungs-Workflow Architektur Bestandteile des Workflow-Konzeptes Workflow-Formate Workflow-Werkzeuge Designer Debugging Kommandozeilenwerkzeuge Workflow-Arten Workflow-Aktivitäten Aktivitätsbaum Überblick über die mitgelieferten Aktivitäten Weitere Aktivitäten Zustandsmodell Workflow-Hosting Server-Prozess WF-Dienste konfigurieren und der Laufzeitumgebung hinzufügen Start der Workflow-Laufzeitumgebung Workflows erzeugen und starten Ereignisse der Laufzeitumgebung behandeln Steuerung von Workflows Datenaustausch mit Workflows Interne Kommunikation über Attribute und Abhängigkeitseigenschaften Parameteraustausch mit dem Workflow-Host
Datenaustauschdienste Kommunikation mit Webservices Aufruf von Webservices WorkflowQueuingService Bedingungen Regelsätze (RuleSets) Persistenz Anlegen der Datenbank Aktivierung des Persistenzdienstes in einem WF-Host Persistierung eines Workfiows Form der Persistierung Laden eines persistierten Workfiows Ablaufverfolgung (Tracking) Anlegen der Datenbank Aktivieren des Ablaufverfolgungsdienstes Umfang der Ablaufverfolgung Auslesen der Ablaufverfolgungsdaten Scheduling Fehlerbehandlung Transaktionen Kompensation Weitere Möglichkeiten
Webanwendungen mit ASP.NET 2.0-Webforms Einleitung Überblick über ASP.NET-Webforms Neuheiten in ASP.NET 2.0-Webforms Beispielanwendung Das Webform-Programmiermodell Abstraktion durch Serversteuerelemente (Adaptive Rendering) Kompatibilität zu Windows Forms Objektorientierung Steuerelement-Hierarchie (Objektbaum) Ereignisbehandlung Seitenübergänge Trennung von Layout und Programmcode Übersetzungsvorgang und Verbreitung Steuerelement-Typen Bestandteile eines Webprojekts Entwicklungsumgebung Visual Web Developer Grundfunktionen Neuerungen im VWD Migration
Webprojektmodelle Arbeit mit dem Webform-Designer Übersetzung von Webanwendungen Start von Webanwendungen WebserverfurASP.NET ASP.NET Development Server Internet Information Server (IIS) Serversteuerelemente Einfache Steuerelemente Validierungssteuerelemente (Validatoren) Komplexe Steuerelemente Selbst definierte Steuerelemente Steuerelemente für kleine Endgeräte Steuerelemente von Drittanbietern Datensteuerelemente und Datenbindung Datensteuerelemente Datenbindung Datenquellensteuerelemente Halbautomatische Datenbindung GridView DataList Details View und FormView TreeView Benutzerdefinierte Datenbindung Webparts Bestandteile eines Webportals Inhalt einer WebPartZone Anzeigemodi Eigene Webparts erstellen Konfiguration XML-Konfigurationsdateien Administration Nutzung von Softwarekomponenten Interaktion zwischen ASP.NET und dem Webserver mit den eingebauten Objekten.... Nutzung von anderen .NET-Softwarekomponenten Zustandsverwaltung Zustandsverwaltung auf Sitzungsebene Zustandsverwaltung auf Seitenebene Zustandsverwaltung auf Anwendungsebene Anwendungsbeispiel Logik auf dem Client und AJAX Einfache Client-Skripte Client-Rückrufe (Script Callbacks)
Navigation Navigationselemente URL-Rewriting Sicherheit Authentifizierung Benutzerverwaltung Anwendungsidentität Layout-Vorgaben Vorlagenseiten Layout-Themen (Themes) Individuelle Inhalte Profildaten Mehrsprachige Websites (Lokalisierung) Zwischenspeicherung (Caching) Seiten-Caching Fragment-Caching Cache Invalidation durch die Datenbank Datenquellensteuerelement-Caching Installieren und Konfigurieren von Webanwendungen Weitere Möglichkeiten von ASRNET Vergleich mit der Java-Welt
18 Windows-Oberflächen mit Windows Forms 2.0 Einleitung Überblick über Windows Forms Funktionsüberblick Windows Forms entwickeln mit Visual Studio 2005 Neuheiten in Windows Forms 2.0 Funktionen der World Wide Wings-Desktop-Anwendung Anwendungsfälle Gezeigte Funktionen Architektur Hauptmenü Konfiguration Stammdatenverwaltung Call Center-Anwendung Fenster Vorgefertigte Formulare Anzeigen eines Fensters DoEvents Das Visual Basic 2005-Anwendungsmodell Fenster mit Unterfenstern (Multi-Document-Interface) Visuelle Vererbung Dialogfenster
Steuerelemente Allgemeine Eigenschaften von Steuerelementen Steuerelementhierarchie Liste der verfügbaren Steuerelemente Container Menüs Symbolleisten Statusleiste Datenbindung Datenbindung per Rapid Application Development (RAD) Datenbindung an Objektmengen (Mehrschichtiges Datenbinden) Individuelle Datenbindung mit DataBindings Manuelle Datenbindung DataGridView Zeichnen mit GDI+ Drucken PrintDocument PrintPreviewDialog PrintDialog Berichterstellung mit Report-Generatoren Mehrsprachige Anwendungen (Lokalisierung) Drag & Drop (»Ziehen & Fallenlassen«) Zwischenablage Weitere Möglichkeiten von Windows Forms Systeminformationen XP Visual Styles Erstellung von Windows-Steuerelementen (Benutzersteuerelemente) Nutzung von Windows Forms-Steuerelementen im Internet Explorer Click-Once-Deployment 19 Windows Presentation Foundation (WPF) Überblick über WPF Funktionen der World Wide Wings- WPF- Anwendung Extensible Application Markup Language (XAML) XAML-Grundkonzepte XAML-Serialisierung XAML-Namensräume Verbindung von XAML und Programmcode (Code-Behind) Abhängigkeitseigenschaften (Dependency Properties) XAML Markup Extensions XAML-EditorenfürWPF WPF-Designer für Visual Studio Microsoft Expression Blend
XAMLPad Andere Anbieter Anwendungen und Fenster WPF-Anwendungsobjekt Fenster Dialogfenster Visuelle Elemente und Steuerelemente (Controls) Allgemeine Eigenschaften von visuellen Elementen Liste der verfügbaren Steuerelemente Panel-Elemente Steuerelementhierarchie Ereignissystem Routed Events Trigger Befehlssystem WPF-Befehlsbindungen (Command Binding) Vordefinierte Befehle Datenbindung Datenbindungsziele Datenquellen Datenbindungsrichtung Beispiel Formatvorlagen (Styles) Definition einer Formatvorlage auf Fensterebene Definition einer Formatvorlage auf Anwendungsebene Formatvorlagen und Trigger Transformationen Animationen Zeichnen Weitere Möglichkeiten von WPF
Enterprise Services und Transaktionen Serviced Components Dienste Voraussetzungen und Optionen Registrierung der Assembly im Application Server COM+-Transaktionsdienste Beispiel Automatische Feststellung des Endzustands (AutoComplete) Fernaufruf von Serviced Components Services without Components (SWC) System.Transactions Implizite Transaktionen mit TransactionScope
689 690 690 690 691 692 693 696 696 696 698 698
Inhaltsverzeichnis
^^^JQH
.NET-Klassen als Teilnehmer von Transaktionen Automatische Umschaltung zwischen lokalen und verteilten Transaktionen (Explizite Transaktionen)
699 699
21 Zusatzkomponenten .NET Enterprise Library Bestandteile Status Installation Windows PowerShell (WPS) Status Commandlets und Objekt-Pipelining Navigationsprovider Skripte Sicherheit Erweiterungen Weitere Informationen AJAX-Erweiterungen für ASP.NET Web 2.0 und AJAX Microsoft-AJAX Produkte Installationspakete und Quellcode Visual Studio-Integration ScriptManager JavaScript-Erweiterungen Partielle Seitenerzeugung Webservice-Aufrufe Extender Ausblick
22 Ausblick und Fazit .NET 3.5 und Visual Studio 9.0 »Orcas« - ein Blick in die Zukunft Neue Funktionen im .NET Framework Neue Funktionen in Visual Studio Bewertung: Wo steht .NET?
725 726 726 727 728
23 Die Entwicklergemeinde und andere Informationsquellen Zeitschriften Zeitschriften mit dem Schwerpunkt ».NET« Zeitschriften, die regelmäßig über .NET berichten Bücher Newsgroups, Foren und Weblogs
731 732 732 733 733 733
Inhaltsverzeichnis
Websites Angebote von Microsoft Codezone.de Codezone Premier Sites dotnetframework.de Weitere Websites Organisationen .NET Code Wise Community International .NET Association (INETA) Microsoft Most Valuable Professionals (MVPs) Regional Directors Community Leader/Influencer Program (CLIP) Veranstaltungen Schulungen und Workshops Konferenzen User Group Treffen Feedback an Microsoft