Algo de cultura
Lo primero que es un Web Service, tiene relación con SOA (Service Oriented Arquitecture), que es una manera de hacer aplicaciones distribuidas, que ofrezcan servicios independientes entre sí, de manera que no tengamos que cambiar todos si tocamos uno, una de las maneras de ofrecer estos servicios es como servicios web.
Concretando un poco más y yendo a lo que podemos hacer nosotros, la idea es trabajar con aplicaciones que no están físicamente donde esta tu ordenador, simplificando mucho, ejecutamos un método a través de una página web, no tenemos que saber ni en que lenguaje esta escrito ni como, solo sabemos como tenemos que comunicarnos con él para que nos de lo que nos interesa.
Más info en la wiki: es.wikipedia.org/wiki/Servicio_web
Después la wiki de dos de las maneras que lo petan más para este tipo de sistemas:
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol
Resumiendo SOAP es un protocolo para intercambiar información entre sistemas usando XML, REST no es un protocolo, sino un estilo de arquitectura para desarrollar aplicaciones en la WWW, pero como se adapta perfectamente a la web y es de cierta manera bastante más sencillo que SOAP esta ganando adeptos. Además REST se esta usando con JSON, aunque se puede usar con otros lenguajes, pero la simplicidad de JSON hace que pegue bastante bien con REST, así que digamos que hay un frente abierto entre SOAP/XML y REST/JSON.
Si queréis más información consultad las siguientes webs:
- http://blog.movilforum.com/apis-seguimos-con-el-rest-vs-soap
- http://blog.feedly.com/2009/03/03/jsonrest-vs-xmlsoap/
- https://devcentral.f5.com/blogs/us/soap-vs-rest-the-war-between-simplicity-and-standards
A programar
Ahora que tenemos algo de base vamos al lio. He estado currando con la versión JEE de Eclipse, actualmente la última es Juno, pinchad en la imagen para ir al sitio de descarga:
La idea general será siempre hacer una aplicación que actuará de servidor, y luego otra para el cliente.
Para empezar a trabajar con SOAP/XML podéis hacerlo directamente, revisad los siguientes tutoriales:
- http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/BottomUpWebService/BottomUpWebService.html
- http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/TopDownWebService/TopDownWebService.html
Para trabajar con REST hay bastante más lio, o al menos a mi me ha pasado, primero encontré la librería RESTlet, pero encontrar ejemplos en condiciones fue una tarea prácticamente imposible así que seguí buscando y encontré Jersey, una implementación de JAX-RS (The Java API for RESTful Web Services) que me ha venido perfecta.
El mejor tutorial que he encontrado ha sido el siguiente:
http://www.vogella.com/articles/REST/article.html
Muchos ejemplos, distintas maneras de hacerlo y bien explicado, y usando Eclipse JEE también con lo que no tenemos que cambair de IDE.
Para hacer las aplicaciones cliente hay muchas maneras, tanto para SOAP como para REST, en concreto para REST en esos tutoriales no lo muestra pero se puede hacer algo parecido al cliente .jsp de las de SOAP, simplemente reutilizando el código y pegándolo en el .JSP, cambiando la forma de los import y demás.
Bueno aquí lo dejo, mucha información en poco espacio pero para empezar perfecto.
Un saludo!