saber - Cuál es la diferencia entre una API y SOA
diferencia entre api y api rest (4)
Hay un montón de What is the difference between...
preguntas por ahí, pero no pude encontrar esta.
Wikipedia dice esto sobre una API
Una interfaz de programación de aplicaciones (API) es una especificación basada en código fuente destinada a ser utilizada como interfaz por componentes de software para comunicarse entre sí.
Y esto sobre SOA
SOA también proporciona, en general, una forma para que los consumidores de servicios, como las aplicaciones basadas en web, conozcan los servicios disponibles basados en SOA.
¿No son ambas tecnologías donde presenta servicios a otros servicios?
¿Podría alguien ampliar esto?
En otras palabras:
SOA es el patrón de Arquitectura.
Una API es una de las formas de promulgar o habilitar el patrón SOA.
SOA es el método de diseño "Planificación" {Blue Print}.
API es la implementación real del diseño.
Parece que hay muchas opiniones sobre esto; es una lectura interesante Aquí está mi opinión.
SOA: SOA es un patrón arquitectónico centrado en los servicios para construir y acceder a conjuntos de componentes / servicios de software (como se señaló en la respuesta anterior). Los principios de SOA que forman el patrón de SOA se pueden encontrar en muchos lugares, no todos son consistentes entre sí, lo que hace SOA un término algo nebuloso. Se puede construir un servicio SOA con casi cualquier conjunto de tecnología de desarrollo de software moderno (ver a continuación).
API: en general, el término ''API'' se utiliza para referirse a la especificación de cómo utilizar o interactuar mediante programación con una solución de software. Puede referirse a cosas tales como las especificaciones, un lenguaje de programación y sus componentes (API Java), la especificación de cómo acceder y / o extender una solución COTS, la especificación de cómo utilizar un servicio o conjunto de servicios (incluyendo la firma o estructura de datos relacionada con la interfaz con un servicio), etc.
SOA y API: una API para un servicio SOA podría incluir las especificaciones conceptuales y tecnológicas del servicio (por ejemplo, un elemento de datos será el apellido de un cliente), así como las especificaciones de uso físicas, específicas de la tecnología para cada instanciación física de ese servicio SOA (por ejemplo, habrá dos instancias disponibles, una con un diseño JSON y la otra con un diseño XML, cada una con especificaciones físicas aproximadamente equivalentes para el elemento de datos ''LAST NAME'').
Concepto erróneo: el término API solo debe usarse para referirse a interfaces RESTful o ''simples, livianas'' o basadas en JSON (nota al margen: RESTful no es equivalente a ''simple'' o ''liviano''). En realidad, una API se puede estructurar siguiendo muchos patrones usando muchos tipos de tecnologías, incluidos los servicios basados en WS *.
Concepto erróneo: SOA sigue estrictamente WS * u otros enfoques de interfaz ''complejos y pesados''. En realidad, los servicios de SOA pueden construirse y consumirse utilizando casi cualquier conjunto de tecnología de desarrollo de software moderno, incluidos los enfoques RESTful o los archivos JSON.
Más sobre SOA: SOA es un patrón de arquitectura basado en el concepto de que las capacidades deben ser instanciadas como servicios que tienen una especificación de uso nítida, y así pueden ser utilizadas por cualquier componente de software ''cliente'' que pueda seguir esa especificación de uso, independientemente de las tecnologías sobre el cual se desarrolló el servicio o sobre el cual se desarrolló el ''cliente llamante''. Los servicios bien escritos deben ser altamente compatibles.
Debido a que muchos proveedores y proveedores de código abierto han desarrollado marcos orientados a SOA que se basan en enfoques basados en XML, especialmente el conjunto de estándares WS *, a veces SOA ha sido asociado de manera restrictiva con enfoques relacionados con WS * y / o XML. Pero, en realidad, SOA, como patrón conceptual, es agnóstico de la tecnología. Un servicio SOA conceptual podría ser instanciado una o más veces en muchas formas, cada instanciación eligiendo entre una variedad de tecnologías (XML, JSON, WS *, un enfoque REST, Java, C ++, LAMP, ...) según lo determinen los diseñadores y desarrolladores de esa ejemplificación.
Una solución SOA o un ecosistema de solución se basa en los principios de SOA; se compone de servicios que se construyen y utilizan siguiendo los principios de SOA, una vez más, utilizando las tecnologías que elijan los desarrolladores.
Service Oriented Architecture es una metodología arquitectónica. Es una forma de especificar la separación de responsabilidades desde un punto de vista orientado al negocio en servicios independientes, que se comunican mediante una API común (a menudo, pero no necesariamente, publicando eventos en un autobús).
Como ejemplo, podría tener un servicio responsable de capturar pedidos de clientes, que publica un evento OrderCaptured en el autobús; y un servicio separado responsable de rastrear cuándo se factura al cliente y cuánto se debe, que se suscribe al autobús y responde al evento OrderCaptured. Es posible que el primer servicio no necesite saber nada acerca de la facturación debido a la separación de responsabilidades. Y tampoco es necesario que los dos servicios se conozcan entre sí, solo sobre los eventos que suceden a su alrededor.
Una API es una interfaz que expone un componente / servicio para que otros componentes puedan comunicarse con ella. En el ejemplo anterior, el Bus proporciona una API común para una serie de servicios para comunicarse.
En resumen:
API = cualquier forma de comunicación expuesta por un componente de software.
SOA = un conjunto de principios de diseño arquitectónico empresarial para resolver problemas de escalabilidad al dividir la responsabilidad en servicios.
La versión concisa y breve:
API es una capa para proporcionar acceso a datos, a través de http, sockets web y más, y es más amigable para dispositivos móviles. Estas API deben estar diseñadas teniendo en cuenta el soporte de SOA, y actualmente usan tecnologías modernas que evolucionan en torno a JSON y REST.
SOA es más una capa de soluciones empresariales A2A y B2B en la que cuando las empresas necesitan pasar datos entre diferentes tipos de medio, se crean API y las reglas de negocio se construyen alrededor de eso. Las tecnologías son normalmente XML, RPC y SOAP.
Ambos usan tecnologías intercambiables. La seguridad se puede abordar en ambos, normalmente SOA, por lo que las API no lo son tanto si su objetivo es proporcionar datos abiertos.