visual tipos studio services funciona crear consumir como .net web-services

.net - tipos - crear web service c# visual studio 2017



.Net Consuming Web Service: tipos idénticos en dos servicios diferentes (5)

Tengo que consumir 2 servicios web diferentes. Ambos contienen una definición para un objeto ''usuario''.

Cuando hago referencia a los servicios usando "Agregar referencia de servicio" doy a cada servicio un espacio de nombre único:

com.xyz.appname.ui.usbo.UserManagement com.xyz.appname.ui.usbo.AgencyManagement

El problema que tengo es que cada uno de los proxies que se generan contiene una nueva clase de usuario. Uno está ubicado en com.xyz.appname.ui.usbo.UserManagement.user y el otro en com.xyz.appname.ui.usbo.AgencyManagement.user. Sin embargo, los objetos del usuario son idénticos y me gustaría tratarlos como tales.

¿Hay alguna manera de que de alguna manera pueda hacer referencia al objeto del usuario como un objeto en lugar de tratarlos como dos diferentes?

Estoy usando .Net 3.5 para consumir el servicio. El servicio que se consume está escrito en Java.

¡¡Gracias!!

Editar:

Este hilo del foro se acercó mucho a una respuesta, pero la respuesta aceptada terminó siendo compartir tipos de clientes y servidores, lo cual no puedo hacer porque estamos cruzando plataformas (Java a .Net). La verdadera pregunta es, ¿hay algún tipo de parámetro / sharetypes para svcutil en WCF?


Esta es una situación común cuando se consumen servicios web con diferentes puntos finales del mismo proveedor.

Puede usar la herramienta de línea de comandos "wsdl.exe / sharetypes" para crear una clase de proxy compartida que examinará todos los puntos finales que usted proporciona e inferirá qué clases pueden ''compartirse''.

En su ejemplo, siempre que su objeto de usuario sea idéntico en ambos servicios, será recogido e incluido en su nueva clase de proxy compartido.

Probablemente tenga sentido agregar este paso de generación de clase de proxy compartido como un evento de compilación en su proyecto, de esa manera siempre estará actualizado.


la herramienta WSDL tiene un parámetro.

/sharetypes Turns on type sharing feature. This feature creates one code file with a single type definition for identical types shared between different services (namespace, name and wire signature must be identical). Reference the services with http:// URLs as command-line parameters or create a discomap document for local files.


Puede poner el tipo de usuario en un conjunto común compartido al que hacen referencia los servicios y el proyecto del cliente. Luego, en la configuración para ambos clientes de servicio, puede elegir la opción de volver a utilizar los tipos en los ensamblados a los que se hace referencia. De esta forma, está utilizando el tipo en el ensamblaje en lugar de una clase generada por separado.


Lo que terminó funcionando para mí fue proporcionar a svcutil.exe todas las direcciones WSDL de las que necesitaba generar código. SVCUTIL examinará todos los tipos de cada servicio y determinará automáticamente cuáles son comunes y se deben reutilizar.

El tipo que desea compartir también debe tener un espacio de nombres compartido, y ese espacio de nombres debe invocarse en cada uno de los servicios web que desean compartir ese tipo.


Si trabajas con archivos locales, puedes hacer lo siguiente:

wsdl.exe /sharetypes file://c:/path/to/file.wsdl file://c:/path/to/otherFile.wsdl /namespace:<your namespace> /output:(any switches etc...)

El cambio de tipos compartidos requiere que proporcione URL a los servicios, y no funciona si simplemente apunta wsdl a los archivos.