2011-10-24 18 views
23

Estoy empezando con los servicios web SOAP y tropecé con WS-Addressing.¿Para qué sirve WS-Addressing?

He leído el Wikipedia page, pero me está costando entender exactamente cuál es el objetivo de WS-Addressing.

De acuerdo con Wikipedia y varias fuentes en la web, WS-Addressing permite poner "información de direccionamiento" o "información de enrutamiento" en el encabezado de una solicitud SOAP.

¿Por qué es esto útil? Si envío una solicitud a través de HTTP (o incluso a través de SMTP o UDP), la dirección a la que envío es la dirección del servidor que procesará mi solicitud, y el servidor simplemente puede responder por el mismo canal. Entonces, ¿por qué es necesaria la información de direccionamiento/enrutamiento?

Estaría particularmente interesado en algún ejemplo del mundo real (más o menos) donde WS-Addressing es útil.

Respuesta

52

He encontrado WS-Addressing particularmente útil en situaciones donde la respuesta SOAP no se puede atender de inmediato. O los recursos para formar la respuesta no están disponibles de inmediato o el resultado en sí tarda mucho tiempo en generarse.

Esto puede suceder cuando su proceso comercial implica "un toque humano", por ejemplo (procesos como los que se dirige a WS-HumanTask). Puede incluir servicios web en su empresa, pero a veces las empresas toman tiempo. Puede ser una suscripción que debe verificarse manualmente, algo que debe aprobarse, lo que sea, pero lleva días hacerlo. ¿Vas a mantener la conexión abierta todo ese tiempo? ¿No vas a hacer nada más que esperar por la respuesta? ¡No! Eso es ineficiente.

Lo que necesita es un proceso de notificación. El cliente realiza una solicitud pero no espera la respuesta. En su lugar, indica al servidor dónde enviar la respuesta mediante una dirección de "respuesta". Una vez que la respuesta está disponible, el servidor se conecta a esa dirección y envía la respuesta.

Y voila ... interacciones asincrónicas entre servicios web, desacoplando la vida útil del proceso de comunicación de la duración de la conexión HTTP. Muy útil ...

Pero espere ... ¿Conexión HTTP? ¿Por qué debería importarme eso? ¿Qué ocurre si quiero que la respuesta se envíe de vuelta a otro tipo de protocolo? (que SOAP amablemente proporciona, ya que no está vinculado a ningún protocolo).

Con un flujo de solicitud/respuesta normal, la respuesta viene en el mismo canal que la solicitud 'si se trata de una conexión que conoces ... Entonces, por ejemplo, tienes una conexión HTTP ... eso significa HTTP in y HTTP out .

Pero con WS-Addressing no está ligado a eso. Puede solicitar la respuesta en otro tipo de canal. La solicitud entra en HTTP, por ejemplo, pero puede indicar al servidor que envíe la respuesta a través de SMTP, por ejemplo.

De esta manera define WS-Addressing formas estándar a enrutar un mensaje a través de múltiples medios de transporte. A medida que el wiki page está diciendo:

lugar de depender de transporte a nivel de red para transmitir información de enrutamiento, un mensaje utilizando WS-Addressing puede contener sus propios metadatos su envío en una cabecera SOAP estandarizado.

y en cuanto a su observación:

y el servidor puede responder simplemente por el mismo canal

... lo que funciona para algunos, puede no funcionar para otros, y para otros tenemos WS-Addressing: D.

+1

esta es la mejor explicación gracias # user159088 –