Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/08/2007, 03:35
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 2 meses
Puntos: 7
Re: SOAP: ¿Es necesario en sitios locales?

Hola Antigol,

El Servicio Web permite servir a otros servidores la información que se solicita. Esto quiere decir que SOAP (y XML-RPC tambien) envian un paquete XML a quien haya contratado tal servicio. Su nombre lo indica: SERVICIO WEB. El ejemplo más claro lo podemos ver con una compañia de vuelos. por ejemplo IBERIA.

IBERIA tiene su servidor web que ofrece sus servicios a clientes directos. Por ejemplo, un vuelo de Madrid a Paris cuesta al cliente 60 euros.

Sin embargo, IBERIA tambien ofrece sus servicios a touroperadores; claro esta los precios no son los mismos: Para el touroperador VUELEMASRAPIDO.com ese mismo vuelo les cuesta 30 euros por ejemplo.

¿Cómo sabe el sistema de IBERIA quien solicita la reserva? por una codificación en el acceso al Servicio Web. El cliente directo puede usar el Servicio Web o bien hacer una llamada al objeto COM que activa el Servicio Web.

La página web del touroperador tiene que hacer uso por narices del servicio web pues ese objeto COM esta en el servidor de IBERIA y no en el del touroperador.

Es ese objeto COM el que realiza todos los ataques a la BD. No hay otra manera de acceder a la BD de IBERIA.

El programador de IBERIA puede hacer un simple server.createObject pero el programador de VUELEMASRAPIDO debe hacer uso de SOAP para acceder al mismo objeto.

¿Te das cuenta del uso del Servicio WEB?

Ahora vayamos a la codificación.

La Dll en cuestion (el objeto COM) tiene una serie de métodos (no de propiedades) que leen las solicitudes en XML. En dicho paquete XML suele venir la información que el cliente solicita (el cliente del servicio web: VUELEMASRAPIDO, IBERIA, MEVOYCONCURRO, etc) Dicha infomación debe contener una serie de datos como las fechas del vuelo, lugar de destino, etc. Entre toda esa información suele ir un campo más que incluye los datos del servidor solictante: un identificador y una contraseña, generalmente enmascarados con algun tipo de algoritmo encriptador (SHA1, etc) que identifica al usuario del servicio web:

ejemplo de un envio:

Código:
<Cargestion version="1.5">
         <Operacion>BookingRequest</Operacion>
         <LoginId>43000001</LoginId>
         <YourReference>418</YourReference>
         <PickUpDate>20060820</PickUpDate>
         <PickUpTime>1240</PickUpTime>
         <PickUpStationId>1</PickUpStationId>
         <DropOffDate>20060827</DropOffDate>
         <DropOffTime>1922</DropOffTime>
         <DropOffStationId>1</DropOffStationId>
         <Voucher>VE-1234</Voucher>
  <Signature>B48E1ADF99B7C25009402A70255120282CC419E3</Signature>
 </Cargestion> 
Una vez procesada la informacion, el servicio web (o el objeto COM) devuelve otro paquetito XML

Ejemplo:

Código:
<Cargestion version="1.5">
 <Operacion>BookingRequest</Operacion>
 <YourReference>422</YourReference>
 <OurReference>3068C365</OurReference>
 <Status>1</Status>
 </Cargestion> 
¿Ves la direferencia de uso del servicio web y, sobretodo, para qué se usa? Por eso, si el servicio web está en el mismo equipo que la página web, puedes acceder directamente a la dll pero si está en otro servidor debes hacer uso del SOAP.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -