protocolli di comunicazione tra moduli e soa

14
Protocolli di comunicazione tra moduli e SOA Vitalij Zadneprovskij Incontro JUG Roma e JBUG Roma 28/11/13 1 / 14

Upload: vitalij-zadneprovskij

Post on 30-Jun-2015

1.187 views

Category:

Technology


0 download

DESCRIPTION

Come la comunicazione tra moduli è evoluta per portarci a quello che oggi è la Service Oriented Architecture. Quali approcci hanno funzionato e quali no. Un esempio di architettura SOA. Come si implementano i web services di tipo REST con Jersey.

TRANSCRIPT

Page 1: Protocolli di comunicazione tra moduli e SOA

Protocolli di comunicazione tra moduli e SOA

Vitalij Zadneprovskij

Incontro JUG Roma e JBUG Roma

28/11/13 1 / 14

Page 2: Protocolli di comunicazione tra moduli e SOA

Outline

● Quando e perché realizzare architetture SOA● Progettazione: component based development● Problema: come far comunicare moduli diversi?● Impariamo dagli errori: CORBA● Primo caso di successo: XML, SOAP e WSDL● Come si fa oggi: JSON, REST e WADL● L'implementazione di riferimento: Jersey

28/11/13 2 / 14

Page 3: Protocolli di comunicazione tra moduli e SOA

Service Oriented Architecture

● Software di grandi dimensioni, non ha senso per piccoli programmi

● Moduli eterogenei che comunicano via web services

● Permette basso accoppiamento

● Favorisce l'autonomia● Problema allineamento dati● Non sostituisce buona

progettazione

28/11/13 3 / 14

Page 4: Protocolli di comunicazione tra moduli e SOA

Perché realizziamo moduli SOA?

● Evitare unico applicativo enorme

● Prevedere impatto modifiche● Molte “pezze” aggiunte nel

tempo aumentano l'accoppiamento del codice

● Si ereditano applicativi eterogenei

● Opzioni make, buy ed outsource preoccupandosi meno di come integrare con ciò che già si ha

28/11/13 4 / 14

Page 5: Protocolli di comunicazione tra moduli e SOA

Component based development

Un componente è definito come “a nontrivial, nearly independent and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture” da Brown, Walnau 1996

28/11/13 5 / 14

Fonte: http://healinginnovation.com

Page 6: Protocolli di comunicazione tra moduli e SOA

Come far comunicare i componenti?

● Protocolli proprietari come Microsoft Distributed Component Object Model ed Java Remote Method Invocation

● Incompatibilità tra i vari protocolli

● Molto software su mainframe, uso di Java Connector Architecture

Fonte: Sito Blodnick, Fazio & Associates PC

28/11/13 6 / 14

Page 7: Protocolli di comunicazione tra moduli e SOA

Common Object Request Broker Architecture

● Broker è un software mediatore che permette di fare chiamate remote serializzando i dati

● Uso di Interface Definition Language

● Problema del mapping del linguaggio usato in IDL, difficile da fare con alcuni linguaggi come il C++ ed il C

● Problemi di compatibilità delle implementazioni dei vari ORB proprietari

Fonte: Bubblews.com

28/11/13 7 / 14

Page 8: Protocolli di comunicazione tra moduli e SOA

Extensible Markup Language,Simple Object Access Protocol

● Progettato nel 1998 da Microsoft

● XML è diventato standard del World Wide Web Consortium comprensibile da umani e computer

● Possibilità sottolinguaggi definiti da documenti XML Schema Definition

● WSDL è simile a IDL del CORBA

28/11/13 8 / 14

Page 9: Protocolli di comunicazione tra moduli e SOA

Comunicazione asincronaJava Message Service ed Advanced Message Queiung Protocol

● Strutture dati che mantengono le richieste prima che vengano elaborate

● Coda e topic● Minore accoppiamento● Possibile persistenza● AMQP è standard OASIS● Aggiunta e prelievo transazionali● Windows Azure Service Bus,

sistema cloud di Microsoft● Sia RabbitMQ che ActiveMQ

supportano AMQPFonte: Oracle Java EE 6 Tutorial

28/11/13 9 / 14

Page 10: Protocolli di comunicazione tra moduli e SOA

Esempio architettura SOAAutorizzazione cambio gomme per automobili in leasing

Orchestratore

Richiesta autorizzazione

AnagraficaClienti

Parco auto

Contratti dileasing

Censimentopneumatici

Prezzario

Conto deposito

Motore regoleautorizzazione

Contabilizzazioneautorizzazioni

Async

AnagrafeGommisti

28/11/13 10 / 14

Modulo anagrafico

Modulo pneumatici

Modulo autorizzazioni

Page 11: Protocolli di comunicazione tra moduli e SOA

Representational State Transfer,JavaScript Object Notation

● Risorsa identificata da URI univoco

● Operazioni: metodi HTTP 1.1: GET, POST, PUT, DELETE, etc.

● JSON compatto rispetto a XML

● JSON Schema per validazione parametri

● Ottimizzato per client con framework MVC Javascript

{

"id": 1,

"name": "Foo",

"price": 123,

"tags": [ "Bar", "Eek" ],

"stock": {

"warehouse": 300,

"retail": 20

}

}

28/11/13 11 / 14

Page 12: Protocolli di comunicazione tra moduli e SOA

JSR 311 + 339: REST Web Services

● @Path: percorso di una risorsa

● @GET, @POST: operazioni su risorse

● @Produces: tipo di contenuto che viene prodotto

● @Consumes: tipo di contenuto che si è in grado di gestire

● Esempio di URL:http://nome_host/nome_modulo/rest/nome_risorsa/id_risorsa

@Path("widgets")

@Produces("application/widgets+xml")

public class WidgetsResource {

@GET

public Widgets getAsXML() {...}

@GET

@Produces("text/html")

public String getAsHtml() {...}

@POST

@Consumes("application/widgets+xml")

public void addWidget(Widget widget) {...}

}

28/11/13 12 / 14

Page 13: Protocolli di comunicazione tra moduli e SOA

Jersey: reference implementation

● Estende la servlet, quindi gira anche su servlet container come Tomcat e Jetty

● Espone application.wadl che può essere usato per generare automaticamente i client

● Esiste archetipo Maven per creare applicativo REST funzionante

● Per creare client, usare plugin di Maven di wadl2java

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>

<servlet-name>Jersey Web Application</servlet-name>

<servlet-class>

com.sun.jersey.spi.container.servlet.ServletContainer

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Jersey Web Application</servlet-name>

<url-pattern>/rest/*</url-pattern>

</servlet-mapping>

</web-app>

28/11/13 13 / 14

Page 14: Protocolli di comunicazione tra moduli e SOA

Ulteriori sviluppi

● Service bus● Integration patterns● Continous integration● Sicurezza dei dati● Modularità o

prestazioni● Stati consistenti

● Transazioni● Comunicazione

sincrona ed asincrona● BPEL● BPMN● Interazione col DWH● Web services esterni

28/11/13 14 / 14