En un nivel alto, la respuesta es Sí, aunque no del todo.
SOA requiere pensar acerca del sistema en términos de
- Servicios (funcionalidad de negocio bien definido)
- componentes (piezas discretas de código y/o estructuras de datos)
- Procesos (orquestaciones de servicios. Generalmente utilizando BPEL)
Ser capaz de componer nuevos servicios de nivel superior o procesos de negocio es una característica básica de una buena SOA. XML, servicios web basados en SOAP y estándares relacionados son adecuados para realizar SOA.
también SOA tiene unos principios aceptados - http://en.wikipedia.org/wiki/Service-oriented_architecture#Principles
- contrato de servicio estandarizado - Servicios adhieren a un acuerdo de comunicaciones, tal como se definen en conjunto por uno o más servicios de descripción de documentos.
- Service Loose Coupling - Los servicios mantienen una relación que minimiza las dependencias y solo requiere que se conozcan entre sí.
- Abstracción de servicio: más allá de las descripciones en el contrato de servicios, los servicios ocultan la lógica del mundo exterior.
- Reutilización del servicio: la lógica se divide en servicios con la intención de promover la reutilización.
- Autonomía del servicio: los servicios tienen control sobre la lógica que encapsulan.
- Granularidad del servicio: una consideración de diseño para proporcionar el alcance óptimo y el nivel granular correcto de la funcionalidad del negocio en una operación de servicio.
- apatridia - Servicios de minimizar el consumo de recursos mediante el aplazamiento de la gestión de la información de estado cuando sea necesario
- Servicio de detectabilidad - Los servicios se complementan con los metadatos de comunicación por el cual pueden ser descubiertos e interpretados de manera efectiva.
- Capacidad de compilación del servicio: los servicios son participantes eficaces en la composición, independientemente del tamaño y la complejidad de la composición.
Se espera que una arquitectura basada en SOA tenga una definición de servicio. Como los servicios web RESTful carecen de una definición definitiva de servicio (similar a wsdl), es difícil que un sistema basado en REST cumpla con la mayoría de los principios anteriores.
para lograr el mismo usando REST, que había necesidad de contar con servicios web RESTful + orquestación (posible uso de algún ligero ESB como MuleESB o camello)
Por favor, vea también este recurso - From SOA to REST
Agregando esta parte como aclaración para el siguiente comentario:
Se requiere orquestación para componer procesos. Eso es lo que proporciona el principal beneficio de SOA.
Digamos que tiene una aplicación de procesamiento de pedidos con operaciones como -
- addItem
- addTax
- calculateTotal
- PlaceOrder
Inicialmente se creó un proceso (usando BPEL) que usa estas operaciones en secuencia. Usted tiene clientes que usan este servicio compuesto. Después de unos meses llega un nuevo cliente que tiene exención de impuestos, luego, en lugar de escribir un nuevo servicio, puede crear un nuevo proceso omitiendo la operación addTax. De este modo, podría lograr una realización más rápida de la funcionalidad empresarial simplemente reutilizando el servicio existente. En la práctica, hay varios servicios de este tipo.
Por lo tanto, la tecnología BPEL o similar (ESB o enrutamiento) es esencial para SOA. Sin uso comercial, una SOA no es realmente una SOA.
Cruz publicado en mi blog personal - http://blog.padmarag.com
También puedes ver este nuevo recurso me encontré - REST based SOA
¿Alguien ha considerado alternativas basadas en HTTP a REST para la comunicación dentro del servicio? En una plataforma en la nube crítica para la conversación, REST también tiene sus fallas. Funciona, pero es probable que haya una próxima evolución en términos de comunicación. Preguntándose si hay alguien aquí que tenga algún aporte en esa área. Esperaba que a un moderador no le gustara este comentario, pero pensó que lo intentaría de todos modos. :) –