Foros del Web » Programación para mayores de 30 ;) » Java »

Web Services (Urge plis)

Estas en el tema de Web Services (Urge plis) en el foro de Java en Foros del Web. Hola a todos, A ver como lo explico. Voy a empezar a hacer una plataforma mediante Web Services. Montare una arquitecura SOA, el problema es ...
  #1 (permalink)  
Antiguo 02/02/2007, 06:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Web Services (Urge plis)

Hola a todos,

A ver como lo explico. Voy a empezar a hacer una plataforma mediante Web Services. Montare una arquitecura SOA, el problema es que los WS que se utilicen tanto externos como de la propia arquitectura me gustaría que fuese configurable de tal forma que quedasen como componentes sueltos, de esta forma se pueden quitar y poner en la plataforma. Pongo un ejemplo porque me parece que lo he liado esto un poco:

Tengo una plataforma de pago desarrollada ok? y la utilizo para esta plataforma. Supongamos que en un futuro no quiero esa plataforma sino que quiero otra de alguna entidad externa o cualquier otro proveedor. Pues necesitaria saber como puedo acoplar esa nueva de alguna forma mediante fichero de configuración o de otra forma sin tener que tocar código, ya sea haciendo las llamadas al servicio por introspección o con algún framework que exista. Me han comentado algo sobre spring pero he estado echandole un vistazo y no se si con WS se puede hacer esto.

Gracias y un saludo.
  #2 (permalink)  
Antiguo 04/02/2007, 17:17
Avatar de jmsev  
Fecha de Ingreso: abril-2006
Mensajes: 47
Antigüedad: 18 años
Puntos: 0
Re: Web Services (Urge plis)

no entiendo bien lo que quieres hacer. intenta explicarlo mejor
  #3 (permalink)  
Antiguo 05/02/2007, 03:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Web Services (Urge plis)

A ver si lo puedo explicar mejor.

Quiero que los distintos componentes de la plataformas sean configurables de tal forma que si en un futuro uno de esos componentes lo cambiamos por otro podamos hacerlo sin tener que hacer un desarrollo nuevo para poder acoplarlo. En definitiva queremos realizar una pasarela para toda la plataforma que es la que va a realizar las llamadas a los WS que necesitemos.

Por ejemplo en ella utilizaremos una plataforma de pago a través de SOAP. Supongamos que el dia de mañana ves que hay una plataforma de pago que te gusta mas y quieres sustituir la actual por esa nueva. Lo unico que habria que hacer es cambiar las llamadas al servicio por ese nuevo. El problema que queremos realizar eso sin que se tenga que tocar codigo, sino parametrizando de alguna forma. De una forma sencilla sería realizar una llamada por cada servicio, el problema es que hoy se llamará x pero el día de mañana se podrá llamar y ese servicio. Si referencias directamente a la interfaz remota del servicio desde código no valdría, si utilizas el dia de mañana otra nueva habría que adaptarlo y modificar en código. Se que mediante introspección se pueden instanciar clases, llamar a métodos, etc. El caso es que si existe algún framework para hacer esto de forma modular con sus ficheros de configuración para realizar dicha integración.

En definitiva se trataria de realizar una pasarela que se le pase unos parámetros y ésta realice la llamada al servicio y recoja los datos retornados para posteriormente pasarlos al módulo de la plataforma desde el que fue llamado.

Espero haberme explicado mejor, sino ya no se como explicarlo :(. Tendría que adjuntar alguna imagen con un pequeño diseño de la arquitectura. Sorry no me suelo explicar muy bien.

Gracias de antemano.
  #4 (permalink)  
Antiguo 05/02/2007, 03:46
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Web Services (Urge plis)

¿Es una restricción muy fuerte esa de que no podais tocar nada del código?. Piensa que necesariamente en algún momento debés referenciar o llamar al servicio web concreto que necesitas y respetando su interfaz y especificación.

Lo único que se me ocurre es que aisles muy bien esa pasarela para la llamada a los servicios del resto de componentes de tu arquitectura de forma que el impacto por el cambio de los servicios sea mínimo.
Es exactamente igual que cuando quieres indepedendizar tu aplicación del gestor de bases de datos que vas a usar. Puedes usar patrones y diseñar de forma que las capas superiores no se vean implicadas en esa cambio. Pero no tienes más remedio que programar la nueva capa de acceso a datos.

Lo de utlizar ficheros de configuración, hasta lo que yo se no se como podrías utilizarlos. Tendrías que tener algún mecanismo para generar el código de las llamadas a los nuevos web services en base a la especificación de estos en el fichero de configuración. Luego compilarlo e integrarlo.

La única manera que se me ocurre de no tocar código es saber de antemano a que nueva plataforma podrías migrar en un futuro, tener los desarrollos hechos para esta plataforma y utilizar los ficheros de configuración para elegir entre una u otra.

Un Saludo
  #5 (permalink)  
Antiguo 05/02/2007, 12:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Web Services (Urge plis)

Hola,

Hace un tiempo estuve en un proyecto parecido, y mi impresión, me sorprendió, es que los servicios web no estan planteados, de momento, para hacer algo así. ¿Por que? Por que los WS están pensados para que tu publiques una interfaz, una API, y de momento la mayoría de "kits de desarrollo de web services" lo hacen "publicando" el API de alguna clase Java tuya, o atando una descripcion WSDL al API de una clase. Total, que sin recompilar/añadir clases y modificando el "API" de tus clases, no puedes modificar el API externo del web service.

Yo pense que con los años de desarrollo web que lleva la industria a sus espaldas ya habriamos aprendido del modelo MVC, de los peligros de atar APIs externos a interfaces de clases Java, etc... pero se ve que no.

Total, que si lo quieres hacer te lo tienes que montar como un web service generico donde el WSDL no te sirve de mucho para no tener que atarlo a una clase y el parsing etc para saber qué llamar pues te lo tienes que montar tu.

En mi caso acabe montando una estructura tipo REST que enviaba un XML y una clase altamente configurable que lo interpretaba en funcion de unas reglas especificadas en unos descriptores XML que se podian modificar en ejecucion. Mas complejo de lo que debería y sin meter Web Services, que era para una fase posterior.

Al final por cuestiones internas del negocio el proyecto no prosiguió, asi que la parte de WS no llegamos a abordarla, pero mientras la miraba me quedé bastante decepcionado en ese sentido.

Una opción que vi y quizá se pudiera usar era a base de "interceptores" para filtrar las llamadas a WS y pasarselo a otras clases, pero para el API seguias teniendo que definir clases, lo cual implicaba recompilacion y más clases al añadir funcionalidad.

Eso era... el año pasado o así, no se si habrá cambiado.

Mucha suerte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.