web services - name - ¿Cómo ponerse al día con SOA?
meta name keywords (8)
El objetivo es abrir varios procesos en una forma independiente del cliente final y también hacer que los datos estén disponibles fuera de línea, por ejemplo, para los representantes que visitan a los clientes.
La segunda mitad de eso no es realmente un tema SOA, es más un problema de replicación para dispositivos móviles. Me quedaría lejos, muy lejos de tratar de implementar una palabra de moda y centrarme en los problemas que está afirmando. Los servicios web son una buena forma de abrir el proceso a formas independientes del cliente.
Me han dado la tarea de sentar las bases de una SOA para mi cliente. El objetivo es abrir varios procesos en una forma independiente del cliente final y también hacer que los datos estén disponibles fuera de línea, por ejemplo, para los representantes que visitan a los clientes.
Tengo una amplia experiencia con J2EE (Websphere) y servicios web, pero agradecería consejos sobre cómo crear una SOA de este tipo.
¿Dónde están las trampas? ¿Qué hay de la seguridad? ¿Cuán finamente granulado deberían ser los servicios? etc.
Los enlaces a tutoriales y recomendaciones de libros también serían útiles.
¡Gracias!
Encontré este IBM Redbook (# sg246303 ) que es una buena introducción a los conceptos básicos de SOA.
La gente no puede ponerse de acuerdo sobre lo que realmente significa SOA.
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
(aunque el consenso puede haber crecido desde que se escribió)
Sugiero interrogar a su cliente para averiguar exactamente lo que significan, en todo caso. Luego, deles algo que realmente les brinde valor comercial , mientras marcan las casillas de SOA que puedan coincidir con ese esfuerzo.
Obtenga un ESB (bus de servicio empresarial): Mulesource es una buena opción (Opensource, Mature, yet bleeding edge). Una vez que lo entiendas, entenderás SOA.
Trampas
- Versiones / compatibilidad con versiones anteriores: se vuelve muy difícil cambiar un contrato una vez que tienes muchos clientes. He visto muchos sitios versionar las API al introducir la versión en la URL
Granularidad
- Cada servicio debe ser autónomo (no espere que las personas hagan 3 llamadas antes de obtener lo que necesitan)
Independencia de la plataforma
- Intenta dar más de una forma de acceder a tus API (WS, JSON, REST ...)
Llámame SOA-escéptico. El lamento de Fowler todavía parece estar en lo cierto.
Me centraría en el problema más general: su cliente tiene 2 o más aplicaciones que tienen que colaborar juntas. Mira los patrones de integración de la vieja escuela.
Imagen EIP http://rcm-images.amazon.com/images/I/51tVn4YqQUL._SL110_.jpg
Como dijo Alan, comenzaría a leer el libro Enterprise Integration Patterns . Hay varias maneras de implementarlas, ya sea utilizando un sistema de mensajería directamente como JMS o utilizando proyectos de código abierto como Apache Camel , por ejemplo, consulte el catálogo de patrones .
También me gustaría comprender cómo crear buenos servicios RESTful utilizando JAX-RS con Jersey como una forma sencilla de exponer los recursos para sus sistemas a cualquier persona en la web desde cualquier idioma / plataforma fácilmente sin caer en el SOAP / WS- * deathstar :)
Hasta ahora, el mejor libro que encontré es SOA Compass también disponible en Amazon