Prima che i servizi basati su HTTP diventassero predominanti, c'erano molti altri sistemi che fornivano funzioni simili. Nel mondo Windows, quando COM era un modello di componenti diffuso, era normale usare DCOM, un protocollo RPC binario su TCP che permetteva di chiamare metodi su oggetti COM in processi remoti o macchine remote. COM + era un server di applicazioni basato su DCOM, che consente di registrare, eseguire e gestire i servizi. MSMQ era un'altra opzione, un sistema di code asincrone distribuito in cui un'app poteva scrivere su una coda per essere rilevata dal servizio di elaborazione della coda.
Ho usato queste tecnologie e altre per costruire architetture distribuite e orientate ai servizi negli anni '90. Altre opzioni esistevano anche prima. CORBA era simile a COM, meno MS-centrico, e server di applicazioni che eseguono componenti CORBA esistevano per varie piattaforme.
La SOA consiste nel separare le tue applicazioni in domini distinti e indipendenti. È simile al principio Separation of Concerns nella codifica, ma a livello architettonico. E proprio come SoC non si basa su una tecnologia specifica o paradigma come OOP, quindi SOA non si basa su servizi Web o simili meccanismi RPC online. In effetti, i servizi web non sono "un'implementazione di SOA", quanto componenti architettonici che possono essere utilizzati per SOA. Dopo tutto, le stesse tecnologie WS sono spesso utilizzate come back-end per semplici applicazioni client-server.