Sie sind hier:
Wissen
Top-Know-how seit 25 Jahren!
Telefon (Mo-Fr 9 bis 16 Uhr): 0201/649590-0 |
Kontaktformular
Alles auch online!
MENU
Medien
Übersicht
Lexikon/Glossar
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Downloads
Newsletter
.NET
Startseite
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: Windows Communication Foundation (WCF)
Begriff
Windows Communication Foundation
Abkürzung
WCF
Eintrag zuletzt aktualisiert am
29.04.2022
Zur Stichwortliste unseres Lexikons
Was ist
Windows Communication Foundation
?
Windows Communication Foundation (WCF) ist eine Klassenbibliothek (
Managed Library
) zur Entwicklung von (servicebasierten) verteilten Anwendungen mit
.NET
. WCF ist eine flexible Inter-Prozess-Kommunikationsbibliothek für
.NET
, bei der sich der Entwickler einen Kommunikationskanal aus verschiedenen Protokollen (z.B.
HTTP
,
TCP
,
UDP
, Named
Pipe
s,
MSMQ
), Formaten (z.B.
SOA
P,
POX
, Binär,
M
TOM
, A
TOM
,
RSS
,
JSON
) und Kommunikationsfeatures (z.B.
Authentifizierung
, Verschlüsselung und Zuverlässigkeit) individuell zusammenzustellen kann. WCF bietet dabei sowohl WS-*-Standards als auch proprietäre Funktionen von Microsoft. WCF 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 Framework
s (
WinFX
). WCF wird installiert durch die Installation des
.NET
Framework (ab 3.0).
WCF in modernem
.NET
(
.NET
Core/
.NET
5 ff.)
Während Microsoft die Client-Bibliothek für WCF (Windows Communication Foundation Client Libraries) [
https://github.com/dotnet/wcf
] beim Umbau von
.NET
Framework zu
.NET
Core übernommen hat, steht die Serverseite von WCF seit 2019 auf der
Liste
der Klassen [
https://www.heise.de/developer/meldung/Build-2019-Microsoft-konkretisiert-die-Plaene-fuer-NET-5-0-4416914.html
], die Microsoft nicht mehr ins moderne
.NET
migrieren will. Microsoft verwies die Entwickler darauf,
REST
-basierte Web-
API
s oder
g
RPC
-Dienste an Stelle von WCF zu nutzen, was einen erheblichen Migrationsaufwand für bestehende WCF-basierten Services bedeutete [
https://www.heise.de/hintergrund/Umstieg-auf-NET-Core-Teil-4-
SOA
P-und-
REST
-Webservices-umstellen-4705706.html?seite=2].
Seit 28. April 2018 gibt es die Version 1.0 des Community-Projekts "
CoreWCF
", das mit Unterstützung durch Microsoft eine Teilmenge der WCF-Serverseite auf modernem
.NET
verfügbar macht. Microsoft bietet dafür technischen Support [
https://github.com/
CoreWCF
/
CoreWCF
/blob/main/Documentation/Microsoft-Support.md] an, auch wenn das Projekt weiterhin kein offizielles Microsoft-Produkt darstellt und auch nicht als Teil des
.NET
SDK
ausgeliefert werden wird.
Eigenschaften von WCF
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 Kommunikationskanal 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
/
SOA
P öffnete. Aufgeweicht wurde diese scharfe Trennung dadurch, dass
.NET
Remoting auch einige Spielarten von
HTTP
/
SOA
P 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 Superma
rkt
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
Pipe
s,
UDP
, SMT,
MSMQ
) und ein
Serialisierung
sformat (z.B.
SOA
P,
M
TOM
, A
TOM
,
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
/
SOA
P) 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
(
DCO
M)
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
Objekt
system mit echten Proxies und echten
Objekt
kopien. 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
Datenstruktur
en und besitzen keine domänenspezifischen
Methode
n mehr.
Entwicklern vin Clients und Servern
WCF stellt für die Kommunikationen zwischen
Prozesse
n oder Systemen zahlreiche frei kombinierbare Funktionen wie
Authentifizierung
, Verschlüsselung, Autorisierung, Integrität, Zuverlässigkeit,
Transaktion
en und Nachrichtenwarteschlangen bereit. Wie bei
.NET
Remoting sind das Übertragungsprotokoll und das
Serialisierung
sformat wählbar. Microsoft wird zunächst zur Übertragung per
HTTP
,
HTTP
S,
TCP
,
MSMQ
sowie Named
Pipe
s unterstützen. Bei der
Serialisierung
besteht die Wahl zwischen dem textbasierten
SOA
P, dem
Message Transmission Optimization Mechanism
(
M
TOM
) und einem binärcodierten
SOA
P, 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;
[Service
Contract
()]
public interface IHalloDienst
{
[Operation
Contract
]
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" returnUnknown
Exception
sAsFaults="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
Objekt
referenz, 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)
Querverweise zu anderen Begriffen im Lexikon
siehe
Indigo
Message Transmission Optimization Mechanism
MTOM
WS-I
CORBA
CoreWCF
Distributed Component Object Model
DCOM
API
REST
TCP
SOA
.NET SDK
gRPC
DCO
HTTP
IIOP
Internet Information Server
IIS
Windows Activation Service
WAS
WAS
JavaScript Object Notation
JSON
XML
Really Simple Syndication
RSS
W3C
MSMQ
PHP
URL
.NET Enterprise Services
ASP.NET
RMI
SDK
COR
Component Object Model
COM
UDP
RPC
COR
Windows Server 2008
Konfigurationsdatei
ASP
.NET Core
ASMX
.NET 3.5
.NET Framework 3.0
.NET 3.0
Authentifizierung
Windows Framework
WinFX
TOM
Managed Library
Windows Server
Serialisierung
Datenstruktur
POX
.NET Remoting
Visual Studio
Transaktion
Webservice
JavaScript
C++
.NET Core
Exception
Contract
.NET 3.5
Prozesse
.NET 3.0
.NET 5
Persona
Methode
Webhost
Google
Broker
Objekt
rkt
Indigo
Liste
.NET
Oslo
COM+
ASMX
Java
Pipe
Beratung & Support:
Beratung/Consulting: WCF-Leistung / WCF-Performance: Optimierung der Windows Communication Foundation (WCF)
Beratung/Consulting: .NET-Webservices mit Windows Communication Foundation (WCF) oder ASP.NET Web API
Beratung/Consulting: Best Practices bei der Softwareentwicklung mit .NET/ASP.NET/WPF/WCF/Entity Framework u.a.
Beratung/Consulting: REST versus SOAP (SOAP und REST im Vergleich)
Beratung/Consulting: Umstellung/Migration/Umstieg von .NET Framework auf .NET 6
Anfrage für Beratung/Consulting zu den Themen Windows Communication Foundation;WCF
Gesamter Beratungsthemenkatalog
Technischer Support zum Themen Windows Communication Foundation;WCF
Schulungen zu diesem Thema
Windows Communication Foundation (WCF) - Aufbauwissen
Windows Communication Foundation (WCF) - Basiswissen
.NET Akademie: Webservices, verteilte Systeme, SOA und REST mit .NET/.NET Core (WCF, ASP.NET WebAPI)
Umstieg auf ASP.NET Core WebAPI und Google RPC (gRPC) in .NET 6.0 (Umstellung/Migration von ASP.NET WebAPI und/oder WCF in .NET Framework auf ASP.NET Core und gRPC in .NET 6.0)
Open Data Protocol (OData) mit WCF Data Services und/oder ASP.NET WebAPI und/oder RESTier
.NET-Sicherheit (.NET Security)
Windows Vista für Entwickler (Programmieren für Windows Vista)
.NET Remoting
Windows-Desktop-Anwendungen: Von den .NET- und C#-Grundlagen zu Windows Forms und Windows Presentation Foundation (WPF)
.NET im Überblick für Softwareentwickler
Microsoft SharePoint für Entwickler: Anpassen/Customizing und Programmieren von Microsoft Sharepoint
ASP.NET WebAPI: REST-Services/HTTP-Services/Microservices
"End-to-End": Eine Best Practices-Softwarearchitektur für eine .NET-Anwendung von der Datenbank bis zur Benutzeroberfläche
Microsoft Application Server "AppFabric"
.NET 3.5-Crashkurs - Überblick über das .NET Framework 3.5 und Visual Studio 2008 für Umsteiger von .NET 2.0/3.0
Mehrschichtiges Entwickeln mit .NET
ASP.NET Core WebAPI 6.0: REST Services/HTTP Services/Microservices
SOAP-Webservices und REST-Dienste (Web-APIs) nutzen mit .NET
.NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick
Microsoft BizTalk im Überblick für Softwarearchitekten und Entscheider
NHibernate - Objekt-Relationales Mapping (ORM) mit .NET
Visual Studio LightSwitch - Rapid Application Development (RAD) für Silverlight und HTML5
ADO.NET Entity Framework (EF) Code-based Modelling (alias Code First/Code Only)
.NET-Basisklassenbibliothek (.NET Base Class Library)
Neuerungen in Internet Information Server/Internet Information Services 7.0/7.5/8.0/8.5/10.0 (IIS 7.0/7.5/8.0/8.5/10.0)
ADO.NET Entity Framework (EF) mit Oracle - Objekt-Relationales Mapping für Oracle-Datenbanken
Umstieg von ASP.NET auf moderne Webtechniken (Single-Page-Web-Applications mit HTML, CSS, JavaScript/TypeScript, Angular u.a.)
Universal Windows Platform (UWP) Apps entwickeln (Windows 10/Windows 11 Apps erstellen)
.NET für Einsteiger
.NET 4.8 - Die Neuerungen in .NET Framework 4.8 im Überblick
Anfrage für eine individuelle Schulung zum Thema Windows Communication Foundation;WCF
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Microsoft .NET 4.5 Update - Crashkurs
Microsoft Visual C# 2010
Microsoft .NET 3.0 Crashkurs
Verteilte Systeme und Services mit .NET 4.0
.NET 4.0 Update
Microsoft .NET 4.5 Update - Crashkurs (E-Book - PDF)
ASP.NET 4.0
Verteilte Systeme und Services mit .NET 4.5
.NET 3.5
.NET 3.5 Crashkurs
.NET 4.0 Crashkurs
Alle unsere aktuellen Fachbücher
E-Book-Abo für nur 99 Euro im Jahr