web-dev-qa-db-fra.com

Quelle est la différence entre une API et SOA

Il y a beaucoup de questions What is the difference between... mais je n'ai pas trouvé celle-ci.

Wikipedia dit ceci à propos d'un API

Une interface de programmation d'application (API) est une spécification basée sur un code source destinée à être utilisée comme interface par des composants logiciels pour communiquer entre eux.

Et ceci à propos de SOA

La SOA offre également aux utilisateurs de services, tels que les applications Web, un moyen de connaître les services SOA disponibles.

Les deux technologies où vous présentez des services à d'autres services ne sont-elles pas?
Quelqu'un pourrait-il en dire plus?

29
Niklas

L'architecture orientée services est une méthodologie architecturale. C'est un moyen de spécifier la séparation des responsabilités d'un point de vue orienté métier vers des services indépendants, qui communiquent via une API commune (souvent mais pas nécessairement en publiant des événements sur un bus).

Par exemple, vous pouvez avoir un service responsable de la capture des commandes client, qui publie un événement OrderCaptured sur le bus; et un service distinct chargé de suivre le moment où le client est facturé et le montant dû, qui s'abonne au bus et répond à l'événement OrderCaptured. Le premier service n'a peut-être pas besoin de savoir quoi que ce soit sur la facturation en raison de la séparation des responsabilités ..__ Et les deux services n'ont pas besoin de se connaître l'un l'autre, mais uniquement sur les événements qui se déroulent autour d'eux.

Une API est une interface qu'un composant/service expose afin que d'autres composants puissent communiquer avec elle. Dans l'exemple ci-dessus, le bus fournit une API commune permettant à un certain nombre de services de communiquer.

En résumé: 

API = tout moyen de communication exposé par un composant logiciel.

SOA = ensemble de principes de conception d'architecture d'entreprise permettant de résoudre les problèmes d'évolutivité en scindant la responsabilité en services.

37
perfectionist

En d'autres termes:

SOA est le modèle d'architecture.

Une API est l'un des moyens d'activer ou d'activer le modèle SOA.

SOA est la méthode de conception "Planning" {Blue Print}.

L'API est l'implémentation réelle de la conception.

4
Kbdavis07

La version concise et brève:

APIest une couche offrant un accès aux données via HTTP, des sockets Web, etc., qui est plus conviviale pour les mobiles. Ces API doivent être conçues avec le support de SOA et utiliser actuellement les technologies modernes évoluant autour de JSON et de REST.

SOAest plus une couche de solutions A2A et B2B Business où, lorsque les entreprises ont besoin de transmettre des données entre différents types de supports, les API sont construites et les règles commerciales sont construites autour de cela. Les technologies sont normalement XML, RPC et SOAP. 

Les deux utilisent des technologies interchangeables. La sécurité peut être abordée à la fois, SOA normalement, alors que les API le sont moins si leur objectif est de servir des données ouvertes. 

1
blamb

On dirait qu'il y a beaucoup d'opinions à ce sujet. c'est une lecture intéressante. Voici ma prise.

SOA: SOA est un modèle architectural centré sur les services permettant de créer et d'accéder à des suites de composants logiciels/services (comme indiqué dans la réponse ci-dessus). Les principes SOA qui forment le modèle SOA peuvent être trouvés dans de nombreux endroits, qui ne sont pas tous compatibles entre eux, ce qui fait de SOA un terme quelque peu nébuleux. Un service SOA peut être construit avec presque n'importe quel ensemble de technologies de développement logiciel modernes (voir ci-dessous). 

API: le terme «API» désigne généralement la spécification de l'utilisation ou de l'interface par programme avec une solution logicielle. Il peut faire référence à des éléments tels que les spécifications d’un langage de programmation et de ses composants (API Java), la spécification de la façon d’accéder à une solution COTS et/ou de l’extension de celle-ci, la spécification de l’utilisation d’un service ou d’un ensemble de services (y compris la signature). structure de données liée à l’interfaçage avec un service), etc. 

SOA et API: une API pour un service SOA peut inclure les spécifications conceptuelles, indépendantes de la technologie, du service (par exemple, un élément de données sera le nom de famille du client), ainsi que les spécifications physiques, technologiques. spécifications d'utilisation spécifiques pour chaque instanciation physique de ce service SOA (ex: deux instanciations seront disponibles, l'une utilisant une présentation JSON et l'autre une présentation XML, chacune contenant des spécifications physiques à peu près équivalentes pour l'élément de données 'NOM' ). 

Idée fausse: le terme API ne doit être utilisé que pour faire référence aux interfaces RESTful ou «simples, légères» ou JSON (remarque: RESTful n'est pas équivalent à «simple» ou «léger»). En réalité, une API peut être structurée selon de nombreux modèles en utilisant de nombreux types de technologies, y compris des services WS *. 

Idée fausse: SOA suit strictement WS * ou d’autres approches d’interface complexes et «lourdes». En réalité, les services SOA peuvent être construits et consommés à l'aide de presque tous les ensembles de technologies de développement logiciel modernes, y compris les approches RESTful ou les fichiers JSON.

Pour en savoir plus sur la SOA: La SOA est un modèle d’architecture reposant sur le concept selon lequel les fonctionnalités doivent être instanciées en tant que services ayant une spécification d’utilisation précise, et peuvent donc être utilisées par tout «composant logiciel» pouvant suivre cette spécification d’utilisation, indépendamment de la des technologies sur lesquelles le service a été développé ou sur lequel le "client appelant" a été développé. Des services bien écrits devraient être hautement compatibles entre eux. 

Étant donné que de nombreux fournisseurs et fournisseurs open source ont construit des frameworks orientés SOA basés sur des approches basées sur XML, notamment l'ensemble de normes WS *, SOA a parfois été associé de manière restrictive et erronée à WS * et/ou XML. approches connexes. Mais en réalité, la SOA, en tant que modèle conceptuel, est agnostique de la technologie. Un service SOA conceptuel peut être instancié une ou plusieurs fois sous plusieurs formes, chaque instanciation choisissant parmi une variété de technologies (XML, JSON, WS *, une approche REST, Java, C++, LAMP,. ..) comme déterminé par les concepteurs et les développeurs de cette instanciation. 

Une solution SOA ou un écosystème de solutions est une architecture fondée sur les principes SOA; il est composé de services construits et utilisés selon les principes SOA, en utilisant à nouveau les technologies choisies par les développeurs. 

0
Dave