Quelqu'un peut-il expliquer en anglais tout ce qu'est la SOA ? J'entends SOA ici, SOA là-bas mais je ne comprends pas exactement ce que c'est et à quoi il sert. Était-ce un concept simple et a ensuite évolué en quelque chose d'énorme ou quoi?
Tous les documents, y compris le wiki, sont un peu abstraits ou peut-être que je suis un idiot et que je ne comprends pas. Y a-t-il un guide d'idiot à ce sujet?
Qu'y a-t-il exactement derrière ces trois lettres?
Réponses:
Vous trouverez peut - être cet article (Qu'est - ce SOA - SOA et services Web explicitées) utiles.
Un petit teaser:
SOA est un style d'architecture d'applications de telle manière qu'elles sont composées d'agents logiciels discrets qui ont des interfaces simples et bien définies et sont orchestrées par un couplage lâche pour exécuter une fonction requise.
Il existe deux rôles dans SOA: un fournisseur de services et un consommateur de services. Un agent logiciel peut jouer les deux rôles. La SOA n'est pas un concept entièrement nouveau - cependant, cet article se concentre principalement sur la SOA telle qu'elle est implémentée avec les services Web.
la source
SOA est un nouveau badge pour certaines idées très anciennes:
Divisez votre code en modules réutilisables.
Encapsulez dans un module toute décision de conception susceptible de changer.
Concevez vos modules de manière à ce qu'ils puissent être combinés de différentes manières utiles (parfois appelées «famille» ou «ligne de produits»).
Ce sont tous des principes fondamentaux de développement de logiciels, dont beaucoup ont été formulés pour la première fois par David Parnas.
Ce qui est nouveau dans SOA est
Vous le faites sur un réseau.
Les modules communiquent en s'envoyant des messages sur le réseau, plutôt que par des mécanismes de langage de programmation plus traditionnels comme les appels de procédure. En particulier, dans une architecture orientée services, les parties ne partagent généralement pas l'état mutable (variables globales dans un programme traditionnel). Ou s'ils partagent un état, cet état est soigneusement verrouillé dans une base de données qui est elle-même un agent et qui peut facilement gérer plusieurs clients simultanés.
la source
Je vois de nombreuses réponses expliquant une architecture orientée services (SOA) en utilisant des mots et des termes techniques encore plus avancés. Je voudrais essayer de l'expliquer pour le profane, en utilisant une analogie en anglais simple.
Mais d'abord, une description d'une SOA
SOA pourrait être décrite en trois couches, comme le montre l'image ci-dessous. D'un côté, nous avons le fournisseur et de l'autre, nous avons le consommateur , séparés par un pont où les deux côtés communiquent.
Le consommateur utilise un certain nombre d' applications nécessaires à son activité et le fournisseur utilise des composants qui fournissent des informations à ces applications. Ils communiquent via un ensemble de services utilisant une architecture commune.
L'analogie
Imaginez une maison à la campagne, qui à bien des égards fait partie d'une communauté plus large, comme une ville ou un village. La ville possède ses propres systèmes complexes pour fournir de l'eau et de l'électricité, gérer l'assainissement, fournir des transports et d'autres services publics. La maison est le consommateur dans ce modèle, la ville (ou la communauté) est le fournisseur et les canalisations, égouts, lignes électriques, fibres optiques, etc. sont l' infrastructure dans laquelle ils communiquent.
Ce modèle pourrait être vaguement comparé à une SOA. Les gens de la maison utilisent un certain nombre d '"applications" différentes comme les radiateurs, les ordinateurs, les toilettes, les lampes, le chauffage par le sol, les baignoires, etc. comme cela fonctionne. Les composantes de la ville sont des générateurs, des pompes à eau et des zones d'assainissement. Il fournit à la maison tous ces besoins, mais il appartient à la maison de l'utiliser comme bon lui semble.
J'espère que cela a donné au moins à quelqu'un une meilleure image d'une SOA.
la source
Supposons que vous ayez quatre cuisiniers. Dans SOA, vous supposez qu'ils se détestent, vous vous efforcez donc de les laisser se parler le moins possible.
Comment tu fais ça? Eh bien, vous allez d'abord définir les rôles et l'interface - le cuisinier 1 fera la salade, le cuisinier 2 fera la soupe, le cuisinier 3 fera le steak, etc. Ensuite vous placerez les plats bien organisés sur la table (donc ce sont les interfaces) et dites: "Tout le monde, s'il vous plaît, placez votre création dans vos plats assignés. Ne vous souciez de personne d'autre.".
De cette façon, les quatre cuisiniers doivent se parler le moins possible, ce qui est très bien dans le développement de logiciels - pas nécessairement parce qu'ils se détestent, mais pour d'autres raisons comme l'emplacement physique, l'efficacité dans la prise de décisions, etc.
Cela signifie également que vous pouvez recombiner les plats (services) comme vous le souhaitez. Par exemple, vous pouvez simplement utiliser le dessert pour servir un café, ou simplement prendre la soupe et la combiner avec un pain que vous avez acheté à une autre entreprise pour offrir un menu moins cher, ou laisser d'autres restaurants utiliser vos salades pour les combiner avec leurs plats, etc. .
L'une des implémentations les plus réussies de SOA était chez Amazon. En raison de leur conception, ils pourraient reconditionner l'ensemble de leur infrastructure et la vendre en tant qu'Amazon Web Service.
* Ce n'est qu'un aspect de la SOA.
la source
SOA est un style architectural mais aussi une vision sur la manière dont une application hétérogène doit être développée et intégrée. L'objectif principal de SOA est de s'éloigner des applications monolithiques et de disposer à la place d'un ensemble de services réutilisables pouvant être composés pour créer des applications.
À mon humble avis, SOA n'a de sens qu'au niveau de l'entreprise et ne signifie rien pour une seule application.
Dans de nombreuses entreprises, chaque département avait son propre ensemble d'applications d'entreprise qui impliquaient
Une fonctionnalité similaire a été mise en œuvre plusieurs fois
Les données (par exemple, les données des clients ou des employés) doivent être partagées entre plusieurs applications
Les applications étaient centrées sur le service.
Avec SOA, l'idée est de rendre les services réutilisables disponibles à l'échelle de l'entreprise, de sorte que l'application puisse être créée et composée à partir d'eux. La promesse de SOA est
Pas besoin de réimplémenter des fonctionnalités similaires à plusieurs reprises (par exemple, fournir un service client ou employé)
Facilite l'intégration des applications entre elles et l'accès aux données ou fonctionnalités communes
La vision SOA nécessite un changement technologique ainsi qu'un changement organisationnel . Alors qu'il résout certains problèmes, il en introduit également d'autres, par exemple la sécurité est beaucoup plus difficile avec SOA qu'avec une application monolithique. Par conséquent, la SOA est sujette à discussion pour savoir si elle fonctionne ou non.
Voici la vue à 1000 pieds de SOA. Cela ne s'arrête cependant pas là. Il existe d'autres concepts complémentaires à la SOA tels que l'orchestration des processus métier (BPM), le bus de services d'entreprise (ESB), le traitement d'événements complexes (CEP), etc. Ils abordent tous le problème de l'alignement IT / métier , c'est-à-dire comment disposer de l'informatique. être en mesure de soutenir efficacement l'entreprise.
la source
SOA est l'acronyme de Service Oriented Architecture.
Vous pouvez penser à écrire un module d'accès à la base de données qui est si indépendant qu'il peut fonctionner seul sans aucune dépendance. Ce module peut exposer des classes qui peuvent être utilisées par tout logiciel hôte nécessitant un accès à la base de données. Il n'y a pas de configuration de démarrage dans l'application hôte. Tout ce qui est nécessaire ou requis est communiqué à travers les classes exposées par le module d'accès à la base de données. Nous pouvons appeler ces classes comme des services et considérer le module comme un service activé.
la source
Pour autant que je sache, le concept de base est que vous créez de petits «services» qui fournissent quelque chose d'utile à d'autres systèmes et évitez de construire de grands systèmes qui ont tendance à tout faire à l'intérieur du système.
Vous définissez donc un protocole que vous utiliserez pour l'interaction (par exemple, il peut s'agir de services Web SOAP) et laissez votre "système-qui-fait-un-business-travailler" interagir avec les petits services pour atteindre votre "grand objectif" .
la source
Je vous suggère de lire les articles de Thomas Erl et Roger Sessions, cela vous donnera une idée précise de ce qu'est la SOA. Ce sont également de bonnes ressources, regardez la SOA expliquée pour votre patron pour une explication profane
Construire une SOA
Modèle de conception SOA
Atteindre l'intégrité dans une SOA
Pourquoi votre SOA devrait être comme une VW Beetle
SOA expliqué pour votre patron
Performances du service WCF
la source
ce qui a tendance à se produire dans les grandes organisations, c'est qu'avec le temps, tout est soit des systèmes monolithiques, soit des systèmes disparates partout ou un peu des deux. Quelqu'un arrive finalement et dit que nous sommes en désordre. Maintenant, vous voulez re-concevoir (de l'argent à quelqu'un) tout pour être orienté dans une sorte de monotlithique dépend de qui vous payez le paradigme mais en même temps être capable d'ajouter des pièces et des parties indépendamment du maître / monolithe.
Vous achetez donc la SOA d'Oracle et Oracle devient le patron de toutes vos pièces. Tous les autres acteurs qui arrivent doivent travailler avec SOA via un service (service Web ou autre). Le monolithe Oracle s'occupe de tout (le monolithe n'est pas censé être dérogatoire). Oh ouais, vous avez ASP.NET MVC en façade ou autre chose.
l'essentiel est de faire entrer et sortir les choses du système sans impact et de garder le fournisseur Oracle SOA, Microsoft WCF, comme le cerveau de tout cela. tout est bon, fluide, les choses entrent et sortent avec peu ou pas d'impact, même les services humains, pas seulement les ordinateurs.
Pour moi, cela signifie simplement un tas de services Web (ou peu importe comment nous les appelons à l'avenir) avec une bonne interface. Et si vous possédez la base de données, accédez simplement à la base de données et arrêtez de vous soucier des mots à la mode. ça va.
la source
Une seule suggestion: -
Lisez les concepts, la technologie et la conception SOA par Thomas Erl.
Il a très bien donné les détails sur SOA en anglais simple et avec des études de cas.
la source
Eh bien, vous voyez ... SOA signifie Service Oriented Architecture .... En termes simples, vous écrivez un morceau de code qui est très générique, c'est-à-dire qu'il fait quelque chose qui peut être utilisé dans de nombreuses applications ... un carnet d'adresses ou peut être une calculatrice. et vous lancez ce code sur l'IIS. Vous fournissez donc un service via votre code. Vous êtes donc un fournisseur de services. Maintenant, quelqu'un veut utiliser un code similaire, alors il n'a plus besoin d'écrire le code à nouveau. Il utilise simplement votre code peut-être via un service Web. Par conséquent, il devient un consommateur de services. Par conséquent, la création d'un programme utilisant de tels services s'appelle SOA. Et le couplage lâche existe car le fournisseur de services et le consommateur peuvent interagir même s'ils utilisent des langages de programmation différents. J'espère que tu as compris.
la source
des blogs ittoolbox.
Ce qui suit décrit les similitudes et les différences avec les techniques de conception antérieures:
• SOA par rapport à la programmation structurée o Similitudes: les plus similaires aux appels de sous-programmes où les paramètres sont passés et le fonctionnement de la fonction est extrait de l'appelant - par exemple, lien CICS et exécution et mot réservé COBOL CALL. Les cahiers sont utilisés pour définir la structure de données qui est généralement définie comme un schéma XML pour les services. o Différences: la SOA est faiblement couplée, ce qui implique que les changements apportés à un service ont moins d'impact sur le consommateur (le programme «appelant») et les services sont interopérables entre les langages et les plates-formes.
• SOA versus OOA / OOD o Similitudes: encapsulation, abstraction et interfaces définies o Différences: SOA est faiblement couplé sans hiérarchie de classe ni héritage, abstractions de bas niveau - niveau de classe versus service métier
• SOA par rapport au développement basé sur des composants hérités (CBD) - par exemple CORBA, DCOM, EJB o Similitudes: réutilisation via l'assemblage de composants, interfaces, appels à distance o Différences: large adoption de normes, schémas XML par rapport aux objets marshalés, orchestration de services, conception pour réutilisation est plus facile, les services sont axés sur l'entreprise par rapport à l'informatique, les services d'entreprise sont bien définis (large champ d'application)
• SOA (pour l'intégration) versus Enterprise Application Integration (EAI) o Similitudes: Meilleures pratiques (interfaces bien définies, schémas standardisés, architecture événementielle), interfaces réutilisables, schémas communs o Différences: normes, adoption et outils améliorés
la source
En lisant les réponses ci-dessus, il me semble que SOA est ce que les développeurs (du moins les bons) font depuis le premier jour.
la source
Cela pourrait également signifier "Struct of Arrays" (par opposition à "Array of Structs") qui est un sujet courant dans la programmation parallèle (en particulier SIMD), mais je suppose que ce n'est pas ce que vous voulez dire ici!
la source
SOA est un mot à la mode qui a été inventé par les fournisseurs de technologie pour les aider à vendre leurs technologies liées à Enterprise Service Bus. L'idée est que vous faites en sorte que vos petites applications insulaires dans l'entreprise (par exemple: système de comptabilité, système de contrôle des stocks, etc.) exposent toutes les services, afin qu'ils puissent être orchestrés de manière flexible dans des `` applications '', ou plutôt devenir des parties d'une entreprise globale. logique.
Fondamentalement, un tas de vieilles conneries qui ne fonctionnent presque jamais, car cela ne tient pas compte du fait que les raisons pour lesquelles la technologie est telle qu'elle est dans une organisation sont liées à la culture, à l'évolution, à l'histoire de l'entreprise et le verrouillage est si élevé que tout tentative de restructuration de la technologie est vouée à l'échec.
la source
Écoutez l'édition de cette semaine du podcast Floss Weekly , qui couvre SOA. Les descriptions sont de niveau assez élevé et ne plongent pas dans trop de détails techniques (bien que des exemples plus concrets et reconnaissables de projets SOA auraient été utiles.
la source
Une architecture d'application traditionnelle est:
Si vous souhaitez accéder aux données par programmation, vous devrez peut-être recourir à la capture d'écran.
La SOA me semble être une architecture qui se concentre sur l'exposition de données et / ou d'API lisibles par machine, plutôt que sur l'exposition d'interfaces utilisateur.
la source
L'architecture orientée services ou SOA est un modèle d'architecture logicielle dans lequel les applications ou les systèmes sont construits à partir de services logiciels sous-jacents (et généralement distribués) qui se conforment à un ensemble spécifique de caractéristiques, à savoir:
L'objectif principal de la SOA est l'agilité de développement de logiciels, c'est-à-dire la capacité à répondre au changement facilement et à moindre coût, permettant ainsi aux entreprises de réagir rapidement à l'évolution des marchés.
Les services sont généralement (mais pas exclusivement) mis en œuvre en tant que services Web, c'est-à-dire qu'ils fonctionnent via le protocole HTTP Web omniprésent, et sont mis en œuvre soit à l'aide de SOAP XML ou du paradigme REST léger (et plus populaire).
la source
Ça dépend de qui vous êtes!
Si vous êtes propriétaire d'une entreprise, SOA est une solution pour augmenter vos revenus et votre agilité commerciale. Si vous êtes un architecte d'entreprise, SOA est un moyen de dessiner un logiciel agréable et propre sur une toile vierge. Si vous êtes un architecte, SOA est la solution pour concevoir des services faiblement couplés sur une plate-forme d'intégration, pour simplement brancher les services sur des prises. Si vous êtes un développeur, SOA est un paradigme de programmation où un service est au centre de la conception et du code.
Vous devriez lire 100-SOA-Questions [pdf]
À votre santé
la source
L'architecture orientée services (SOA) est un style d'architecture logicielle qui construit des applications sous la forme d'un ensemble d'éléments enfichables, chacun pouvant être réutilisé par d'autres applications.
la source