Pregunta

La arquitectura orientada a servicios parece ser una cita cada vez más candente en estos días, pero después de preguntar en la oficina descubrí que parece que obtengo muchas definiciones diferentes para ella.¿Cómo definirían ustedes SOA?¿Cuál considerarías la definición oficial?

¿Fue útil?

Solución

Como dice Martin Fowler, significa cosas diferentes para diferentes personas.Su artículo sobre el tema es bastante bueno, aunque no es una definición.

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

Esto puede explicar la dificultad para encontrar una definición concreta.

Otros consejos

Wikipedia:"Una SOA es una arquitectura de software que utiliza servicios de software débilmente acoplados para soportar los requisitos de los procesos de negocio y de los usuarios de software.Los recursos en una red en un entorno SOA están disponibles como servicios independientes a los que se puede acceder sin conocimiento de la implementación de su plataforma subyacente".

SOA no es tan nuevo, pero tiene potencial para lograr cosas sorprendentes.Pero la organización tiene que estar preparada para ello:el negocio tiene que pensar en procesos y ese es el gran problema

Yo iría con:

Definición de una serie de operaciones comerciales agnósticas de clientes y estatales creadas para ser aprovechadas en múltiples aplicaciones.

Un diseño SOA incluye componentes (es decir, servicios) que puede ser utilizado por código independientemente de la implementación (es decir, cualquier sistema operativo o idioma).Una sola instancia de un servicio también puede ser utilizada por múltiples aplicaciones, mientras que, por ejemplo, una DLL tendría que duplicarse para cada aplicación y requeriría la misma tecnología de implementación que la aplicación de enlace.

Los servicios en un diseño SOA normalmente se implementan como servicios web interoperables.

No existe una definición oficial, como mencionó Ryan anteriormente.Sin embargo, encuentro que la visión de Thomas Erl sobre toda la orientación de servicio está bastante bien estructurada y es relevante.Aquí está la definición de SOA de su Glosario SOA (más):

La arquitectura orientada a servicios representa un modelo arquitectónico que tiene como objetivo mejorar la agilidad y la rentabilidad de una empresa al tiempo que reduce la carga general de TI en una organización.

Thomas Erl es autor de muchos títulos SOA, la mayoría de ellos respaldados por proveedores de SOA, incluidos IBM, Oracle y Microsoft.Lo bueno de sus libros es que sean lo más independientes posible del proveedor SOA.Significa que aprenderá más sobre la orientación a servicios en sí y menos sobre el middleware de algún proveedor que admita SOA.

Estoy de acuerdo con todas las personas que le señalan a Fowler sobre esto.Básicamente se ejecuta así:La arquitectura orientada a servicios tiene reputación de ser buena, por lo que cualquier cosa que la gente quiera asociar con algo bueno lo llama SOA.En realidad, tiene muchas desventajas y puede crear un estancamiento orientado a servicios o una arquitectura orientada a dependencias.

Aquí está mi intento de definir:La arquitectura orientada a servicios es un enfoque de integración de sistemas y reutilización de código en el que las aplicaciones dependen de la conexión a servicios proporcionados por otras aplicaciones en ejecución en la red.Esto se diferencia de las arquitecturas de componentes, donde los componentes de software se comparten estáticamente entre aplicaciones en forma de bibliotecas o SDK, por ejemplo.

Una aclaración aquí: "La arquitectura orientada a servicios es una integración de sistemas y enfoque de reutilización de código donde las aplicaciones dependen de conectarse a servicios proporcionados por otras aplicaciones en ejecución a través de la red."

Tengo un escenario en el que se han integrado dos aplicaciones j2ee mediante mensajería basada en eventos.Aquí las frases anteriores de integración de sistemas y conectarse a servicios proporcionados por otras aplicaciones en ejecución a través de la red mantenlo bien.¿Puedo llamar a esto SOA?

Los siguientes principios se mantendrían bien aquí 1) Estituto 2) Orientado a mensajes - Descoplado infacto de acoplamiento libremente 3) Extensible.

Sin embargo, lo siguiente no aplica 1) Independencia de la plataforma: ninguna de las aplicaciones que se integran han sido diseñadas para funcionar en una plataforma diferente.2) Las aplicaciones son aplicaciones j2ee simples que no han sido diseñadas con todos los conceptos de SOA.

Intenté definir SOA en una de mis publicaciones de blog.Aquí hay un extracto...

Durante años ha sido una práctica estándar separar la funcionalidad en funciones, clases y módulos.La idea siempre ha sido que estos componentes más pequeños y altamente especializados sean más fáciles de compartir y mantener que los bloques monolíticos de código.

Funcionalmente, SOA no es muy diferente.Los objetivos son los mismos: reutilización y fácil mantenimiento.La mayor diferencia, en el caso de un servicio web SOA, es que la biblioteca compartida incluida en su aplicación se reemplaza con una llamada HTTP.

Aquí tienes una definición:

SOA: software sobre arquitectura.La inclusión de un marco de interfaz funcional, exagerado y sin sentido llamado arquitectura en un bonito sitio web con una carpeta de gráficos en 3D que vuela de un lado a otro donde "dir /s > a.txt | ftp -s:upload.ftp" hizo el trabajo.

Los componentes de software no son ladrillos, no pueden generalizarse mediante patrones funcionales comunes y la arquitectura surge en la empresa de buenas prácticas, no de un buen diseño.El software no está diseñado, está diseñado.

¡SCRUM YA!

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