Pregunta

Me han encomendado la tarea de sentar las bases de una SOA para mi cliente.El objetivo es abrir diversos procesos de forma independiente del cliente final y también hacer que los datos estén disponibles fuera de línea, p.para representantes que visitan clientes.

Tengo amplia experiencia con J2EE (Websphere) y servicios web, pero agradecería consejos sobre cómo construir una SOA de este tipo.

¿Dónde están los peligros?¿Qué pasa con la seguridad?¿Qué tan finamente granulados deben ser los servicios?etc.

También serían útiles los enlaces a tutoriales y recomendaciones de libros.

¡Gracias!

¿Fue útil?

Solución

Escollos

  • Versiones/compatibilidad con versiones anteriores:Resulta muy difícil cambiar un contrato una vez que tienes muchos clientes.He visto muchos sitios versionar las API introduciendo la versión en la URL.

Granularidad

  • Cada servicio debe ser razonablemente autónomo (no espere que las personas hagan 3 llamadas antes de obtener lo que necesitan)

Independencia de plataforma

  • Intente proporcionar más de una forma de acceder a sus API (WS, JSON, REST...)

Otros consejos

La gente no puede ponerse de acuerdo sobre lo que realmente significa SOA.

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

(aunque es posible que el consenso haya aumentado desde que se escribió)

Sugiero interrogar a su cliente para descubrir exactamente qué quiere decir, en todo caso.Entonces dales algo que realmente proporciona valor comercial, mientras marca cualquier casilla SOA que pueda coincidir con ese esfuerzo.

Llámame escéptico de SOA.El lamento de Fowler todavía parece acertado.

Me centraría en el problema más general:su cliente tiene 2 o más aplicaciones que deben colaborar juntas.Mire los patrones de integración de la vieja escuela.

EIP image
(fuente: amazon.com)

Encontré este libro rojo de IBM (#sg246303) que es una muy buena introducción a los conceptos básicos de SOA.

Como dijo Alan, empezaría a leer el Libro de patrones de integración empresarial.Hay varias formas de implementarlos, ya sea usando un sistema de mensajería directamente como JMS o usando proyectos de código abierto como Camello apache, por ejemplo ver el catalogo de patrones.

También me interesaría comprender cómo crear buenos servicios RESTful utilizando JAX-RS con Jersey como una forma sencilla de exponer los recursos de sus sistemas a cualquier persona en la web desde cualquier idioma/plataforma fácilmente sin caer en la estrella de la muerte SOAP/WS-* :)

Obtenga un ESB (bus de servicio empresarial):Mulesource es una buena opción (código abierto, maduro, pero de vanguardia).Una vez que lo comprenda, comprenderá SOA.

El objetivo es abrir varios procesos de una manera independiente de cliente final y también hacer que los datos estén disponibles fuera de línea, por ejemplo,para representantes visitando clientes.

La segunda mitad de esto no es realmente un tema SOA, es más un problema de replicación en dispositivos móviles.Me mantendría muy, muy lejos de intentar implementar una palabra de moda y centrarme en los problemas que usted plantea.Los servicios web son una buena manera de abrir el proceso a formas independientes del cliente.

Hasta ahora el mejor libro que encontré es Brújula SOA también disponible en Amazonas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top