Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Coaching
Support
Softwareentwicklung
Entwickler-Vermittlung
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
Beratung/Coaching
Beratung/Coaching
Beratungsthemen
Coaching
Unsere Berater
Referenzkunden
Konditionen
Angebotsanfrage
In-House-Schulungen
In-House-Schulungen
Überblick
Themen/Fachgebiete
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Moderne Webanwendungen
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Unsere Trainer
Konditionen
Angebotsanfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET, C#, VB, Visual Studio
.NET, C#, VB, Visual Studio
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0/4.5
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Offene PowerShell-Seminare
Inhouse-Seminare
Windows
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Weitere Websites
Tag Cloud
Impressum
Rechtliches

Erklärung des Begriffs: Windows Communication Foundation (WCF)
Was ist Windows Communication Foundation (WCF)?

Zurück zur Stichwortliste



Begriff Windows Communication Foundation
Abkürzung WCF
Synonyme/Aliase

Erläuterung des Begriffs Windows Communication Foundation

Windows Communication Foundation (WCF) ist eine Klassenbibliothek (Managed Library) zur Entwicklung von (servicebasierten) verteilten Anwendungen mit .NET. Es erlaubt die Erstellung von Kommunikationsanwendungen zum Fernaufruf von Code und zur Anwendungskopplung. Windows Communication Foundation (WCF) ist Teil seit .NET Framework 3.0 und wurde in jeder neuen Version aktualisiert. Früherer Codename war Indigo als Teil des Windows Frameworks (WinFX). WCF wird installiert durch die Installation des .NET Framework (ab 3.0).

WCF besitzt fünf wesentlichen Eigenschaften:
- Die verschiedenen Aspekte verteilter Kommunikation (Schnittstelle, Implementierung, Kommunikationsprotokoll, Infrastrukturdienste, Hosting) lassen sich gut logisch trennen
- WCF schreibt keine Protokolle und Formate fest vor, sondern erlaubt dem Nutzer einen Kommunikati-onskanal aus verschiedenen Protokolle und Formate zusammenzustellen.
- Es gibt sowohl Unterstützung für plattformübergreifende Protokolle und Formate (W3C / WS-*) als auch proprietäre Protokolle und Formate der .NET-Welt
- Ohne Neukompilierung eines Dienstes kann die Kommunikationsform geändert werden
- Ohne Neukompilierung können weitere Kommunikationsformen ergänzt werden

Hintergründe



In den ersten drei Versionen des .NET Frameworks (1.0, 1.1 und 2.0) gab es zwei konkurrierende Ansätze für verteilte Systeme mit .NET: .NET Remoting und die ASP.NET-basierten Webservices, die nach ihrer Dateinamenserweiterung auch einfach kurz ASMX genannt wurden. Dabei verfolgten .NET Remoting und ASMX unterschiedliche Ziele. .NET Remoting war gedacht für proprietäre Kommunikation zwischen zwei .NET-Anwendungen, während sich .NET mit den ASP.NET-basierten Webservices dem Rest der Welt über die beim W3C-standardisierte Kommunikation über HTTP/SOAP öffnete. Aufgeweicht wurde diese scharfe Trennung dadurch, dass .NET Remoting auch einige Spielarten von HTTP/SOAP verstand und Drittanbieter .NET Remoting um die Kommunikation in Richtung CORBA und Java über IIOP und RMI erweiterten.

Seit .NET 3.0 gibt es mit der der Windows Communication Foundation (WCF) einen Ansatz, der die Kommunikation zwischen .NET-Anwendungen und die plattformübergreifende Kommunikation unter einem Dach vereint. WCF hat dabei nicht nur dafür gesorgt, dass es nicht mehr zwei grundverschiedene Herangehensweisen für diese beiden Kommunikationsfälle gibt, sondern dass bei einer Anwendung auch ohne Neukompilierung zwischen den beiden Fällen wechseln kann bzw. parallel anbieten kann.

WCF ist ein Supermarkt mit Angeboten in zahlreichen Kategorien, aus denen sich der Nutzer seinen individuellen Kommunikationskanal zusammenstellen kann. Man wählt ein Übertragungsprotokoll (z.B. HTTP, TCP, Named Pipes, UDP, SMT, MSMQ) und ein Serialisierungsformat (z.B. SOAP, MTOM, ATOM, JSON, RSS oder ein proprietäres Binärformat) sowie optional Standards bezüglich wie Authentifizierung, Verschlüsselung, Autorisierung, Integrität und Zuverlässigkeit wie WS-Security, WS-Policy, WS-SecurityPolicy, WS-Trust, WS-SecureConversation, WS-Addressing, WS-Federation, WS-ReliableMessaging und WS-AtomicTransactions. Die herausragende Eigenschaft von WCF ist, dass sich der Entwickler zur Entwicklungszeit nicht auf eine Kombination der o.g. Möglichkeiten festlegen muss, sondern dies durch Änderungen der Konfigurationsdatei zur Betriebszeit und sogar durch Einstellungen des Benutzers zur Laufzeit verändert werden kann. Auch kann ein Endpunkt in WCF gleichzeitig auf verschiedene Weisen (z.B. TCP/bin und HTTP/SOAP) mit Clients kommunizieren.

Offiziell bezeichnet Microsoft als die Vereinheitlichung folgende Konzepte:
- XML-ASP.NET-Webservices (ASMX)
- Webservice Enhancements
- .NET Application Services (COM+, .NET Enterprise Services)
- .NET Remoting
- Distributed Component Object Model (DCOM)
- Message Queuing (MSMQ)

Zwar sind aus allen diesen Technologien Teile in WCF enthalten, doch in ein ganzer Zweig der verteilten Kommunikation in WCF nicht mehr berücksichtigt: Das Konzept verteilter Objektsystem mit echten Proxies und echten Objektkopien. Das serviceorientierte Konzept sieht nur noch vor, dass Client (vorzugsweise zustandslose) Dienste aufrufen, die Daten austauschen. Auf dem Client sind die Daten nur noch reine Datenstrukturen und besitzen keine domänenspezifischen Methoden mehr.

Entwicklern vin Clients und Servern


WCF stellt für die Kommunikationen zwischen Prozessen oder Systemen zahlreiche frei kombinierbare Funktionen wie Authentifizierung, Verschlüsselung, Autorisierung, Integrität, Zuverlässigkeit, Transaktionen und Nachrichtenwarteschlangen bereit. Wie bei .NET Remoting sind das Übertragungsprotokoll und das Serialisierungsformat wählbar. Microsoft wird zunächst zur Übertragung per HTTP, HTTPS, TCP, MSMQ sowie Named Pipes unterstützen. Bei der Serialisierung besteht die Wahl zwischen dem textbasierten SOAP, dem Message Transmission Optimization Mechanism (MTOM) und einem binärcodierten SOAP, das Microsoft proprietär entwickelt hat. Ab .NET 3.5 werden auch die Formate JavaScript Object Notation (JSON), Really Simple Syndication (RSS) und das Atom Syndication Format.
WCF unterstützt viele bestehende Webservice-Standards wie WS-Security, WS-Trust, WS-AtomicTransaction, WS-Coordination, WS-SecureConversation und WS-ReliableMessaging. Drittanbieter können weitere Protokolle und Formate ergänzen.

Ein WCF-Dienst besitzt einen oder mehrere Endpunkte mit verschiedenen Eigenschaften:
- Die Adresse besteht aus einem URL mit Protokollangabe, Pfad und Port.
- Der Vertrag (Contract) definiert die eigentlichen Operationen, die der Dienst anbietet.
- In der Bindung (Binding) sind die bei der Kommunikation zu verwendenden Protokolle und Formate festgelegt.

Zum Hosting von WCF-Diensten stehen dem Entwickler ebenfalls mehrere Optionen zur Verfügung, die von einer einfachen Konsolenanwendung, über einen Windows-Dienst und den Internet Information Server (IIS) bis zu dem in Windows integrierten Application Server COM+ reicht. In Vista und Windows Server 2008 stellt Microsoft mit Windows Activation Service (WAS) (früherer Name »Webhost«) einen universellen Host für WCF-Dienste bereit. Ein echter .NET-fähiger Application Server fehlt aber weiterhin. Diesen wird Microsoft in den nächsten Jahren erst im Rahmen des Projekt "Oslo" [RW01] erstellen.
Eine herausragende Eigenschaft von WCF ist, dass einen Dienst mehrere verschiedene Endpunkte mit unterschiedlichen Formaten und Protokollen besitzen kann. Dies bedeutet, dass man einen WCF-Dienst schreiben kann, der von .NET-Clients über proprietäre Protokolle und gleichzeitig von anderen Clients (z.B. Java, C++, PHP) über W3C-Standards angesprochen werden kann.

[RW01] Robert Wahbe: Crossing Boundaries: The Vision for Oslo
http://www.microsoft.com/soa/products/oslo.aspx

Implementierung


Die WCF-Erweiterungen für Visual Studio bietem eine Projekt- und eine Elementvorlage, die den Quellcode für einen "Hallo Welt"-Dienst und einen passenden WCF-Host enthalten. Durch einen neuen Kontextmenü-Eintrag "Add Service Reference" (nicht zu verwechseln mit "Add Web Reference") kann man den passenden Client generieren lassen. Alternativ steht das Kommandozeilenwerkzeug svcutil.exe zur Verfügung.

Using System;
using System.ServiceModel;

[ServiceContract()]
public interface IHalloDienst
{
[OperationContract]
string SageHallo(string name);
}

public class HalloDienst : IHalloDienst
{
public string SageHallo(string name)
{
  return "Hallo " + name + "!";
}
}
Listing 1: Das Grundbeispiel für einen verteilten WCF-Dienst

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0";>
  <system.serviceModel>
   <services>
   <!-- Before deployment, you should remove the returnFaults behavior configuration to avoid disclosing information in exception messages -->
   <service name="HalloDienst" behaviorConfiguration="returnFaults">
   <endpoint contract="IHalloDienst " binding="wsHttpBinding"/>
   </service>
   </services>
   <behaviors>
   <behavior name="returnFaults" returnUnknownExceptionsAsFaults="true" />
   </behaviors>
  </system.serviceModel>

  <system.web>
   <compilation debug="true"/>
  </system.web>

</configuration>
Listing 2: Konfiguration für den Dienst aus Listing 1

Interoperabilität


WCF ist kompatibel zu mit ASP.NET erstellten XML-Webservices (ASMX), sofern nur die Protokolle von WS-I BP1 verwendet werden. WCF ist nicht kompatibel zu .NET Remoting. Ein .NET Remo-ing-Client kann nicht mit einem WCF-Dienst reden.

Kritik an WCF


Auf den ersten Blick beeindruckt die Vielfalt der in WCF verfügbaren Optionen. Ein Entwickler verteilter Anwendung muss sich jedoch bewusst sein, dass WCF dem Paradigma "Serviceorientierung" folgt. Die in .NET Remoting verfügbare objektorientierte Anwendungsverteilung, z.B. das Übergeben einer Objektreferenz, entfällt. Außerdem wird das in .NET Remoting verwendete Binärformat nicht mehr unterstützt, sodass ein .NET Remoting-Client gar nicht mit einem WCF-Dienst reden kann. Da das Binärformat nicht dokumentiert ist, hilft es wenig, dass man WCF erweitern kann für die Kommunikation mit anderen Fernaufrufprotokollen wie Java RMI und CORBA. Entwickler, die auf .NET Remoting gesetzt haben, müssen migrieren oder mit einer alten, zukünftig von Microsoft nicht mehr weiterentwickelten Technologie leben. COM+-Anwendungen hingegen kann man als WCF-Dienst veröffentlichen und mit COM-Clients kann man WCF Services aufrufen.

Zudem hat die Austauschbarkeit von Protokollen innerhalb von WCF auch Grenzen, denn einige Protokolle ziehen automatisch andere Eigenschaften des Kommunikationskanal nach sich, sodass es bei Änderung des Protokolls zu einer Verhaltensänderung kommen kann.

Weitere Ressoucen auf dieser Website

FAQ zu dem Buch ".NET 3.0 Crashkurs"
WCF Barometer - Leistungsmessungen der Windows Communication Foundation (WCF)

Artikel in gedruckten Medien

  • Stichwort "Windows Communication Foundation (WCF)"
     (Fachkompendium Protokolle und Dienste, 2006)
  • Microsoft .NET 3.0 Crashkurs
     (.NET 3.0 Crashkurs, 2007)
  • Von Punkt zu Punkt - Windows Communication Foundation (WCF)
     (iX - Magazin für professionelle Informationstechnik, 2006)
  • Verteilte Systeme und Services mit .NET 4.0
     (Verteilte Systeme und Services mit .NET 4.0, 2011)
  • Stichwort "Windows Communication Foundation"
     (Fachkompendium Protokolle und Dienste, 2006)
  • .NET 4.0 Crashkurs
     (.NET 4.0 Crashkurs, 2010)
  • .NET 4.0 Update
     (.NET 4.0 Update, 2010)
  • Microsoft .NET 4.5 Update - Crashkurs
     (.NET 4.5 Update, 2012)
  • Querverweise zu anderen Begriffen im Lexikon


    siehe Indigo

    Message Transmission Optimization Mechanism
    Distributed Component Object Model
    Internet Information Server
    JavaScript Object Notation
    Windows Activation Service
    Really Simple Syndication
    .NET Enterprise Services
    Component Object Model
    Konfigurationsdatei
    Windows Server 2008
    ASP.NET-Webservice
    .NET Framework 3.0
    Windows Framework
    Authentifizierung
    Managed Library
    Windows Server
    Serialisierung
    XML-Webservice
    .NET Remoting
    Transaktion
    JavaScript
    Webservice
    System.Web
    Exception
    Contract
    .NET 3.0
    .NET 3.5
    Prozesse
    Kontext
    Webhost
    Indigo
    ATOM
    COM+
    Pipe
    Oslo
    ASMX


    Dienstleistungen:

    Beratung/Consulting zu Windows Communication Foundation

    Support zu Windows Communication Foundation

    Schulungen zu diesem Thema:
    .NET 3.0-Crashkurs - Programmierung mit WPF/WCF/WF/WCS - für Umsteiger von .NET 2.0

    .NET 3.5-Crashkurs - Überblick über das .NET Framework 3.5 und Visual Studio 2008 für Umsteiger von .NET 2.0/3.0

    .NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick

    .NET Akademie: Webservices, verteilte Systeme, Workflows und SOA mit .NET 4.5 (Agenda des öffentlichen Seminars)

    .NET Application Server (.NET Enterprise Services, COM+ mit .NET)

    .NET im Überblick

    .NET-Akademie: .NET 4.5-Basisseminar: Softwarearchitektur, Techniken, Pattern, Best Practices (Agenda des öffentlichen Seminars)

    .NET-Sicherheit (.NET Security)

    .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für .NET 1.0/1.1/2.0/3.0/3.5/4.0/4.5)

    ASP.NET Camp für Entwickler von Webanwendungen mit .NET: Von den .NET- und C#-Grundlagen zu ASP.NET und AJAX (5 Tage)

    Enterprise .NET im Überblick

    Mehrschichtiges Entwickeln mit .NET

    Microsoft SharePoint für Entwickler: Anpassen von Sharepoint (Customizing) - wahlweise für Windows SharePoint Services oder Microsoft Office SharePoint Server 2007/2010/2013 (MOSS)

    NHibernate - Objekt-Relationales Mapping (ORM) mit .NET

    Programmierung für Windows 7 und Windows Server 2008 R2

    Verteilte Systeme mit .NET - Basiswissen

    WCF RIA Services & WCF Data Services

    Windows Communication Foundation (WCF) - Aufbauwissen

    Windows Communication Foundation (WCF) - Basiswissen

    Windows Vista für Entwickler (Programmieren für Windows Vista)

    Gesamter Schulungsthemenkatalog