ROA sta per Resource Oriented Architecture e si contrappone sotto molti punti di vista a SOA, cioe' Service Oriented Architecture.
In realta' non c'e' un modello migliore dell'altro e so potrebbe tranquillamente affermare che un 'servizio' e' necessario per creare una 'risorsa' ed una 'risorsa' e' necessaria per fornire un 'servizio'. Ciononostante possiamo altresi' affermare che il contesto delle risorse e' decisamente predominante.
Quali sono le caratteristiche di ROA:
- Addressability: intesa come capacita' di identificare una risorsa addraverso uno URI ben definito
- Statelessness: mancanza di supporto nativo per la gestione dello stato
- Connectedness: ogni chiamata e' indipendente dalle altre
- Uniform interface: verbi (GET, HEAD, POST, PUT, ecc.) uniformi per ogni risorsa
Dal mio punto di vista ROA ha molti piu' vantaggi di SOA:
- Interfacce piu' chiare e facili da testare
- Modello decisamente piu' conosciuto rispetto a SOAP e molte specifiche WS-*
- Non ha bisogno di alcuna tecnologia particolare per consumare un servizio
- Supportato da molti frameworks, come WCF
- Piu' facilmente tracciabile attraverso i logs di IIS
- Payload piu' decisamente leggero
Lo svantaggio principale sta nella mancanza di strumenti per formalizzare il contratto.