My understanding of a webservice and service layer is as follows -
Service Layer: An abstraction layer which exposes a set of common operations which can be used by multiple consumers. For instance , I have a database containing customer data. Multiple applications may want to add / update / delete data in this data store. Each application will have logic to add / update / delete data in data store - hence duplication of logic. Instead, I would provide a service layer which exposes methods to add / update / delete customer information. So the logic isn't duplicated any longer and the applications have to just use my service layer in order to perform these activities. The specific domain where the service layer operates here is on customer information.
Webservices: Any machine to machine data transfer over the web can be performed using webservices. The implementation of webservice can be SOAP, REST, vanilla RMI, etc... and the data can be serialized as XML, JSON, binary, etc... Assuming I expose a SOAP based webservice for the use case listed in my example above, I could provide a SOAP or REST based interface to add / delete / update customer information. The domain here is customer as well.
Based on my understanding, I feel that webservices are a subset of the service layer. The implementation for the example use case can be provided in the form a java .jar file or DLL which provides relevant APIs to perform the activity. All of the required applications will have to download the appropriate .jar or DLL to perform actions on customer data. Whereas webservice is specifically for machine-machine communication over web.
Is my understanding correct?