Web Service Discovery in WCF: WS-Discovery oder UDDI?
Frage
Ich kenne den Unterschied zwischen UDDI und WS-Discovery (gut kennt Lage einen Service vs Sendung suchen). Aber meine Frage ist: Was ist der einfachste Weg, um einen Webservice in WCF zu entdecken? Durch einfachste meine ich, was bereits in WCF implementiert und kann nun verwendet werden? Ich habe keine eingebaute bei der Implementierung in WCF für UDDI oder WS-Discovery gesehen.
Haben Sie einen Link haben oder Erfahrung über diese beiden Protokolle in WCF zu teilen?
UPDATE
Jetzt denke ich über drei Lösungen, warte auf WS-Discovery auf .NET 4.0, oder vielleicht meine eigene Entdeckung zu schaffen mit dem Peer-to-Peer-Bindung von WCF bereitgestellt Bindung. Auf diese Weise kann ich eine Anfrage senden. Oder die Umsetzung durch die Verbindung von eed3si9n bereitgestellt wird.
Ich denke, dass ich eine Gateway-Schnittstelle leicht tun werden, um die Umsetzung letztere zu ändern.
Lösung
.NET 4.0 wird WS-Discovery haben. Siehe Messaging Verbesserungen in .NET 4.0: (Entdeckung Teil I) Verwendung von WS-Discovery in WCF 4.0 . In der Zwischenzeit hat sich Claudio Masieri eine Implementierung zur Verfügung gestellt. Siehe WS-Discovery-für WCF .
Es gibt auch eine individuelle Entdeckung Umsetzung in ähnlicher Weise wie UDDI getan. Siehe Windows Communication Service Discovery .
Stellen Sie sich vor Sie haben 200 Kunden mit Ihr flippiger Wcf Service. Sie würden alle in ihrer conf hat einen Abschnitt Datei wie diese:
<client>
<endpoint configurationName="default"
address="http://localhost/servicemodelsamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="IDataContractCalculator" />
</client>
<bindings>
<wsHttpBinding>
<binding configurationName="Binding1" />
</wsHttpBinding>
</bindings>
Jetzt entscheiden Sie, das bestehende zu ändern Endpunkt (Serverseite) mit einem neuen dass verwendet SSL aus Sicherheitsgründen. Wie aktualisieren Sie Ihre Kunden? Du kannst schnell sehen, dass es werden kann, langweilig. So ist die Idee Ich möchte Detail hier ist eine Entdeckung zu implementieren Service ähnlich dem, was UDDI tut und ein Metadaten-Resolver zu verwenden, die erhalten Konfiguration aus dem Dienst in um dynamisch einen Proxy zu erstellen so dass der Kunde zu besprechen der Service.
Diese Person hat ähnliche Bedenken wie Sie tun, und scheint eine funktionierende Lösung zu haben.
Andere Tipps
UDDI bietet eine zentrale Registrierungs Speichern von Informationen über verfügbare Dienstleistungen. Es liefert einen Katalog, in dem Verbraucher können Dienstleistungen, die treffen ihre Bedürfnisse. Das Telefonbuch-like Verzeichnis von Informationen ermöglichen Verbraucher Dienste nach dem Namen zu finden, Adresse, Vertrag, Kategorie oder durch andere Daten. UDDI kann gedacht werden als DNS von Web-Services.
Auf der anderen Seite, WS-Discovery bietet ein Protokoll zu entdecken Dienstleistungen, die kommen und gehen von einem Netzwerk. Als Service verbindet das Netzwerk, informiert er seine Kollegen von seine Ankunft durch einen Rundfunk Hallo Botschaft; Ebenso, wenn Dienste fallen aus dem Netzwerk per Multicast sie eine Bye Botschaft. WS-Discovery-basiert nicht auf ein einzelner Knoten Informationen zu hosten über alle verfügbaren Dienste wie UDDI der Fall ist. Vielmehr jeder Knoten vorwärts Informationen über die verfügbaren Dienste in einer Ad-hoc-Mode. Dies reduziert die Höhe der Netzinfrastruktur benötigte Dienste zu entdecken und Bootstrapping erleichtert.
Zitat aus: http://travisspencer.com/blog/2007/09/ post.html
Hier ist eine gute Liste der Eigenschaften: http://laflour.spaces.live.com/Blog/cns! 7575E2FFC19135B4! 728.entry
jUDDI hat einen .NET-Client, die Sie verwenden können. Es vereinfacht die eine Reihe von Dingen für mit UDDI arbeiten.
Aus der Erfahrung, gibt es nur zwei oder drei funktionierende Implementierungen von WS-Erkennung.
- Apache CXF, aber nur, wenn lief außerhalb eines Behälters
- Dieses: https://code.google.com/p/java- ws-Entdeckung / , die nicht in Jboss funktioniert und ist nicht betreut
- Microsoft .NET 4.0ish
UDDI Sie alles zugreifen können. Es gibt viele Client- und Server-Implementierungen. (Nur die Version 3 Zeug ist hier aufgelistet)
- IBM WS-Registry
- Apache jUDDI
- Microsoft UDDI v3 mit Biztalk (seinem freien mit 2008-Server)
- HP SOA / Systinet oder was auch immer es ist jetzt genannt
- WSO2 hat etwas
- ebXML hat eine Art Brücke oder Adapter
Es gibt sogar einen Endpunkt REST für UDDI3 (jUDDI 3.2 hat es, XML oder JSON-Antworten), die diese auf viele weitere Möglichkeiten eröffnet.
Darüber hinaus die Daten, die mit WS-Discovery-sharable ist etwas begrenzt im Vergleich zu der nahezu unbegrenzten Daten, die Sie UDDI anhängen können.
Das ist nur meine 2 Cent.