In the recent era of web technologies, when pretty much every piece of software and hardware is in some way tied to an online component, it is hard to imagine life without web interactions. Besides web applications, that are built to be accessible from anywhere independently from the platform, a multitude of desktop applications and mobile clients interact with web-based content via web services, that often do the heavy lifting when it comes to processing specific data.
So, following the definition of a web service, it is basically a web API that allows developers (and general users for that matter) to access specific functionality without being tied to a specific client - therefore, if the developer wants - he/she can create his own client for any platform that will use the endpoints provided by the service.
This is a great way to make a software product as flexible as possible - if it is dependent on a web service, then any updates can be pushed directly to the web service core, and any client that is built around existing endpoints, will automatically be receiving updated data (as long as no endpoints are modified to expose a different data type or object structure) - since clients don't perform specific actions (that are delegated to a web service) but rather process the request and response data.
Of course, there is a specific limit between actions that should be delegated to a web service and those that should be executed locally to avoid additional dependencies. That's it - the developer should know when to delegate an action to a web service. For example, if the developer knows that the core of the application will be often modified and it is impossible to update the multitude of distributed copies, then it might make sense to build a web service that will handle interactions and will simply feed data to requesting clients - as long as this is acceptable under the application design requirements. At the same time, it is probably a bad idea to delegate local security control to a web service - it is better to handle these elements directly in the application to avoid the risk of the service being compromised or unavailable (although it depends on specific requirements - depending on the number of users and the platform they use).
I am curious - how many developers are only consuming existing web services and how many of them are building them (thus the poll). If you have any comments, feel free to post them and explain your choice.