2009-03-31 4 views

Antwort

6

Wenn Ihr WCF-Dienst einen Endpunkt mit Basichttpbinding aussetzt, dann sollte es möglich sein, die .NET 2.0-Client, es zu konsumieren. Wie Marc sagte, "kein Problem".

+0

.NET 2.0 enthält nichts, das net.tcp oder wsHttp, außer WSE, verbrauchen kann, die eine schlechtere Heilung als die Krankheit ist. –

+1

ach, stimmt ...... WCF kam mit .NET 3.0 - vergiss das nicht! –

+0

Also, welche Art von Bindung sollte ich verwenden, für jetzt verwende ich wsHttp und es scheint überhaupt nicht zu funktionieren – Melursus

2

Ja natürlich - der auf .NET 3.5 gehostete Dienst benötigt nicht die gleiche Version des .NET-Frameworks auf dem Client. Verdammt - Sie können einen solchen Dienst sogar von Java oder PHP aus aufrufen! Das ist das ganze POINT der Service Oriented Architecture! :-)

Sie müssen Ihren Servicevertrag definieren (was heißt der Service, welche Methoden sind verfügbar, um darauf aufgerufen zu werden) und Sie müssen entscheiden, wie Sie ihn hosten, z. Unter welcher Adresse können Sie diesen Dienst aufrufen und welche Parameter sind erforderlich (z. B. HTTP vs. TCP, gesichert oder nicht gesichert usw.) - das ist eine Menge Arbeit, selbst in WCF.

Hier sind drei einleitende Artikel für WCF - überprüfen Sie sie!

aber das Service aus einer .NET 2.0-Client-Aufruf ist absolut kein Problem!

Marc

+0

das ist nicht 100% wahr. Viel hängt vom Web Service Protokoll ab. – Randolpho

+0

ja, natürlich - die Protokolle und Sicherheitseinstellungen usw. müssen übereinstimmen - aber die Tatsache, dass der Client .NET 2.0 und der Dienst ist .NET 3.5 ist kein Problem. –

+0

Die Sache ist, dass .NET 2.0-Bibliotheken die von WCF unterstützten Standardprotokolle nicht unterstützen - in vielen Fällen existierten sie nicht oder wurden nicht fertig gestellt, als .NET 2.0 herauskam. Es ist also überhaupt kein "absolut kein Problem"; es ist ein * riesiges * Problem. – Randolpho

3

Ja, Sie können es tun. Es gibt jedoch einige Einschränkungen:

Sie müssen Protokolle verwenden, die übereinstimmen. Die Standard-.NET 2.0-Bibliotheken unterstützen nicht viele sichere Webdienstfunktionen. In der Tat, Sie sind ziemlich fest mit der Verwendung von nur BasicHttpBinding auf dem WCF-Dienst, wenn Sie von einer Standardinstallation von .NET 2.0 konsumiert werden möchten. Dies ist eine schwerwiegende Einschränkung in vielen Unternehmensszenarien. Es kann jedoch alles sein, was Sie brauchen.

Wenn Sie mehr Sicherheit benötigen, aber immer noch .NET 2.0 verwenden, gibt es Alternativen. Auch hier muss Ihr WCF-Dienst Ihren .NET 2.0-Client unterstützen, aber Ihr .NET 2.0-Client muss auch eine externe Bibliothek nutzen. Insbesondere benötigen Sie die von Microsoft ausgegebene Web Service Enhancements. Beachten Sie jedoch, dass diese Bibliotheken eine Beta Version einiger SOAP-Protokolle implementieren, während WCF (der WSE-Nachfolger in vielerlei Hinsicht) die Standards standardmäßig implementiert. Da einige Änderungen in den Protokollen (insbesondere WS-Adressierung) aufgetreten sind, müssen Sie einen customBinding Endpunkt für Ihren WCF-Dienst anbieten.

Leider kann ich Ihnen nicht sagen, welche Sie verwenden werden, da es davon abhängt, welches Protokoll Sie auf dem Dienst unterbringen möchten, aber die meisten Ihrer Probleme werden durch Ändern der messageVersion der textMessageEncoding für gelöst die benutzerdefinierte Bindung. Dies ist nicht das beste Szenario, aber es könnte Ihnen etwas kaufen, wenn Sie versuchen, einen Client zu integrieren.

Unter dem Strich gibt es eine Menge Arbeit, um einen .NET 2.0-Client mit einem WCF-Dienst für etwas anderes als basicHttpBinding zu sprechen. In vielen Fällen kann basicHttpBinding ausreichen. Für viele Unternehmensszenarien wird dies nicht der Fall sein.Ich kann nicht sagen, was Ihnen helfen wird oder nicht, aber es ist möglich, um es zur Arbeit zu bekommen - ich habe es erfolgreich gemacht.

Aber es ist ein großer Schmerz. Suchen Sie nach einer Alternative, wenn Sie können.