{"id":12851,"date":"2019-10-11T07:30:15","date_gmt":"2019-10-11T05:30:15","guid":{"rendered":"https:\/\/www.unilab.eu\/?p=12851"},"modified":"2019-10-07T17:00:45","modified_gmt":"2019-10-07T15:00:45","slug":"server-oriented-architecture","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/server-oriented-architecture\/","title":{"rendered":"Server Oriented Architecture: la SOA in pillole"},"content":{"rendered":"<p>La <strong>server oriented architecture<\/strong>, riassunta con l\u2019acronimo <strong>SOA<\/strong>, \u00e8 un insieme di architetture informatiche che supportano dei servizi web (service) realizzati in maniera modulare, risultando cos\u00ec facilmente intercambiabili o sostituibili.<\/p>\n<p>La caratteristica fondamentale che contraddistingue questa architettura software, \u00e8 la capacit\u00e0 dei servizi di <strong>dialogare con diversi sistemi<\/strong>, tramite appositi collegamenti in rete. L\u2019utente finale pu\u00f2 usufruire facilmente delle suddette funzionalit\u00e0, attraverso un\u2019interfaccia comprensibile e intuitiva (a prescindere dal linguaggio utilizzato).<\/p>\n<p><strong>Come funziona la server oriented architecture<\/strong><\/p>\n<p>Il componente principale della struttura SOA \u00e8 il <strong>servizio<\/strong>. Si tratta di una funzionalit\u00e0 di tipo business, dotata di interfaccia propria, che svolge un compito specifico. Per poter essere ritenuto compatibile con un\u2019architettura SOA, un servizio deve soddisfare alcune caratteristiche ben definite e imprescindibili:<\/p>\n<ul>\n<li>deve essere recuperabile dinamicamente e ricercabile;<\/li>\n<li>\u00e8 importante che sia modulare e autocontenuto;<\/li>\n<li>deve possedere un\u2019interfaccia chiara e indipendente dall\u2019implementazione a cui viene destinato;<\/li>\n<li>non deve essere saldamente legato a un altro servizio, sia a livello tecnologico che funzionale (loosely coupled);<\/li>\n<li>deve poter essere associato in maniera trasparente rispetto all\u2019allocazione;<\/li>\n<li>l\u2019interfaccia del servizio deve essere, preferibilmente, a grana grossa (coarse-grained);<\/li>\n<li>deve essere componibile, in modo da potersi integrare con facilit\u00e0 nei processi di business.<\/li>\n<\/ul>\n<p>Oltre a questi aspetti che rendono il servizio funzionale, esso deve anche essere pubblicabile sulla rete, con un\u2019interfaccia ricercabile e invocabile <strong>a prescindere dal linguaggio<\/strong> su cui si basa la piattaforma che effettua la richiesta.<\/p>\n<p>Questa versatilit\u00e0 d\u00e0 la possibilit\u00e0 alle aziende di intrecciare <strong>pi\u00f9 servizi contemporaneamente<\/strong>, integrandoli facilmente nei propri applicativi, senza la necessit\u00e0 di intervenire direttamente sulla struttura del software. Pi\u00f9 i servizi vengono correlati l\u2019uno all\u2019altro, pi\u00f9 complessa diventa l\u2019architettura (ma, al contempo, la sua gestione risulta facile e immediata).<\/p>\n<p>Come si pu\u00f2 ben comprendere, la server oriented architecture \u00e8 la soluzione ideale per chi \u00e8 alla ricerca di <strong>servizi web dinamici<\/strong> e facili da interfacciare con software gi\u00e0 esistenti. Il sistema modulare consente aggiornamenti pi\u00f9 rapidi e sostituzioni prive di conseguenze.<\/p>\n<p><strong>La struttura logica alla base della SOA<\/strong><\/p>\n<p>La server oriented architecture per lavorare correttamente ha bisogno di una <strong>struttura logica<\/strong> che ne governi le varie fasi. Lo schema per spiegarne il funzionamento pu\u00f2 essere suddiviso in quattro blocchi, che rappresentano (ciascuno dei quali) una diversa fase del processo che porta un servizio a essere erogato all\u2019utente finale:<\/p>\n<ol>\n<li><strong>service consumer<\/strong>: \u00e8 costituito dall\u2019applicazione (o da un altro servizio) che richiede il servizio specifico;<\/li>\n<li><strong>service provider<\/strong>: chi fornisce il servizio ed esporta la sua interfaccia;<\/li>\n<li><strong>service contract<\/strong>: \u00e8 la codifica con cui viene richiesto il servizio e la relativa risposta. Varia a seconda dell\u2019applicazione o del programma che ne fa richiesta;<\/li>\n<li><strong>service registry<\/strong>: \u00e8 l\u2019elenco in rete di tutti i servizi disponibili a cui viene effettuata la richiesta.<\/li>\n<\/ol>\n<p>Riassumendo, il <strong>funzionamento tipico<\/strong> di una SOA \u00e8 il seguente: il <em>service consumer<\/em> effettua la richiesta di un servizio al <em>service provider<\/em>, attraverso il <em>service contract<\/em>; il <em>service provider<\/em>\u00a0 risponde (con la medesima codifica contenuta nel service contract) dopo aver verificato l\u2019effettiva presenza del servizio richiesto nel suo <em>service registry<\/em> e provvede a inviarlo.<\/p>\n<p><strong>La server oriented architecture offre enormi vantaggi alle aziende<\/strong><\/p>\n<p>Un\u2019infrastruttura cos\u00ec dinamica \u00e8 in grado di dare alle aziende che scelgono di adottarla vantaggi davvero interessanti. La <strong>flessibilit\u00e0<\/strong> offerta dai servizi modulari, come \u00e8 gi\u00e0 stato detto, \u00e8 perfetta per aggiornare agevolmente i software e mantenerli sempre al passo con i tempi.<\/p>\n<p>Inoltre, anche la <strong>competitivit\u00e0<\/strong> viene incentivata, grazie a strumenti costantemente aggiornati, in grado di rispondere alle mutevoli domande del mercato e degli utenti.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-12851\" data-postid=\"12851\" class=\"themify_builder_content themify_builder_content-12851 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>La server oriented architecture, riassunta con l\u2019acronimo SOA, \u00e8 un insieme di architetture informatiche che supportano dei servizi web (service) realizzati in maniera modulare, risultando cos\u00ec facilmente intercambiabili o sostituibili. <\/p>\n","protected":false},"author":10,"featured_media":12854,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"La server oriented architecture, riassunta con l\u2019acronimo SOA, \u00e8 un insieme di architetture informatiche che supportano dei servizi web (service) realizzati in maniera modulare, risultando cos\u00ec facilmente intercambiabili o sostituibili.","_seopress_robots_index":"","footnotes":""},"categories":[46],"tags":[],"class_list":["post-12851","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee-break-it","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/12851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/comments?post=12851"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/12851\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/12854"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=12851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=12851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=12851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}