Quelle est la différence entre SOA et ROA?
Comme je sais SOA(Service Oriented Architecture) est basé sur les collections de discret et de modules logiciels connus comme des services. Ces services peuvent échanger des informations avec tout autre service à la portée du réseau sans interaction humaine. SOA utilise le protocole SOAP ou REST pour transférer des documents XML ou JSON entre différents services.
mais je suis confondu avec ROA (Resource Oriented Architecture) et sur ce qui est la différence entre les deux architecture.
Toute aide sera appréciée, corriger moi si je me trompe.
4 réponses
comme les termes impliquent une Architecture orientée services est orientée services, et une Architecture orientée ressources est orientée ressources. En général, les différences entre deux choses, A et B, s'expliquent souvent le mieux par la définition de L'essence de A et B. Il s'agit donc de se demander ce qu'est un "service" et ce qu'est une "ressource".
je laisse cela au lecteur, car la plupart des développeurs ont probablement une idée de ce qu'est l'un ou l'autre. Bien qu'il est en fait pas si facile, comme une chose pourrait être considérée à la fois comme un service, et comme une ressource (similaire à la classique dualité onde-particule de lumière en physique). Par exemple, Flickr est un service qui vous fournit des photos, mais peut également être considéré comme une ressource pour les photos. Mais fondamentalement, une ressource est plus de données statiques (comme une photo) et un service est plus de traitement (par exemple, fournir une photo, ou redimensionner une photo afin qu'ils puissent montrer une vignette d'un).
je comprends mieux la différence en regardant la façon dont une application mettre en œuvre son caractère fonctionnel:
- Une application construite avec un Architecture Axée Sur Le Service est plus un 'Façade', par exemple elle combine ou compose sa fonctionnalité sortante basée sur la fonctionnalité qui se trouve dans les services qu'elle utilise "derrière les écrans" (éventuellement sur le réseau). Par exemple: son cœur de traitement consiste à appeler des services externes, à leur fournir des paramètres, et à combiner les résultats avec éventuellement certains traitement supplémentaire ou algorithmes pour l'utilisateur.
- Une application construite avec un Architecture Axée Sur Les Ressources effectue plus de traitement à l'interne (par exemple, au lieu d'appeler des composants externes) mais utilise des ressources externes comme entrées. Par exemple: son traitement de base consiste à récupérer des ressources statiques et ensuite à faire plus de calcul à l'interne.
je vais rectifier d'abord:)
pour les besoins de cette réponse, disons simplement que le repos est une façon d'organiser les ressources et les opérations que vous effectuez sur elles.
SOA utilise le protocole SOAP ou REST pour transférer des documents XML ou JSON entre différents services.
Absolument pas. Le repos n'est pas un protocole. Le savon est un protocole, c'est vrai. Il est fréquemment utilisé dans les architectures SOA, en particulier pour la mise en œuvre de SOAP sur HTTP ou Savon sur JMS. Cependant, SOA n'implique pas de savon. Vous pouvez utiliser n'importe quel autre protocole. Même s'applique à XML et JSON. Vous pouvez utiliser n'importe quel autre langue ou dialecte.
Maintenant l'explication. SOA est une architecture orientée services. Par conséquent, l'ensemble du système est composé de services qui effectuent habituellement certaines opérations. L'architecture est basée sur cela. Imaginez un nuage de serveurs où chacun détient au moins un service, par exemple WeatherPredictor, ForexCalculator, etc.
a L'opposé, vous avez l'architecture axée sur les ressources, ROA, où le système est composé de ressources. Imaginez un nuage de serveurs où chacun représente une ou plusieurs ressources, par exemple Météo, Euro, Dollar,...
ROA est généralement utilisé dans les grands systèmes ouverts, en raison des avantages qu'il apporte. Dans les architectures ROA, vous trouverez généralement des services RESTfull. Les services RESTfull sont aujourd'hui typiquement implémentés avec juste JSON sur HTTP, ou XML sur HTTP.
SOA est utilisé un peu partout. Dans SOA vous trouvez souvent le SOAP sur HTTP, SOAP sur JMS,etc.
mais un jour, vous pouvez rencontrer un service Web reposant qui, pour une raison étrange, utilise SOAP (peut-être que les développeurs avaient besoin d'intégrer le message dans l'enveloppe SOAP pour une raison obscure). Je pense que vous ne trouverez pas cet exemple dans la vraie vie, mais juste pour vous montrer que SOA ou ROA n'impliquent pas le protocole à utiliser, dans ce cas SOAP.
j'Espère cela aide.
d'après mon expérience, ma compréhension est comme suit:
ROA est API wrappers over data models, SOA est API over functional modules.
ROA est utilisé pour fournir des opérations CRUD. SOA est utilisé pour relier les modules au moment de l'exécution.
ROA isole les utilisateurs de L'API des modifications apportées aux modèles de données. SOA permet le remplacement direct des modules, simplifiant le déploiement et la personnalisation.
ROA (architecture axée sur les ressources) est juste un nom fantaisiste pour un SOA (Architecture basée sur le Service) utilisant des services de repos.
- le principal avantage de SOA par rapport à ROA est le support d'outils plus évolué,type-sécurité des requêtes XML.
- le principal avantage de ROA est la facilité de mise en œuvre, l'agilité de la conception, et l'approche légère des choses.