Object-orientatie is een paradigma van programmeertalen. Web-services (zoals we ze nu zien) zijn een handige manier om functionaliteit aan te bieden aan andere computers op een netwerk (merk op dat ik niet zeg dat ze functionaliteit aanbieden over het
web omdat webservices niets met het web te maken hebben

).
Het design van een web-service is dus een compleet ander concept dan het design van een OO-applicatie. Je kunt bijvoorbeeld uitstekend een web-service implementeren in een OO-taal en daarbij het OO-design gebruiken samen met het web-service design. Ook kan je een web-service implementeren in een procedurele taal (C), een functionele (Haskell), een logische (Prolog) of bijvoorbeeld zelfs in een transformatie-taal (Stratego).
Het design van een web-service gaat voornamelijk over de functionaliteit die je aanbiedt, wat de argumenten van een service zijn, wat z'n resultaat is en hoe je functionaliteit groepeert. Dit alles zal echter wel gerealiseerd moeten worden, bijvoorbeeld op basis van een OO-design.
Het idee van web-services is echter juist dat het een implementatie onafhankelijke interface is tot functionaliteit. OO-achtige zaken zouden daarom ook niet zichtbaar moeten zijn als je het design van een web-service bekijkt.
Helaas volgt op dit moment het design van een web-service vaak uit het design van een applicatie in een OO-taal: de interface die bepaalt hoe er wordt gecommuniceerd wordt vaak niet van te voren vastgelegd, maar volgt uit de implementatie. Dat is aan de ene kant jammer, maar aan de andere kant ook wel begrijpelijk.
In een pure OO omgeving wordt remoting vaak heel anders geimplementeerd. Je ziet dit terug in systemen als RMI en Corba maar zelfs ook in .NET Remoting. De client krijgt dan een stub naar een remote object waarop gewoon methode aangeroepen kunnen worden. Deze remote-referenties zou je niet moeten gebruiken in een web-service omdat je je dan vastlegt op een implementatie in een bepaald paradigma of zelfs een bepaald platform. Helaas is het gedistribueerde object systeem van .NET (.NET Remoting) echter ook gebaseerd op web-services en worden daar dus gewoon object-referenties uitgewisseld tussen web-services.