2011-02-09 52 views
8

¿Hay una buena razón para implementar o consumir un servicio SOAP sin usar un "archivo" WSDL?¿por qué SOAP sin WSDL?

Explicación:

Estoy en una situación en la que un tercio de partido ha creado un servicio SOAP que no sigue el archivo WSDL muy también han creado. Creo que estoy obligado a ignorar el archivo WSDL para consumir este servicio. Por lo tanto, estoy investigando cómo hacer esto.

Lo que realmente me pregunto es por qué es posible hacerlo? ¿Cuál es la intención?

¿Está diseñado para que podamos utilizar servicios deficientes hechos por programadores pobres? Seguramente debe haber una mejor razón. Casi me gustaría que no fuera posible. Entonces podría exigir que lo escriban correctamente.

Respuesta

10

Se supone que WSDL es un documento público que describe el servicio SOAP, por lo que describe las firmas de todos los métodos disponibles en el servicio.

Por supuesto, puede haber proveedores de servicios que deseen exponer un servicio a ciertos consumidores, pero que no desean que la firma del servicio sea pública, aunque solo sea para hacerlo un poco más difícil para las personas que no conocen. No quiero usar el servicio para encontrarlo o intentar usarlo. La firma de los servicios puede exponer cierta información privada sobre el esquema de sus datos, por ejemplo.

Pero no veo ninguna excusa para escribir un WSDL que no coincida con el servicio. Me preocuparía que si no pueden obtener el WSDL correcto, ¿cómo será la calidad del servicio?

Para responder a la otra pregunta sí, puede consumir el servicio sin el WSDL. Si está utilizando Visual Studio, por ejemplo, puede hacer que VS cree un proxy para usted basado en el WSDL incorrecto y luego ajustarlo para que coincida con las firmas de método de servicio correcto. Solo necesita asegurarse de que los contratos de datos y los contratos de método en su proxy coincidan con los contratos de datos de servicio reales y los contratos de método.

+0

Sí, ese es un buen punto acerca de no hacer que WSDL no sea públicamente accesible. Sin embargo, ¿hay algún caso de uso para ninguno? Para hacer un servicio SOAP sin WSDL? –

+0

WSDL generalmente es un documento público. Quizás no desee que sus firmas de servicio sean públicas. Por ejemplo, podría proporcionar a los consumidores un proxy en el idioma que eligieron y los consumidores nunca necesitan saber cuál es la firma del servicio. –

+0

... otro caso de uso (probablemente más relevante aquí) ... no es necesario y el simplemente no quiere. –

Cuestiones relacionadas