2010-07-01 13 views
5

He creado dos archivos wsdl con tipos compartidos importados del archivo de esquema xsd.Creación de un servicio web y un cliente con tipos compartidos

Después de eso he creado servicios web utilizando la interfaz generada por la herramienta wsdl.exe con el parámetro/serverInterface.

El servicio web Frist, tiene el método web "RegisterData" con poner en la cola algún objeto complejo para ser procesado, por el sistema "A". Como resultado de este método se devuelve Boolean (con decirnos que el objeto se registró con éxito).

Segundo servicio web, tiene el método web "UpdateData" para actualizar algunos datos en el sistema "B" basado en este mismo objeto, con el que fue cambiado en el proceso en el sistema "A".

Así que en el sistema "A" tengo que crear un cliente para el segundo servicio web, donde llamaré al método "UpdateData" con este argumento de objeto complejo modificado us.

Pero cuando estoy creando este cliente en Visual Studio (agrego referencia web o agrego referencia de servicio) tengo que crear un espacio de nombres para el cliente. Y luego, cuando trato de llamar a "UpdateData", tengo un espacio de nombres diferente para este objeto recibido del primer servicio web "RegisterData".

Me gustaría crear el primer servicio web y el segundo cliente del servicio web, donde puedo usar este mismo tipo de objeto entre ellos.

Muchas gracias por su ayuda.

Respuesta

4

No creo que esto sea posible con los servicios web de ASMX.

WCF no es compatible con esto, sin embargo.


Enlaces WCF:


En realidad, yo creo que puede haber leído mal su pregunta. Pensé que estabas tratando de compartir los mismos tipos entre el cliente y el servidor. ASMX no puede hacer eso. Sin embargo, parece que está intentando compartir los mismos tipos entre dos proxies de cliente. Puede hacerlo fácilmente usando la herramienta WSDL.EXE.

Considere un esquema, DataTypes.xsd y dos archivos WSDL que lo importan, ServiceA.wsdl y ServiceB.wsdl. Para crear las interfaces de servidor, utilice:

WSDL/serverInterface /n:SharedTypes.Servers /out:Services.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd

Esto creará interfaces que se puede implementar para crear sus servicios. Estas interfaces usarán un conjunto de clases creadas a partir de DataTypes.xsd. Para crear las clases de proxy, basta con utilizar:

/n:SharedTypes.Proxies WSDL DataTypes /out:Proxies.cs ServiceA.wsdl ServiceB.wsdl.xsd

Tenga en cuenta que no necesita el conmutador /sharedTypes. Eso tiene un propósito diferente. Es para combinar tipos de servicios externos cuando necesita descargar el WSDL y cualquier XSD del servicio.

He intentado esto usando un ejemplo como el suyo, ServiceA publicando un mensaje en una cola, y un cliente recogiendo ese mensaje y enviándolo a ServiceB. Funciona bastante bien.

+0

¿Tienes algún ejemplo o cualquier artículo sobre este método? – Siekiera

Cuestiones relacionadas