Wat is SOA? Servicegericht Architectuur Principes
Wat is SOA (Servicegericht Archistructuur)?
Een servicegericht Archistructuur (SOA) is een architectonisch patroon in computersoftwareontwerp waarin applicatiecomponenten diensten leveren aan andere componenten via een communicatieprotocol, meestal via een netwerk. De principes van service-oriëntatie zijn onafhankelijk van enig product, leverancier of technologie.
SOA maakt het eenvoudigweg eenvoudiger voor softwarecomponenten over verschillende netwerken om met elkaar te werken.
Webservices die zijn gebouwd volgens de SOA-architectuur, maken webservices doorgaans onafhankelijker. De webservices zelf kunnen gegevens met elkaar uitwisselen en vanwege de onderliggende principes waarop ze zijn gemaakt, hebben ze geen enkele menselijke interactie nodig en hoeven ze ook geen codewijzigingen te ondergaan. Het zorgt ervoor dat de webservices op een netwerk naadloos met elkaar kunnen communiceren.
Servicegericht Architectuur (SOA) principes
Er zijn 9 soorten SOA-ontwerpprincipes die hieronder worden vermeld
1. Gestandaardiseerd servicecontract
Diensten voldoen aan een dienstbeschrijving. Een dienst moet een soort beschrijving hebben die beschrijft waar de dienst over gaat. Dit maakt het voor clienttoepassingen gemakkelijker om te begrijpen wat de service doet.
2. Losse koppeling
Less afhankelijkheid van elkaar. Dit is een van de belangrijkste kenmerken van webservices, die gewoon stelt dat er zo min mogelijk afhankelijkheid moet zijn tussen de webservices en de client die de webservice aanroept. Dus als de functionaliteit van de service op enig moment verandert, mag dit de clienttoepassing niet verstoren of verhinderen dat deze werkt.
3. Dienstenabstractie
Diensten verbergen de logica die zij inkapselen voor de buitenwereld. De service mag niet onthullen hoe deze zijn functionaliteit uitvoert; het moet de clienttoepassing alleen vertellen wat het doet en niet hoe het het doet.
4. Herbruikbaarheid van diensten
Logica is onderverdeeld in services met de bedoeling hergebruik te maximaliseren. In elk ontwikkelingsbedrijf is herbruikbaarheid een belangrijk onderwerp, omdat je natuurlijk geen tijd en moeite wilt besteden aan het steeds opnieuw bouwen van dezelfde code voor meerdere applicaties die deze code nodig hebben. Zodra de code voor een webservice is geschreven, moet deze dus met verschillende toepassingstypen kunnen werken.
5. Dienstautonomie
Diensten moeten controle hebben over de logica die zij in zich dragen. De dienst weet alles over welke functionaliteit het biedt en moet daarom ook volledige controle hebben over de code die erin staat.
6. Dienst staatloosheid
Idealiter zouden diensten staatloos moeten zijn. Dit betekent dat diensten geen informatie van de ene staat naar de andere mogen achterhouden. Dit moet worden gedaan vanuit de clienttoepassing. Een voorbeeld kan een bestelling zijn die op een winkelsite is geplaatst. Nu kunt u een webservice hebben die u de prijs van een bepaald artikel geeft. Maar als de artikelen aan een winkelwagentje worden toegevoegd en de webpagina navigeert naar de pagina waar u de betaling uitvoert, mag de webservice niet verantwoordelijk zijn voor de prijs van het artikel dat naar de betaalpagina moet worden overgebracht. In plaats daarvan moet dit door de webapplicatie worden gedaan.
7. Vindbaarheid van diensten
Services kunnen worden ontdekt (meestal in een serviceregister). We hebben dit al gezien in het concept van de UDDI, dat een register uitvoert dat informatie over de webservice kan bevatten.
8. Composibiliteit van diensten
Diensten verdelen grote problemen in kleine problemen. Je moet nooit alle functionaliteit van een applicatie in één enkele dienst onderbrengen, maar de dienst in plaats daarvan opsplitsen in modules met elk een afzonderlijke bedrijfsfunctionaliteit.
9. Interoperabiliteit van diensten
Diensten moeten standaarden gebruiken die verschillende abonnees in staat stellen de dienst te gebruiken. Bij webservices zijn standaarden als XML en communicatie via HTTP wordt gebruikt om ervoor te zorgen dat deze aan dit principe voldoet.