Procedimiento para usar un moniker de servicio con contratos WSDL
Hay situaciones en las que usted querrá tener un cliente de Interoperabilidad COM completamente autónomo. Puede que el servicio que quiere llamar no exponga un extremo MEX y puede que la DLL cliente de WCF no se registre para la interoperabilidad COM. En estos casos, puede crear un archivo WSDL que describe el servicio y lo pasa en el moniker del servicio WCF. Este tema describe cómo llamar al ejemplo de WCF Introducción utilizando un moniker WSDL de WCF.
Utilización del moniker de servicio WSDL
Abra y compile la solución de ejemplo GettingStarted.
Abra un explorador y busque
http://localhost/ServiceModelSamples/Service.svc
para asegurarse de que el servicio está funcionando.En el archivo Service.cs, agregue el atributo siguiente en la clase CalculatorService:
[ServiceBehavior(Namespace = "http://Microsoft.ServiceModel.Samples")] // This service class implements the service contract. public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }
Agregue un espacio de nombres de enlace al servicio App.config:
Cree un archivo WSDL para que lo lea la aplicación. Dado que los espacios de nombres se agregaron en los pasos 3 y 4, puede utilizar un explorador para consultar la descripción WSDL completa del servicio yendo a
http://localhost/ServiceModelSamples/Service.svc?wsdl
. Puede guardar a continuación el archivo como serviceWSDL.xml. Si no especifica los espacios de nombres en los pasos 3 y 4, el documento WSDL devuelto de la consulta a la dirección URL anterior no será el WSDL completo. El documento WSDL devuelto incluirá varias instrucciones de importación que importan otros documentos WSDL. Tendrá que pasar por cada instrucción de importación y crear el documento WSDL completo, combinando el WSDL devuelto desde el servicio con el WSDL importado.Abra Visual Basic 6.0 y cree un nuevo archivo .exe estándar. Agregue un botón al formulario y haga doble clic en él para agregar el código siguiente al controlador de clic:
' Open the WSDL contract file and read it all into the wsdlContract string. Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("c:\serviceWsdl.xml", ForReading) wsdlContract = objFile.ReadAll objFile.Close ' Create a string for the service moniker including the content of the WSDL contract file. wsdlMonikerString = "service4:address='http://localhost/ServiceModelSamples/service.svc'" wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'" wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'" wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'" ' Create the service moniker object. Set wsdlServiceMoniker = GetObject(wsdlMonikerString) ' Call the service operations using the moniker object. MsgBox "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54)
Nota
Si el moniker es incorrecto o si el servicio no está disponible la llamada a
GetObject
devolverá un error que dirá "Sintaxis no válida." Si recibe este error, asegúrese de que el moniker que está utilizando es correcto y el servicio está disponible.Ejecutar aplicación de Visual Basic Se mostrará un cuadro de mensaje con los resultados de llamar a Subtract (145, 76.54).