Pregunta

Nuestros servicios web se distribuyen en diferentes servidores por diversos motivos (como reducir la latencia para el cliente) y no siempre están todos actualizados.En lugar de lanzar una excepción cuando un método no existe porque el servicio web en particular es demasiado antiguo, sería mejor si pudiéramos hacer que el cliente verificara si el servicio responde a un método determinado antes de llamarlo y, de lo contrario, deshabilitar la función (o solucionarla).

¿Hay una manera de hacer eso?

¿Fue útil?

Solución

Prueba unitaria del servicio web para garantizar que sus firmas no se rompan.Cuando escribe código que rompe la firma del método, lo sabrá y podrá ajustar las otras aplicaciones en consecuencia.

O simplemente no interrumpa los servicios web y publíquelos de una manera que le permita versionarlos.Como en http://servicios.dominio.com/MyService/V1.1/Service.asmx (para .NET) de modo que sus aplicaciones que usan v1.1 no se rompan cuando publique v1.2 y realice cambios importantes.

También comprobaría el uso de un servidor UDDI interno si realmente es tan complicado administrar sus servicios web.El uso de las Páginas Verdes de UDDI le indicará lo que desea saber sobre el servicio.

Otros consejos

Obtenga el WSDL (agregue ?wsdl a la URL); puede analizarlo como desee.

Cuando realiza una solicitud SOAP, simplemente envía una solicitud HTTP a un servidor.Si el servidor lo entiende, responderá con un HTTP 200 y algo de XML, si no lo entiende, le enviará algún código HTTP de error (404, 500, ...)

No existe una forma general de preguntar por la existencia de un "método" expuesto por un servicio web.Intente utilizar el WSDL expuesto si es automático, o simplemente intente utilizar el "método" y compruebe si hay un error en la respuesta (no es necesario enviar una excepción al usuario...)

Además, no sé si te entendí bien, pero ¿estás pensando en consultar el servidor dos veces, una para verificar si el método existe y la segunda para llamarlo si existe?Simplemente verificaría el error si no es así y procedería normalmente si es así.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top