Si vas a transportar datos binarios entre el cliente y el servidor vas a tener 
un problema con los webservices, ya que la idea del webservice es comunicar 
datos mediante xml, y un xml bien formado solo tiene texto y no datos binarios. 
Una primera solucion es "serializar" la imagen a algo en hexa para meterla en 
el xml y luego en el cliente "deserealizarla" para recobrar la imagen. Lo malo 
es que si haces esto es muy probable que la imagen termine ocupando mas espacio 
en el xml de lo que ocupa en binario.

Para resolver esto se creo MTOM (message transmission optimization mecanism), 
de esta manera los datos binarios los envias por MTOM y el resto por SOAP. 
Nunca use MTOM asi que no se que onda... pero al parecer es la solucion que se 
propone para SOAP. Lo malo es que parece no estar bien soportado por las apis 
WSDL con lo cual deberias codificar bastante codigo a mano.

 

De todas maneras elegir el protocolo se reduce a dos cuestiones, la primera es 
la cantidad de datos que va a transportar tu webservice. Si vos queres llenar 
una grilla en el cliente con las ultimas 10000 facturas de un usuario por 
ejemplo, vas a tener un xml grande que puede (o no) aumentar considerablemente 
el trafico de la red y que puede (o no) tardar un poco mas en parsearse. Ahora 
si tu webservice va a retornar las ultimas 10 facturas realmente no va a haber 
diferencia en la performance y es ahi en donde tenes que analizar la segunda 
cuestion: que tan bien esta soportado el protocolo por las APIs del lenguaje en 
el que quieras implementarlo.

 

Yo tuve que hacer un cliente para un 486 con 12mb de ram y 1Gb de rigido. En 
eso solamente funcionaba windows 95, asi que me tuve que olvidar de java porque 
no hay jvm, incluso tambien de .Net porque tampoco hay framework. Tampoco pude 
usar PHP porque solo contaba con explorer 4 con lo cual soporte web igual a 
cero. C++ es un quilombo para hacer interfaces graficas, asi que lo unico que 
andaba ahi era visual basic 6. El cliente solo tenia las ventanas, un par de 
procedimientos para conectarme a http y la parte del parseo del xml.

 

El servidor estaba en una maquina moderna en donde estaba el motor de la base 
de datos y lo implemente el java usando glassfish (aunque creo que con un 
tomcat hubiese alcanzado). Un webservice en java se hace simplemente agregando 
una annotation al metodo que queres que funcione como webservice, asi que en 4 
clicks (no exagero, fueron 4 clicks utilizando netbeans) ya tenia mi primer 
webservice andando listo para probarlo. Como la velocidad era aceptable no 
necesite cambiar el protocolo ni investigar mas al respecto, ni siquiera 
hubiese necesitado saber que usaba SOAP de no ser porque no encontre manera de 
que el cliente en visual basic 6 usara wsdl, entonces tuve que parsearlo como 
un xml cualquiera y tuve que saber algo de SOAP muy basico. De todas maneras 
mis webservices retornaban pocos datos, a lo sumo retornaba unos 20 datos para 
mostrarlos en una grilla pero nada nada mas, ya que tampoco se justificaba 
transportar mas poruqe en la pantalla mas de 20 a la vez no se ven. Toda la 
logica y el procesamiento que lleva tiempo estaba en el servidor asi que con 
consultas paginadas de a 20 era mas que suficiente.

 

Consumir un webservice es facil en la gran mayoria de los lenguajes, ahora 
publicarlo ya no. En java y .NET es muy facil, en PHP es facil, en C++ ya se te 
va a complicar.

 

Analiza cual va a ser la informacion que vas a intercambiar e implementa el 
webservice con SOAP en un lenguaje facil de implementar y hace pruebas. La 
ventaja de SOAP es que lo vas a implementar rapido asi que aprovecha esa 
ventaja para testear si te sirve o no.

 

JSON es mas eficiente que SOAP, entonces por que no hacerlo directamente en 
JSON? Justamente porque SOAP esta mejor soportado por las APIs que JSON segun 
el lenguaje que elijas, asi que usar JSON te va a llevar mas tiempo de 
desarrollo segun el lenguaje que elijas y tal vez no se justifique ya que tal 
vez no haya diferencia visible de performance.

 


 
> Date: Sun, 22 Feb 2009 14:15:34 -0200
> Subject: Re: [Prog] desarrollo applicacion linux - win - web
> From: [email protected]
> To: [email protected]
> 
> SOAP se me hace que es para obtener servicios o informacion puntuales.
> Es adecuado como protocolo para comunicar una GUI (cliente) y un servidor,
> entre los cuales hay mucho trafico de informacion, posiblemente imagenes o
> archivos de cierto tamaño ?
> 
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion

_________________________________________________________________
¿Quieres saber cómo va a estar el clima mañana? ¡Ingresa ahora a MSN!
http://tiempo.cl.msn.com/
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a