O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Handbuch der .NET 4.0/4.5-Programmierung. Band 3 Verteilte Anwendungen

Book Description

Im 3. Band stehen verteilte Anwendungen im Mittelpunkt. Der Autor geht unter anderem auf Architekturen, die Kommunikation mit .NET, Remoting, WCF und Performanceoptimierung ein.

Table of Contents

  1. Handbuch der .NET 4.0/4.5 Programmierung: Band 3: Verteilte Anwendungen
  2. Vorwort
  3. Einleitung
    1. Zielpublikum dieses Buchs
    2. Der Nutzen dieser Buchreihe
    3. Voraussetzungen für den dritten Band
    4. Der Benutzer, die Benutzer, die Benutzerin
    5. Die Codebeispiele
    6. Ein Wort zu den Bezeichnern
    7. Feedback
  4. 1. Verteilte Systeme
    1. Die Terminologie dieses Buchs
    2. Das Schichtenmodell einer Anwendung
      1. Dateiserver
      2. Internetanwendungen
      3. Allgemeines Modell
      4. Sicherheit in verteilten Systemen
    3. Serviceorientierte Architektur
      1. Grundsätzliche Idee von SOA
      2. Technische Implementierung von SOA
    4. Stufen der Verteilung
      1. Verteilung innerhalb eines Prozesses
      2. Verteilung von Prozessen auf einer Maschine
      3. Verteilung über mehrere Maschinen
        1. Einfache hierarchische Organisation der Rollen
        2. Kaskadierte hierarchische Organisation der Rollen
        3. Gleichberechtigte Organisation der Rollen
    5. Ablauf eines Datenaustauschs
    6. Allgemeines Threadingmodell einer Client/Server-Kommunikation
      1. Synchrone Kommunikation
      2. Asynchrone Kommunikation
      3. Serverseitige asynchrone Verarbeitung
    7. Dienstinstanziierung auf der Serverseite
      1. Die sitzungsbasierte Instanziierung
      2. Die aufruforientierte Instanziierung
      3. Die einfache Instanziierung
      4. Die geteilte Instanziierung
    8. Die Rolle eines Anwendungsservers
    9. Geschwindigkeit von verteilten Anwendungen
      1. Die Messung
      2. Der Erstzugriff ist anders als die Folgezugriffe
    10. Verfügbarkeit von verteilten Anwendungen
      1. Die Systemverfügbarkeit
      2. Die Anwendungsverfügbarkeit
      3. Die Netzwerkverfügbarkeit
      4. Die End-zu-End-Verfügbarkeit
      5. Die Bemessung der Verfügbarkeit
        1. Definition der Betriebszeit einer Lösung
        2. Geplante Wartungsfenster
      6. Konsequenzen aus der Verfügbarkeit einer Anwendung
  5. 2. Dienstdefinition nach W3C
    1. Web of Services von W3C
    2. Das Beispiel dieses Kapitels
    3. Dienstbeschreibung mit WSDL
      1. Inhalte eines WSDL-Dokuments
      2. Die Definition
      3. Die Typenbeschreibung
        1. Die Operationstypen
        2. Die selbst definierten Typen
        3. Die grundlegenden Typen
      4. Die Nachrichten
      5. Die Dienstbeschreibung
      6. Die Bindung
      7. Der Service
      8. Die Fehlerhandhabung
    4. SOAP – Simple Object Access Protocol
      1. Der SOAP-Header
      2. Der SOAP-Body
      3. Beispiel für einen SOAP-Datenverkehr
        1. Anfrage vom Client an den Server
        2. Antwort vom Server an den Client
      4. SOAP und die Fehlerübermittlung
  6. 3. Erster Entwicklungszyklus mit der WCF
    1. Die Architektur der WCF
      1. Ebenen der WCF-Architektur
        1. Verträge
        2. Laufzeitumgebung
        3. Nachrichtenfluss
        4. Aktivierung und Hosting
      2. Der interne Aufbau der WCF
    2. Ein erster Entwicklungszyklus
    3. Vorbereiten der Visual Studio-Lösung
    4. Erstellen der Verträge
    5. Implementierung des Servers
    6. Erstellen des Hosts
    7. Erstellen des Clients
    8. Ausführen des Codes
      1. Eine Lösung als Multistart-Lösung definieren
      2. Eine Lösung debuggen
      3. Das Beispiel über Maschinengrenzen hinweg ausführen
        1. Ändern der Zieladresse im Clientprogramm
        2. Kopieren des Codes des Hosts auf eine entfernte Maschine
        3. Prüfen der Firewalleinstellungen auf der entfernten Maschine
  7. 4. WCF-Verträge
    1. Der Dienstvertrag
      1. Die Definition des Dienstvertrags
      2. Methoden in einem Dienstvertrag definieren
      3. Den Namen der Anforderungsparameter steuern
      4. Den verwendeten Serialisierer konfigurieren
    2. Der Datenvertrag
      1. Allgemeine Regeln der Serialisierung eines Datenvertrags
      2. Einen Datenvertrag definieren
      3. Einen Aufzählungstyp als Datenvertrag definieren
      4. Einen Auflistungstyp als Datenvertrag definieren
    3. Der Nachrichtenvertrag
      1. Die Definition eines Nachrichtenvertrags
      2. Ein Array von Daten kontrollieren
      3. Nachrichtenverträge und WSDL
    4. Der Fehlervertrag
  8. 5. Daten für Dienste definieren
    1. .NET-Datentypen in der WCF
    2. Eigene Datentypen
    3. Referenzierende Datenverträge anwenden
    4. Auflistungen verwenden
    5. Vererbte und schnittstellenbasierte Daten
      1. Vererbungsstrukturen verwenden
      2. Das Attribut KnownTypeAttribute
      3. Das Attribut ServiceKnownTypeAttribute
      4. Die bekannten Typen in der Konfiguration definieren
      5. Einen schnittstellenbasierten Datenvertrag verwenden
    6. Den Typ Object verwenden
    7. IDisposable bei Datenverträgen verwenden
    8. Versionierung von Verträgen
      1. Verschiedene Szenarien für Versionen
      2. Maßnahmen für die Versionierung
        1. Versionierung mit neuen Dienstverträgen
        2. Versionierung mit versionsfesten Datenverträgen
          1. Neue Elemente in einem Datenvertrag
          2. Bestehende Elemente werden aus einem Vertrag gelöscht
          3. Roundtrip mit unterschiedlichen Versionen
        3. Implementieren von Methoden für die Versionstoleranz
      3. Best Practice-Empfehlungen für die Versionierung
  9. 6. Grundlagen der Dienstimplementierung
    1. Übersicht über die Implementierung von Diensten
    2. Einen Dienst implementieren
      1. Das Attribut ServiceBehaviorAttribute
        1. Die Instanziierung steuern
          1. Die aufruforientierte Instanziierung
          2. Die sitzungsorientierte Instanziierung
          3. Die Instanziierung nach dem Singleton-Entwurfsmuster
          4. Die geteilte Instanziierung
          5. Zusammenfassung der Instanziierung
        2. Das Threadingverhalten steuern
          1. Automatische Synchronisierung des Dienstzugriffs
          2. Gleichzeitigen Dienstzugriff ermöglichen
          3. Der Spezialfall des Wiedereintritts in eine Dienstinstanz
          4. Die WCF-Definition des benutzten Threads
      2. Das Attribut OperationBehaviorAttribute
        1. Die Eigenschaft AutoDisposeParameters
        2. Die Eigenschaft ReleaseInstanceMode definieren
      3. Eine Dienstimplementierung vererben
        1. Einen Dienstvertrag vererben
        2. Eine Dienstimplementierung vererben
    3. Einen Dienst für Rückrufe implementieren
      1. Voraussetzungen für einen Rückruf
        1. Bindungen für Rückrufe
        2. Firewalls zwischen Client und Server
        3. Ein Rückruf muss initiiert werden
      2. Einen Dienst mit Rückrufvertrag definieren
      3. Einen Dienst mit Rückrufvertrag implementieren
      4. Einen Rückrufvertrag implementieren
      5. Den Rückrufvertrag im Client nutzen
      6. Die Konfiguration des Rückrufkanals
      7. Deadlocks bei Rückrufen verhindern
    4. Fehlerhandhabung in einem Dienst
      1. Das grundlegende Verhalten der WCF bei Fehlern
      2. Einschalten der Übermittlung von Fehlerdaten
      3. Fehler serverseitig selbst abfangen
      4. Die Fehler serverseitig streng typisieren
      5. Die Schnittstelle IErrorHandler
      6. Fehler auf der Clientseite abfangen
  10. 7. Dienste hosten
    1. Hosting in der Übersicht
    2. Einen Dienst deklarativ konfigurieren
      1. Der <services>-Abschnitt der Konfiguration
      2. Der <endpoint>-Abschnitt der Dienstkonfiguration
      3. Die Adressierung eines Diensts
        1. Den Inhalt der Adresse festlegen
        2. Die Adresse absolut oder relativ festlegen
      4. Die Erreichbarkeit eines Endpunkts einschränken
      5. Eine Anwendungskonfigurationsdatei definieren
        1. Einen Dienst konfigurieren
        2. Die Dienstkonfiguration ergänzen oder ändern
          1. Einen neuen Dienst oder einen Endpunkt ergänzen
          2. Einen Konfigurationseintrag direkt editieren
    3. Einen Dienst imperativ konfigurieren
      1. Die Klasse ServiceHost
        1. Zustandsmaschine der Klasse ServiceHost
        2. Diensthosts imperativ erzeugen
      2. Die Klasse ServiceDescription
    4. Endpunkte, Protokolle und Bindungen
      1. Die Klasse ServiceEndpoint
      2. Einen Endpunkt konfigurieren
        1. Einen Endpunkt deklarativ konfigurieren
        2. Einen Endpunkt imperativ konfigurieren
      3. Bindungen beeinflussen die Endpunkte wesentlich
        1. Interoperabilität
        2. Sicherheit
        3. Sitzungen
        4. Transaktionen
        5. Duplex
        6. Codierung
        7. Datenstrom
      4. Weitere Konfigurationswerte von Diensten und Bindungen
        1. Bindungen mit dem Dienstkonfigurationseditor definieren
        2. Eine Bindungskonfiguration auf einen Endpunkt anwenden
        3. Bedeutung der Konfigurationswerte
    5. Konfigurieren von Diensten
      1. Die Dienstkonfiguration mit dem Dienstkonfigurationseditor beeinflussen
      2. Konfigurieren des Datenserialisierers
      3. Die Drosselung von Diensten konfigurieren
      4. Metainformationen zur Verfügung stellen
      5. Das Fehlerverhalten konfigurieren
    6. Einen Dienst mit einem Windows-Dienst hosten
      1. Übersicht über Windows-Dienste
        1. Einen Dienstzustand ändern
        2. Einen Dienst konfigurieren
      2. Einen eigenen Windows-Dienst erstellen
      3. Einen Windows-Dienst installieren
      4. Einen Windows-Dienst debuggen
        1. Den Visual Studio Debugger mit dem laufenden Prozess verbinden
        2. Den Visual Studio Debugger dynamisch verbinden
        3. Einen Servicesimulator erstellen
          1. Erstellen einer Dienstklasse in einer Bibliothek
          2. Erstellen des Simulators
          3. Erstellen des Windows-Diensts
      5. Einen Windows-Dienst WCF-fähig gestalten
    7. Einen Dienst in den IIS hosten
      1. Einen WCF-Dienst in einem Webprojekt erstellen
        1. Einen eigenen Dienst erstellen
        2. Den eigenen Dienst konfigurieren
        3. Den eigenen Dienst ansprechen
      2. Einen bestehenden Dienst in einem Webprojekt hosten
        1. Die Definition der Verträge und die Implementierung des Diensts
        2. Einen Host für den eigenen Dienst erstellen
        3. Den referenzierten Dienst konfigurieren
        4. Den referenzierten Dienst ansprechen
      3. Den HTTP-Kontext von ASP.NET in einem Dienst verwenden
        1. Eine Webanwendung für ASP.NET-Kompatibilität konfigurieren
        2. Auf den HTTP-Kontext zugreifen
    8. Einen Dienst mit WAS hosten
      1. Installieren der WAS-Aktivierungskomponenten
      2. Eine Anwendung für den Einsatz von WAS erstellen
      3. Das WAS-Hosting konfigurieren
    9. Einen Dienst in einer UI-Anwendung hosten
  11. 8. Dienste nutzen
    1. Die Basistypen für Clients
      1. Das Beispiel für die Erklärungen in diesem Kapitel
      2. Mit ChannelFactory arbeiten
        1. ChannelFactory klassenbasiert verwenden
        2. ChannelFactory objektbasiert verwenden
        3. DuplexChannelFactory verwenden
      3. Mit der Basisklasse ClientBase<T> arbeiten
    2. Einen Smart Client konfigurieren
      1. Den Smart Client imperativ konfigurieren
      2. Den Smart Client deklarativ konfigurieren
      3. Eine Konfiguration mit dem Dienstkonfigurationseditor erstellen
    3. Einen Rich Client selbst erstellen
      1. Den Rich Client imperativ konfigurieren
      2. Den Rich Client deklarativ konfigurieren
    4. Einen Rich Client generieren
      1. Einen Client als Dienstreferenz in ein Projekt einfügen
      2. Einen Client manuell generieren
        1. Übersicht über die Parameter von svcutil.exe
        2. Generierung des Clientcodes aus dem laufenden Dienst
        3. Generierung eines Rich Clients aus der Dienstassembly
      3. Spezialfall Mehrfachgenerierung von Verträgen
      4. Einen generierten Client benutzen
    5. Fehlerbehandlung in einem Client
  12. 9. WCF-Implementierungstechniken
    1. Einen Dienst multithreaded implementieren
      1. Schützen von gemeinsamen Ressourcen
        1. Reichweite der Synchronisierung
        2. Anzahl der Synchronisierungselemente
      2. Gedanken zur Auslastung von Hardware
      3. Das WCF-Multithreading nutzen
      4. Die wichtigsten Regeln der Synchronisierung
    2. Einen Dienst asynchron benutzen
      1. Möglichkeiten der asynchronen Verarbeitung
        1. Clientseitige asynchrone Verarbeitung
        2. Abhängige serverseitige asynchrone Verarbeitung
        3. Unabhängige serverseitige asynchrone Verarbeitung
        4. Verarbeitung mit Dispatcher
    3. Das Transaktionsverhalten eines Diensts steuern
      1. Transaktionelle Verarbeitung
        1. Unterstützte Transaktionsprotokolle
          1. Lightweight-Protokoll (LTM)
          2. OLE-Transaktionsprotokoll (OleTx)
          3. WC-Atomic-Transaktionsprotokoll (WS-AT)
        2. Der Distributed Transaction Coordinator (DTC)
      2. Transaktionen mit der WCF nutzen
        1. Serverseitige transaktionelle Unterstützung
        2. Clientseitige transaktionelle Unterstützung
    4. Große Datenmengen übertragen
      1. Auswahl und Konfiguration der verwendeten Mechanismen
      2. Eine konkrete Implementierung
        1. Definieren des Dienstvertrags
        2. Implementieren des Diensts für Datenströme
        3. Die Konfiguration des Diensts
        4. Erstellen des Clients
    5. Einen REST-Dienst erstellen
      1. Logik und Funktionalität von REST
        1. Adressierbarkeit
        2. Unterschiedliche Repräsentation der Daten
        3. Zustandslosigkeit
        4. Operationen
        5. Verknüpfung von Daten
      2. Einen REST-Dienstvertrag definieren
      3. Einen REST-Dienstvertrag implementieren
      4. Einen REST-Dienst mit den IIS hosten
      5. Einen REST-Dienst mit einem WCF-Client nutzen
        1. Einen REST-Dienst mit einem Smart Client nutzen
        2. Einen REST-Dienst mit einem Rich Client nutzen
      6. Einen REST-Dienst mit einem AJAX-Client benutzen
    6. Die WCF erweitern
      1. Eine Nachrichtenprüfung implementieren
        1. Einen Dienst sprachspezifisch auslegen
          1. Den Client mit einer Nachrichtenprüfung ergänzen
          2. Den Host mit einer Nachrichtenprüfung ergänzen
        2. Einen Message-Logger implementieren
        3. Die WCF mit einem allgemeinen Fehlerhandler erweitern
      2. Eine Parameterprüfung implementieren
  13. 10. WCF-Sicherheit
    1. WCF-Sicherheit im Überblick
    2. Ausschalten der Sicherheit bei Bindungen
    3. Definieren der Sicherheit auf der Transportebene
      1. NetTcpBinding
      2. NetNamedPipeBinding
      3. BasicHttpBinding
      4. WSHttpBinding
      5. WSDualHttpBinding
    4. Einrichten und Benutzen eines Zertifikats für die Transportebene
    5. Definieren der Sicherheit auf der Nachrichtenebene
      1. Definieren der Clientanmeldeinformationen
      2. Einstellen des Verschlüsselungsalgorithmus
      3. Die Erstellung eines Sicherheitskontexts
    6. Authentifizierung
    7. Autorisierung
      1. Sicherheitsrichtlinien für den Codezugriff
        1. Von Identitäten und Prinzipalen
        2. Sicherheitsrichtlinien für den Codezugriff definieren
      2. Sicherheitsrichtlinien in der WCF anwenden
      3. Einen Identitätswechsel durchführen
  14. 11. WCF-Debugging und Ablaufverfolgung
    1. Debugging des Clients
      1. Das transparente Proxyobjekt
      2. Zeitüberschreitung bei Rückrufen vom Server
      3. Debuggen eines Clients in einem Server
    2. Debugging des Diensts
      1. Einfluss des Hostings
      2. Ein Dienst wird von mehreren Clients genutzt
      3. Zeitüberschreitung des Aufrufs vom Client
      4. Debugging auf einer entfernten Maschine
        1. Konfiguration des Debuggings auf einer entfernten Maschine
        2. Konfiguration der Firewall
        3. Konfiguration der notwendigen Rechte
        4. Installation der Anwendung
        5. Verbindung aufbauen und debuggen
      5. Einstellungen für die Ausnahmebehandlung
    3. Die WCF-Ablaufverfolgung konfigurieren
    4. Die WCF-Ablaufverfolgung auswerten
      1. Die Bedienung von SvcTraceViewer
        1. Die Ablaufverfolgung interpretieren
        2. Die Nachrichten interpretieren
        3. Mehrere Dateien gleichzeitig interpretieren
        4. Eine große Datei mit der Ablaufverfolgung einschränken
      2. Lokalisieren eines Fehlers mit der Ablaufverfolgung
        1. Der Fehler
        2. Den Fehler mit dem Viewer finden
  15. 12. Architekturmuster für verteilte Anwendungen
    1. Gliederung der Architektur
      1. Abhängigkeiten zwischen den Teilgebieten der Architektur
      2. Entstehung einer Architektur, der Architekt der Lösung
      3. Beschreibungen von Architekturen
      4. Wann wird welcher Teil der Architektur entwickelt
    2. Architektur einer Benutzeroberfläche
      1. Die zeichenorientierte Benutzeroberfläche
      2. Die grafikorientierte Benutzeroberfläche
      3. Die dialogorientierte Benutzeroberfläche
      4. Die vollgrafische Benutzeroberfläche
      5. Die webbasierte Benutzeroberfläche
      6. Architekturmodelle der Benutzeroberfläche
        1. Der Einfluss der Umgebung auf die Architektur der Benutzeroberfläche
          1. Desktop-Anwendungen
          2. Browserbasierte Anwendungen im Internet oder Intranet
          3. Anwendungen für mobile Geräte
        2. Bedienungsmodelle
          1. Einfache Datenbearbeitung mit SDI
          2. Gleichzeitige Darstellung mehrerer Dokumente mit MDI oder TDI
          3. Der berührungsempfindliche Bildschirm (Touchscreen)
        3. Modelle hinter der Benutzeroberfläche
          1. Das MVC-Architekturmuster
          2. Das MVVM-Architekturmuster
          3. Vor- und Nachteile von MVC- und MVVM-Muster
    3. Funktionelle Architektur
      1. Gliederung nach Ebenen der Gesamtarchitektur
        1. Die clientlastige Verteilung
        2. Die ausgewogene Verteilung
        3. Die datenlastige Verteilung
        4. Allgemeingültige Funktionalitäten
        5. Die Modulabhängigkeiten
      2. Logische Zusammengehörigkeit von Funktionen
      3. Architektur der Implementierung eines Diensts
        1. Der einfache WCF-Dienst
        2. Das Mehrfachdienstkonzept
        3. Der Automationscontroller
        4. Der asynchrone Dispatcher
      4. Architektur der Implementierung eines Clients
        1. Direkte Verwendung des Smart Client
        2. Die gekapselte Verwendung des Smart Clients
        3. Der Kombinationsclient
      5. Beispiel für eine funktionelle Aufteilung
        1. Das Beispielszenario
        2. Die Aufteilung in Businessklassen
        3. Ein Dienst ist ein funktionelles Objekt
        4. Der Versuch der korrekten funktionellen Aufteilung
    4. Datenarchitektur
      1. Die Ebene der Datenspeicherung
        1. Der Einsatz von Dateien
          1. Die Verwendung des Textformats
          2. Die Verwendung binärer Formate
          3. Die Verwendung von XML-Formaten
          4. Spezifische Formate
        2. Der Einsatz von Datenbanken
          1. Direkte Verwendung der Daten aus der Datenbank
          2. Umsetzung der Datenbankdaten vor der Verarbeitung
          3. Verwendung von POCO-Daten
        3. Mischen von Dateien und Datenbanken
        4. Daten verschlüsseln
      2. Die Ebene der Geschäftslogik
      3. Die Ebene der Benutzeroberfläche
      4. Lokalisierung frühzeitig berücksichtigen
      5. Art der Benutzeroberfläche frühzeitig berücksichtigen
    5. Architektur des Netzwerks und des Geräteaufbaus
      1. Die Benutzeroberfläche ist ein Hauptkriterium
        1. Desktopsysteme
        2. Browserbasierte Systeme
        3. Mobile Systeme
      2. Berechnung von Größen und Geschwindigkeiten
        1. Berechnung der maximalen Datenbestände
        2. Verteilung der Clients
        3. Berechnung der maximalen Transferraten
        4. Bestimmung der maximalen Anzahl gleichzeitig aktiver Benutzer
      3. Die Wahl der Ebenen in der Geschäftslogik
        1. Mitbenutzung bestehender Systeme
        2. Sitzungsverwaltung
    6. Architektur der Sicherheit
      1. Grundregeln der Sicherheit
      2. Identitätswechsel oder nicht, das ist hier die Frage
    7. Einfluss der Versionierung und der Weiterentwicklung auf die Architektur
  16. 13. Testen von Software
    1. Gradmesser für die Qualität
      1. Qualitätsmerkmale von Software
        1. Funktionalität und Tauglichkeit (Functionality/Suitability)
        2. Geschwindigkeit und Effizienz (Performance/Efficiency)
        3. Kompatibilität (Compatibility)
        4. Gebrauchstauglichkeit (Useability)
        5. Zuverlässigkeit (Reliability)
        6. Sicherheit (Security)
        7. Wartbarkeit (Maintainability)
        8. Übertragbarkeit (Portability)
      2. Vorgehen für das Testen von Software
    2. Software automatisiert testen
      1. Kontinuierliche Integration des Codes
      2. Unit-Tests
      3. Automatisiertes Testen von Benutzeroberflächen
      4. Grundlegende Überlegungen zum Testen von Programmen
        1. Komponententests (White-Box)
        2. Komponententests (Black-Box)
        3. Modultests
        4. Systemtests
        5. Sanity-Tests
        6. Durchführen von Lasttests
      5. Messen der Codeabdeckung
      6. Grundsätze für das automatisierte Testen
        1. Tests beliebig wiederholbar auslegen
        2. Die Testreihenfolge soll keine Rolle spielen
        3. Möglichst auf der Ebene von Bibliotheken testen
        4. Positiv- und Negativtests vorsehen
        5. Jeder Test hat mindestens zwei Prüfungen
        6. Tests mit unterschiedlichen Sprachen erwägen
        7. Trivialtests möglichst automatisieren
        8. Testcode ist nicht Produktcode, aber produktiver Code
        9. Code für 32-Bit und 64-Bit separat testen (doppelter Aufwand)
        10. Möglichst nur den wirklichen Prüfling testen
        11. Einen Test für das Zeitverhalten bereitstellen
        12. Einen Test maschinenunabhängig auslegen
        13. Ohne Test kein Code ohne Test
    3. Visual Studio und Testen
      1. Einen Test erstellen
      2. Einen Test ausführen
      3. Attribute für Testklassen und Testmethoden
        1. Attribute für Initialisierung und Bereinigung anwenden
        2. Tests kategorisieren und priorisieren
        3. Testdaten verteilen
      4. Einen Test durchführen und den Testkontext benutzen
      5. Testresultate überprüfen und Protokolle schreiben
        1. Prüfklassen verwenden
        2. Eigene Prüfungen programmieren
          1. Eine eigene Prüfklasse erstellen
          2. Prüfmethoden als typspezifische Erweiterungen erstellen
        3. Umgang mit Ausnahmen (Negativtests)
          1. Ausnahmen deklarativ prüfen
          2. Ausnahme imperativ prüfen
          3. Ausnahmenprüfung in Methoden auslagern
      6. Einen datengetriebenen Test erstellen
      7. Testeinstellungen definieren
      8. Tests in einer definierten Reihenfolge ausführen
    4. Einen WCF-Dienst testen
      1. Kontrolle der WCF-Vertragsdefinitionen
        1. Vertragskontrolle mit einer Visual Studio-Erweiterung
        2. Vertragskontrolle mit einem Unit-Test
      2. Serialisierung von Verträgen
      3. Kontrolle der Parametrisierung der WCF
      4. Kontrolle der Anwendungsperformance
        1. Simulation der Eingabegeschwindigkeit
        2. Simulation der Netzwerkgeschwindigkeit
    5. Einfluss des Testens auf die Architektur und den Codierungsstil
      1. Modularisierung von Code, Vermeidung von Redundanzen
      2. Verwendung von Entwurfsmuster
        1. ASP.NET MVC und MVVM
        2. Windows-Dienste testen
      3. Codierung anpassen
  17. A. Begriffe und Abkürzungen
  18. B. Standardwerte der WCF-Konfiguration
    1. ServiceBehaviorAttribute
    2. ServiceHost
    3. Bindung
      1. Klasse NetTcpBinding
      2. Klasse BasicHttpBinding
      3. Klasse WSHttpBinding
      4. Klasse WSDualHttpBinding
    4. Client
    5. Drosselung
  19. C. Über den Autor
    1. Rolf Wenger, zur Person
  20. Stichwortverzeichnis
  21. Impressum