(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Neues in Windows Communication Foundation 4.5

In diesem Thema werden die neuen Funktionen von Windows Communication Foundation (WCF) erläutert.

Es wurde viel unternommen, um die Entwicklung und Verwaltung von WCF 4.5-Anwendungen zu vereinfachen. Weitere Informationen finden Sie unterWCF-Vereinfachungsfunktionen.

Dd456789.collapse_all(de-de,VS.110).gifTaskbasierte asynchrone Unterstützung

Durch Dienstverweis hinzufügen werden standardmäßig asynchrone Methoden für Dienstvorgänge generiert, die Tasks zurückgeben. Dies erfolgt sowohl für synchrone als auch für asynchrone Methoden. Auf diese Weise können die Dienstvorgänge mithilfe des neuen taskbasierten asynchronen Programmiermodells asynchron aufgerufen werden. Wenn Sie die generierte Proxymethode aufrufen, erstellt WCF ein Taskobjekt, das den asynchronen Vorgang darstellt, und gibt diesen Task an Sie zurück. Der Task wird zusammen mit dem Vorgang abgeschlossen. Daher können Sie einen asynchronen Vorgang als taskbasierten asynchronen Vorgang implementieren. Weitere Informationen finden Sie unter Synchrone und asynchrone Vorgänge.

Dd456789.collapse_all(de-de,VS.110).gifVereinfachte generierte Konfigurationsdateien

Wenn Sie einen Dienstverweis in Visual Studio hinzufügen oder das SvcUtil.exe-Tool verwenden, wird eine Clientkonfigurationsdatei generiert. In früheren Versionen von WCF enthielten diese Konfigurationsdateien den Wert jeder Bindungseigenschaft, auch wenn deren Wert dem Standardwert entsprach. In WCF 4.5 enthalten die generierten Konfigurationsdateien nur die Bindungseigenschaften, die auf einen nicht standardmäßigen Wert festgelegt sind.

Weitere Informationen finden Sie unterWCF-Vereinfachungsfunktionen

Dd456789.collapse_all(de-de,VS.110).gifVertrag zuerst-Entwicklung

WCF unterstützt jetzt die Vertrag zuerst-Entwicklung. Das svcutl.exe-Tool verfügt über einen /serviceContract-Schalter, der das Generieren von Dienst- und Datenverträgen von einem WSDL-Dokument ermöglicht.

Dd456789.collapse_all(de-de,VS.110).gifHinzufügen eines Dienstverweises aus einem Projekt für die portable Teilmenge

Projekte für portable Teilmengen ermöglichen es Programmierern von .NET-Assemblys, eine einzelne Quellstruktur zu verwalten und das System mit Unterstützung mehrerer .NET-Plattformen (Desktop, Silverlight, Windows Phone und XBOX) aufzubauen. Projekte für portable Teilmengen verweisen nur auf portable .NET-Bibliotheken, die einer .NET Framework-Assembly entsprechen, die von einer beliebigen .NET-Kernplattform verwendet werden kann. Die Entwicklererfahrung ist identisch mit dem Hinzufügen eines Dienstverweises innerhalb einer beliebigen anderen WCF-Clientanwendung. Weitere Informationen finden Sie unterHinzufügen eines Dienstverweises in einem Projekt für die portable Teilmenge.

Dd456789.collapse_all(de-de,VS.110).gifGeänderter Standard für den ASP.NET-Kompatibilitätsmodus

WCF bietet einen ASP.NET-Kompatibilitätsmodus, der Entwicklern beim Schreiben von WCF-Diensten vollständigen Zugriff auf die Funktionen in der ASP.NET-HTTP-Pipeline gewährt. Um den Modus zu verwenden, müssen Sie das aspNetCompatibilityEnabled-Attribut im <serviceHostingEnvironment>-Abschnitt von web.config auf True festlegen. Außerdem muss die RequirementsMode-Eigenschaft für jeden Dienst in dieser appDomain für AspNetCompatibilityRequirementsAttribute auf Allowed oder Required festgelegt sein. Standardmäßig ist AspNetCompatibilityRequirementsAttribute jetzt auf Allowed festgelegt. Weitere Informationen finden Sie unterNeues in Windows Communication Foundation 4.5 und WCF-Dienste und ASP.NET.

Dd456789.collapse_all(de-de,VS.110).gifNeue Standardwerte für Transporte

Um die Konfiguration zu vereinfachen, wurden einige Standardwerte der Transporteigenschaft geändert. Weitere Informationen finden Sie unterWCF-Vereinfachungsfunktionen.

Dd456789.collapse_all(de-de,VS.110).gifXmlDictionaryReaderQuotas

XmlDictionaryReaderQuotas enthält konfigurierbare Kontingentwerte für XML-Wörterbuchreader, die den Arbeitsspeicher begrenzen, der beim Erstellen einer Nachricht von einem Encoder verwendet wird. Diese Kontingente sind konfigurierbar, allerdings wurden die Standardwerte geändert, um die Wahrscheinlichkeit zu verringern, dass sie von einem Entwickler explizit festgelegt werden müssen. Weitere Informationen finden Sie unterWCF-Vereinfachungsfunktionen.

Dd456789.collapse_all(de-de,VS.110).gifWCF-Konfigurationsvalidierung

Im Rahmen des Buildvorgangs innerhalb von Visual Studio werden WCF-Konfigurationsdateien jetzt für die Attribute überprüft, die innerhalb des Projekts definiert sind. Eine Liste mit Validierungsfehlern oder Warnungen wird in Visual Studio angezeigt, wenn die Validierung fehlschlägt.

Dd456789.collapse_all(de-de,VS.110).gifXML-Editor-QuickInfos

Um neuen und bereits erfahrenen Entwicklern von WCF-Diensten die Konfiguration zu erleichtern, zeigt der XML-Editor in Visual Studio nun QuickInfos für jedes Konfigurationselement, das Teil der Dienstkonfigurationsdatei ist, und dessen Eigenschaften an.

Es wurde Unterstützung für echtes asynchrones Streaming hinzugefügt, bei dem die Senderseite keine Threads blockiert, wenn die Empfängerseite keine Nachrichten liest bzw. Nachrichten langsam liest. Dies erhöht die Skalierbarkeit. Die Einschränkung des Nachrichtenpuffers, die gilt, wenn ein Client eine gestreamte Nachricht an einen von IIS gehosteten WCF-Dienst sendet, wurde aufgehoben. Weitere Informationen finden Sie unterWCF-Vereinfachungsfunktionen.

Eine HTTPS-Protokollzuordnung wurde hinzugefügt, um das Verfügbarmachen eines Endpunkts über HTTPS zu vereinfachen. Um einen HTTPS-Endpunkt zu aktivieren, stellen Sie sicher, dass für die Website eine HTTPS-Bindung und ein SSL-Zertifikat konfiguriert wurden. Aktivieren Sie dann einfach HTTPS für das virtuelle Verzeichnis, von dem der Dienst gehostet wird. Wenn Metadaten für den Dienst aktiviert sind, werden sie ebenfalls über HTTPS verfügbar gemacht.

WSDL-Verarbeitungsstapel einiger Drittanbieter sind nicht in der Lage, WSDL-Dokumente zu verarbeiten, die über Abhängigkeiten mit anderen Dokumenten in Form von "xsd: import" verfügen. In WCF können Sie jetzt angeben, dass alle WSDL-Informationen in einem einzelnen Dokument zurückgegeben werden. Um ein einzelnes WSDL-Dokument anzufordern, fügen Sie "? singleWSDL" an den URI an, wenn Sie Metadaten vom Dienst anfordern.

WebSockets ist eine Technologie, die die echte bidirektionale Kommunikation über die Ports 80 und 443 ermöglicht, wobei die Leistungsmerkmale denen von TCP ähneln. Um die Kommunikation über einen WebSocket-Transport zu unterstützen, wurden zwei neue Bindungen hinzugefügt. NetHttpBinding und NetHttpsBinding. Weitere Informationen finden Sie unter Vom System bereitgestellte Bindungen.

Anhand der folgenden Tabelle erfahren Sie, welche Einstellungen geändert wurden und wo Sie zusätzliche Informationen finden.

Eigenschaft

On

Neuer Standard

Weitere Informationen finden Sie unter

channelInitializationTimeout

NetTcpBinding

30 Sekunden

ChannelInitializationTimeout

listenBacklog

NetTcpBinding

12 * Anzahl der Prozessoren

ListenBacklog

maxPendingAccepts

ConnectionOrientedTransportBindingElement

SMSvcHost.exe

2 * Anzahl der Prozessoren für den Transport

4 * Anzahl der Prozessoren für "SMSvcHost.exe"

MaxPendingAccepts Konfigurieren des Net.TCP-Portfreigabediensts

maxPendingConnections

ConnectionOrientedTransportBindingElement

12 * Anzahl der Prozessoren

MaxPendingConnections

receiveTimeout

SMSvcHost.exe

30 Sekunden

Konfigurieren des Net.TCP-Portfreigabediensts

Um neuen und bereits erfahrenen Entwicklern von WCF-Diensten die Konfiguration zu erleichtern, zeigt der XML-Editor in Visual Studio nun QuickInfos für jedes Konfigurationselement, das Teil der Dienstkonfigurationsdatei ist, und dessen Eigenschaften an.

Mit Windows Communication Foundation (WCF) können Entwickler Dienste mithilfe von Konfigurationsdateien oder Code konfigurieren. Konfigurationsdateien sind nützlich, wenn ein Dienst konfiguriert werden muss, nachdem er bereitgestellt wurde. Bei der Verwendung von Konfigurationsdateien muss ein IT-Experte nur die Konfigurationsdatei aktualisieren, es ist keine Neukompilierung erforderlich. Konfigurationsdateien können jedoch komplex und schwierig zu pflegen sein. Das Debuggen von Konfigurationsdateien wird nicht unterstützt. Auf Konfigurationselemente wird über den Namen verwiesen, was die Erstellung von Konfigurationsdateien fehleranfällig und schwierig macht. WCF ermöglicht auch das Konfigurieren von Diensten im Code. In früheren Versionen von WCF (4.0 und früher) war das Konfigurieren von Diensten im Code in selbstgehosteten Szenarien einfach, weil die ServiceHost-Klasse die Möglichkeit bot, Endpunkte und Verhaltensweisen vor dem Aufrufen von ServiceHost.Open zu konfigurieren. In webgehosteten Szenarien haben Sie jedoch keinen Zugriff auf die ServiceHost-Klasse. Um einen webgehosteten Dienst zu konfigurieren, mussten Sie eine ServiceHostFactory erstellen, durch die ein ServiceHost erstellt und alle erforderlichen Konfigurationsschritte ausgeführt wurden. Ab .NET 4.5 bietet WCF eine einfachere Möglichkeit, selbstgehostete und webgehostete Dienste im Code zu konfigurieren. Weitere Informationen finden Sie unterKonfigurieren von WCF-Diensten in Code.

WCF-Clientanwendungen verwenden die ChannelFactory<TChannel>-Klasse, um einen Kommunikationskanal mit einem WCF-Dienst zu erstellen. Die Erstellung von ChannelFactory<TChannel>-Instanzen verursacht einigen Mehraufwand, da sie die folgenden Vorgänge umfasst:

  1. Erstellen der ContractDescription-Struktur

  2. Reflektieren aller erforderlichen CLR-Typen

  3. Erstellen des Kanalstapels

  4. Freigeben von Ressourcen

Um den Mehraufwand zu minimieren, kann WCF Kanalfactorys zwischenspeichern, wenn Sie einen WCF-Clientproxy verwenden. Weitere Informationen finden Sie unterKanalfactory und Zwischenspeichern.

Ab WCF 4.5 bietet der binäre WCF-Encoder Komprimierungsunterstützung. Der Komprimierungstyp wird mit der CompressionFormat-Eigenschaft konfiguriert. Sowohl der Client als auch der Dienst müssen die CompressionFormat-Eigenschaft konfigurieren. Die Komprimierung unterstützt die HTTP-, HTTPS- und TCP-Protokolle. Wenn ein Client angibt, dass die Komprimierung verwendet werden soll, der Dienst aber keine Komprimierung unterstützt, wird eine Ausnahme über einen Protokollkonflikt ausgelöst. Weitere Informationen finden Sie unterAuswählen eines Nachrichtenencoders

Es wurde Unterstützung für einen UDP-Transport hinzugefügt, der es Entwicklern ermöglicht, Dienste mit "fire and forget"-Messaging (Auslösen und Vergessen) zu schreiben. Ein Client sendet eine Nachricht an einen Dienst und erwartet von diesem keine Antwort.

Es werden jetzt mehrere Authentifizierungsmodi, so wie von IIS unterstützt, für einen einzelnen WCF-Endpunkt unterstützt, wenn der HTTP-Transport und die Transportsicherheit verwendet werden. IIS ermöglicht es Ihnen, mehrere Authentifizierungsmodi für ein virtuelles Verzeichnis zu aktivieren. Durch diese Funktion kann ein einzelner WCF-Endpunkt mehrere Authentifizierungsmodi unterstützen, die für das virtuelle Verzeichnis aktiviert sind, in dem der WCF-Dienst gehostet wird.

Unterstützung für WCF-Dienste mit IDNs (Internationalized Domain Names) wurde hinzugefügt. Weitere Informationen finden Sie unter WCF und internationale Domänennamen.

Eine neue Klasse mit dem Namen HttpClient wurde hinzugefügt, um das Arbeiten mit HTTP-Anforderungen erheblich zu vereinfachen. Weitere Informationen finden Sie unter Vorbereiten von Apps für soziale Netzwerke und für die Verbindung mit HTTP-Diensten und im Beispiel für einen HTTP-Client.

Attributwerte in den Konfigurationsdateien für benutzerdefinierte Attribute, die im Projekt definiert sind, unterstützen jetzt IntelliSense, um das schnelle und präzise Arbeiten mit Konfigurationen zu erleichtern.

WCF-Elemente und -Attribute verfügen jetzt über QuickInfos im XML-Editor, um den Verwendungszweck des Elements oder Attributs einfacher und genauer zu identifizieren.

In einem WCF-Projekt können die in XML definierten Datentypen (die in einem Dienst verfügbar gemacht sind) direkt in eine Codepage eingefügt werden. Der XML-Typ wird als CLR-Typ eingefügt. Ausführliche Informationen finden Sie unter Generieren von Datentypklassen aus XML.

In Visual Studio 2010 wurde von WebServiceHost automatisch ein Standardendpunkt erstellt, unabhängig davon, ob ein Endpunkt explizit angegeben wurde oder nicht. In Visual Studio 2012 erstellt WebServiceHost nur einen Standardendpunkt, wenn keine Endpunkte explizit hinzugefügt wurden. Wenn der Client den Standardendpunkt erwartet, können Sie einen Endpunkt explizit hinzufügen und den Client darauf verweisen. Alternativ können Sie WCF anweisen, zum früheren Verhalten zurückzukehren, indem Sie der Anwendungskonfigurationsdatei folgende Einstellung hinzufügen:

<appSettings>
    <add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
  </appSettings>


Diese von HttpChannelFactory verfügbar gemachte Schnittstelle vereinfacht die Verwendung von Cookies auf der Clientseite. Wenn AllowCookies für die Bindung auf True festgelegt ist, können Sie mit folgendem Code auf Cookies zugreifen:

IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>(); 
System.Net.CookieContainer container = cookieManager.CookieContainer; 


Anschließend können die Cookies unter Verwendung von CookieContainer abgerufen oder festgelegt werden.Wenn AllowCookies auf False festgelegt ist, können Sie die Cookies mit OperationContext manuell abrufen und in anderen Anforderungen unter Verwendung eines anderen OperationContext oder Meldungsinspektors senden.Die IHttpCookieContainerManager-Schnittstelle ermöglicht es Ihnen, einen Benutzer bei einem Dienst zu authentifizieren und das vom Dienst zurückgegebene Authentifizierungscookie zum Authentifizieren bei anderen Diensten zu verwenden.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft