Web-services are a specific way of implementing a Service Oriented Architecture (SOA).
Imagine you are the owner of a small business. You sell construction equipment to building contractors. Since the prices of the equipment are quite high, you make use of a credit-controller to determine if the customers you are selling to are credit-worthy. To do this, you take the detail of the customer, phone the credit-controller, and give the customer’s detail.
The credit-controller, in turn, does something (you don’t quite know what) on their side, and tells you ‘yes, this customer is credit-worthy’, or ‘no, this customer is not credit worthy.’ Based on that feedback from the controller, you can then make your choice for selling to the customer or not.
I’ve described a people based scenario here. But we could also consider the same transaction in terms of objects in a VB application. You could be replaced with a GUI which allows an end user to enter your details and click a ‘check’ button. The credit-controller could be replaced with an object in the application which uses a database to perform some calculations to determine if the customer is credit worthy. The phone call and response could be replaced with a simple function call (for example: crController.checkCredit(CustomerData)), in which case the response may be a Boolean, e.g. True, for credit-worthy, and False for not credit-worthy.
Notice how nicely the three tier design approach can be applied here. And taking that design approach one step further we can also now start to ask: what if the credit controller object, like its human analogue, was not part of the same VB application? What if it were in fact another program run on the computers of a credit-bureau? All we really have to do then is to realise that the call from the VB application to the credit-controller will not be a simple function call, but may require some more work to accomplish: the call has to travel over the internet, or some other network, but all we would need to do was to define the protocol (the way in which the two parties exchange information) and we could accomplish what the VB application did.
Once you see this possibility of having objects located on distant computer systems that can be used in the same fashion as objects on the local system you will start to realise the power behind object oriented programming. And from here it is a short step to realising the power behind service oriented architectures.