Quando si creano/adattano servizi per lavorare in un'architettura SOA, le interfacce esposte possono essere qualsiasi cosa si desideri purché i consumatori abbiano la capacità di elaborare la risposta.
Per fornire una risposta più concisa, interpreterò il REST come un'interfaccia HTTP che può eseguire le operazioni CRUD, forse rispondendo alle richieste con un oggetto XML o JSON.
SOAP tende a prestarsi a operazioni più complesse sul lato del servizio, le librerie e gli XML di SOAP coinvolti introducono complessità nel sistema.
Se tutto ciò che serve è la rappresentazione delle risorse a cui è possibile accedere tramite semplici operazioni CRUD, vale la pena considerare l'implementazione di un'interfaccia REST per ridurre la complessità, anche se il servizio verrà eseguito insieme ai servizi laterali con le interfacce SOAP. Tutto ciò che sarebbe richiesto è che il consumatore del servizio sia in grado di gestire le risposte di stile RESTful e di agire come un cliente SOAP.
Ci sarebbero argomenti per la coerenza tra i servizi per migliorare la manutenibilità e la facilità di sviluppo, ma questa non è una necessità e dovrebbe essere inclusa solo nel processo decisionale.
Quando si include un bus di messaggistica nella progettazione, i servizi eterogenei possono essere gestiti in modo ancora più efficace inserendo trasformazioni standard (XSLT, personalizzate) nel processo in grado di tradurre la risposta dai servizi in un formato standard compreso dal sistema come un'intera.