2010-12-21 10 views
5

Ich integriere ein Produkt eines anderen Anbieters mit unseren bestehenden Prozessen.Kann ein WCF-Dienst wie ein ASP.NET-Webdienst verwendet werden?

Dieses Produkt ist über einen ASP.NET-Webdienst mit unserem System verbunden. Wie in, muss ich einen ASP.NET-Webdienst schreiben, der die bestimmten Methodennamen und Parameter hat, die der Kreditor angegeben hat.

Einfach genug, aber wir wollen so viel wie möglich zu WCF migrieren. Ich habe WCF noch nicht viel benutzt, aber wie ich es sehe, ist es der Ersatz für ASP.NET Web Services (und andere Dinge).

Da ich das Produkt des Anbieters nicht ändern kann, kann ich den neuen Webdienst mit WCF nur schreiben, wenn ein WCF-Dienst wie ein ASP.NET-Webdienst verwendet werden kann (dh bis zu das Produkt des Anbieters betrifft, verbraucht es einen ASP.NET-Webdienst).

Können WCF-Services auf diese Weise konsumiert werden?

Antwort

5

Ja, Webdienste sind Webdienste. Im Allgemeinen ist WCF flexibler und leistungsstärker als ASP.NET. Sie können jedoch die Nachricht "In-the-Wire" in einen WCF-Dienst hinein und aus einem WCF-Dienst herausholen, um genau so zu sein wie die Nachrichten für einen ASMX-Dienst. Aber, WCF ist auch verschiedene standardmäßig.

Migration sollte fast mechanisch sein. Ersetzen Sie die ASMX-Datei diese enthalten:

<%@ WebService 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Class="CommunicationService" %> 

... mit einer SVC-Datei mit diesem:

<%@ ServiceHost 
    Language="C#" 
    CodeBehind="~/App_Code/CommunicationService.cs" 
    Service="CommunicationService" %> 

... und Sie sind fast fertig.

Die Standardeinstellungen für einen WCF-Webdienst unterscheiden sich jedoch von denen für einen ASP.NET-Webdienst. Insbesondere können die XML-Namespaces der eingehenden und ausgehenden Nachrichten unterschiedlich sein. Nicht jeder gibt eindeutige XML-Namespaces für ihre Dienste und Nachrichten an, aber für die, die dies tun, ist die Migration ein Problem. Der Unterschied im Verhalten (WCF-vs-ASPNET) führt dazu, dass Apps, die erfolgreich einen ASMX-Service aufrufen konnten, nicht mit einem "konvertierten" WCF-Service arbeiten.

This article behandelt das Problem in einigen Details und beschreibt eine gute Problemumgehung: Verwenden Sie einen benutzerdefinierten ServiceHost.

Der Service-Host-Code im obigen Artikel ist unvollständig, da nur das Anfrage-Schema repariert werden kann; Sie könnten auch etwas ähnliches für das Antwortschema tun müssen.

Viel Glück.

0

Zusätzlich zu den anderen Antworten, die auf Ihre Migrationsangelegenheiten hinweisen, können Sie NOCH öffnen, damit Ihre alten Webdienste weiterhin so funktionieren wie bisher, aber diese Webdienste (Vorhanden) auf den WCF-Hostdienst verweisen. Sowohl der neue als auch der alte Webservice arbeiten nahtlos zusammen.

Verwandte Themen