Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Beispiel zeigt, wie ein Windows Communication Foundation (WCF)-Client implementiert wird, der wesentliche Vorgänge mit einem auf dem lokalen Computer installierten UDDI-v2-Dienst (Universal Description, Discovery, and Integration) ausführt. UDDI-Registrierung ist Bestandteil der in Windows Server 2003 enthaltenen UDDI-Dienste.
Tipp
Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Das Beispiel besteht aus einem Clientkonsolenprogramm (.exe), das mit einer lokal installierten UDDI-Registrierung kommuniziert. Das Beispiel kann auch mit anderen UDDI-Inquire-und-Publish-Dienstimplementierungen kommunizieren. Die Clientaktivität ist im Konsolenfenster sichtbar.
Die Beispielquellen enthalten die folgenden automatisch generierten Dateien:
- UddiTypes.cs (UDDI-Typen)
- UddiInquireClient.cs (UDDI-Inquire-Client)
- UddiPublishClient.cs (UDDI-Publish-Client)
- Sie können diese Dateien neu generieren, um mit Svcutil.exe zu arbeiten. Zum Ausführen des Beispiels müssen Sie diese Dateien nicht neu generieren.
So generieren Sie die oben aufgeführten Dateien
Laden Sie die Datei von UDDI-Schema (möglicherweise nur in englischer Sprache) herunter, und speichern Sie sie unter dem Namen UddiTypes.xsd.
Generieren Sie UddiTypes.cs mit dem folgenden Befehl.
xsd.exe /classes UddiTypes.xsdGenerieren Sie UddiInquireClient.cs mit dem folgenden Befehl.
svcutil.exe /out:UddiInquireClient.cs http://uddi.org/wsdl/inquire_v2.wsdlÖffnen Sie UddiInquireClient.cs, und entfernen Sie sämtliche Typdeklarationen, die sich hinter (aber nicht einschließlich) der Deklaration der folgenden Schnittstelle befinden.
public interface Inquire {...}Stellen Sie außerdem sicher, dass dies vor (aber nicht einschließlich) der ersten typisierten Nachrichtendeklaration erfolgt.
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute( "System.ServiceModel", "3.0.0.0")] [System.ServiceModel.MessageContractAttribute( IsWrapped=false )]Generieren Sie UddiPublishClient.cs mit dem folgenden Befehl.
svcutil.exe /out:UddiPublishClient.cs http://uddi.org/wsdl/publish_v2.wsdlÖffnen Sie UddiPublishClient.cs, und entfernen Sie sämtliche Typdeklarationen, die sich hinter (aber nicht einschließlich) der folgenden Deklaration befinden.
public interface Publish {...}Bis zu (aber nicht einschließlich) der ersten typisierten Nachrichtendeklaration.
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute( "System.ServiceModel", "3.0.0.0")] [System.ServiceModel.MessageContractAttribute( IsWrapped=false )]Entfernen Sie alle Deklarationen innerhalb des Namespaces Uddiorg.api (diese Deklarationen wurden bereits im UddiInquireClient.cs generiert).
Der Client verwendet die Proxys, um Vorgänge zu implementieren, die Informationen aus der UDDI-Registrierung abrufen:
public void Login(string username, string password)
Dient zum Anmelden beim Publish-Dienst. Verwendet den get_authToken()-Vorgang des Publish-Diensts.public businessInfo[] GetBusinessByName(string businessName)
Fragt die UDDI-Registrierung nach Diensten ab, deren Namen mit der angegebenen Zeichenfolge übereinstimmen. Ruft den find_business()-Vorgang des Inquiry-Diensts auf.public string PublishBusiness(string businessName, string description)
Veröffentlicht ein Geschäft in der UDDI-Registrierung. Verwendet den save_business()-Vorgang des Publish-Diensts.public businessInfo[] GetMyBusinesses()
Gibt alle von einem bestimmten Benutzer veröffentlichten Geschäfte zurück. Verwendet den get_registeredInfo()-Vorgang des Publish-Diensts.public businessInfo GetMyBusinessByName(string businessName)
Gibt das erste gefundene Geschäft zurück, das mit einem bestimmten Namen von einem bestimmten Benutzer veröffentlicht wurde. Ruft den get_registeredInfo()-Vorgang des Publish-Diensts auf.public void DeleteMyBusinesses()
Löscht alle von einem bestimmten Benutzer veröffentlichten Geschäfte. Verwendet den delete_business()-Vorgang des Publish-Diensts.public void DeleteMyBusiness(string businessKey)
Löscht ein von einem bestimmten Benutzer veröffentlichtes, vom Schlüssel identifiziertes Geschäft. Verwendet die registeredInfo()- und delete_business()-Vorgänge des Publish-Diensts.
Der Client gibt den Endpunkt und die Bindung für die Inquire- und Publish-Dienste, mit denen er kommuniziert, in einer Konfigurationsdatei (App.config) an. Die Clientendpunktkonfiguration besteht aus einem Konfigurationsnamen, einer absoluten Adresse für den Dienstendpunkt, der Bindung und dem Vertrag, wie in der folgenden Konfiguration gezeigt.
<bindings>
<basicHttpBinding>
<binding name="Https">
<security mode="Transport">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint name="Inquire"
address="https://<machine with UDDI Services>/uddi/inquire.asmx"
binding="basicHttpBinding" bindingConfiguration="Https"
contract="Inquire" />
<endpoint name="Publish"
address="https://<machine with UDDI Services>/uddi/publish.asmx"
binding="basicHttpBinding" bindingConfiguration="Https"
contract="Publish" />
</client>
So richten Sie das Beispiel ein, erstellen es und führen es aus
Stellen Sie sicher, dass UDDI-Dienste unter Windows Server 2003 installiert sind. Gehen Sie zu Software, Windows-Komponenten hinzufügen/entfernen, und stellen Sie sicher, dass UDDI-Dienste aktiviert ist. Wenn dies nicht der Fall ist, aktivieren Sie das Kontrollkästchen, und folgen Sie dem Assistenten zum Installieren der UDDI-Dienste.
Stellen Sie sicher, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.
Folgen Sie zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Wenn der Benutzer des UDDI-Clients nicht die korrekten Anmeldeinformationen zum Authentifizieren bei UDDI-Diensten besitzt, sollte ein lokaler Benutzer (auf dem Computer, auf dem UDDI-Dienste installiert sind) erstellt und das <appSettings>-Element in der Konfigurationsdatei (App.config) aktualisiert werden.
Standardmäßig sind UDDI-Veröffentlichungsvorgänge nur lokalen Administratoren erlaubt. Stellen Sie sicher, dass ein neu erstellter Benutzer auf den Publish-UDDI-Dienst zugreifen kann, indem Sie entweder den Benutzer zu einem lokalen Administrator machen oder die Rolle "Publisher Group Name" in der Konsole für UDDI-Dienste so ändern, dass sie das Benutzerkonto enthält. Wenn Sie Letzteres durchführen möchten, öffnen Sie die Konsole für UDDI-Dienste, klicken Sie mit der rechten Maustaste auf den Knoten UDDI-Dienste, wählen Sie die Registerkarte Rollen aus, und wählen Sie das Konto des Herausgebers aus.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.