Domanda

Mi è stato affidato il compito di gettare le basi di una SOA per il mio cliente. L'obiettivo è aprire vari processi in modo indipendente dal cliente finale e anche rendere i dati disponibili offline per i rappresentanti che visitano i clienti.

Ho una vasta esperienza con J2EE (Websphere) e servizi web, ma apprezzerei i consigli su come costruire una SOA del genere.

Dove sono le insidie? E la sicurezza? Quanto devono essere finemente granulati i servizi? ecc.

Sarebbero utili anche collegamenti a tutorial e consigli sui libri.

Grazie!

È stato utile?

Soluzione

insidie ??

  • Controllo delle versioni / retrocompatibilità: diventa davvero difficile modificare un contratto una volta caricati molti client. Ho visto la versione di molti siti delle API introducendo la versione nell'URL

granularità

  • Ogni servizio dovrebbe essere ragionevolmente autonomo (non aspettarti che le persone facciano 3 chiamate prima di ricevere ciò di cui hanno bisogno)

Indipendenza dalla piattaforma

  • Prova a fornire più di un modo per accedere alle tue API (WS, JSON, REST ...)

Altri suggerimenti

Le persone non possono essere d'accordo su cosa significhi realmente SOA.

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

(sebbene il consenso possa essere cresciuto da quando è stato scritto)

Suggerisco di interrogare il tuo cliente per scoprire esattamente cosa significano, se non altro. Quindi dai loro qualcosa che fornisce effettivamente valore commerciale , mentre spunta tutte le caselle SOA che potrebbero coincidere con quello sforzo.

Chiamami scettico della SOA. Il lamento di Fowler sembra ancora giusto.

Mi concentrerei sul problema più generale: il tuo client ha 2 o più applicazioni che devono collaborare insieme. Guarda i modelli di integrazione della vecchia scuola.

 Immagine EIP
(fonte: amazon.com )

Come ha detto Alan, inizierei a leggere il libro Enterprise Integration Patterns . Esistono diversi modi per implementarli utilizzando un sistema di messaggistica direttamente come JMS o utilizzando progetti open source come Apache Cammello , ad esempio consultare il catalogo modelli .

Vorrei anche capire come costruire buoni servizi RESTful usando JAX-RS con Jersey come un modo semplice per esporre facilmente risorse per i tuoi sistemi a chiunque sul Web da qualsiasi lingua / piattaforma senza cadere in SOAP / WS- * deathstar :)

Ottieni un ESB (bus di servizio aziendale): Mulesource è una buona scelta (Opensource, Maturo, ma sanguinante). Una volta capito, capirai SOA.

  

L'obiettivo è quello di aprire vari   processi in un cliente finale indipendente   modo e anche per rendere disponibili i dati   offline ad es. per i rappresentanti che visitano   clienti.

La seconda metà non è in realtà un argomento SOA, è più una replica al problema dei dispositivi mobili. Starei molto, molto lontano dal cercare di attuare una parola d'ordine e concentrarmi sui problemi che stai affermando. I servizi Web sono un buon modo per aprire il processo in modo indipendente dal client.

Finora il miglior libro che ho trovato è Compasso SOA anche disponibile su Amazon

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top