Web service

A Web service is a method of communications between two electronic devices over the World Wide Web. It is a software function provided at a network address over the web with the service always on as in the concept of utility computing.

The W3C defines a Web service as:

The W3C also states:

Web API
A web API is a development in web services where emphasis has been moving to simpler representational state transfer (REST) based communications. RESTful APIs do not require XML-based web service protocols (SOAP and WSDL) to support their interfaces.

Automated design methods
Automated tools can aid in the creation of a web service. For services using WSDL, it is possible to either automatically generate WSDL for existing classes (a bottom-up model) or to generate a class skeleton given existing WSDL (a top-down model).
 * A developer using a bottom-up model writes implementing classes first (in some programming language), and then uses a WSDL generating tool to expose methods from these classes as a web service. This is simpler to develop but may be harder to maintain if the original classes are subject to frequent change.
 * A developer using a top-down model writes the WSDL document first and then uses a code generating tool to produce the class skeleton, to be completed as necessary. This model is generally considered more difficult but can produce cleaner designs and is generally more resistant to change. As long as the message formats between sender and receiver do not change, changes in the sender and receiver themselves do not affect the web service. The technique is also referred to as contract first since the WSDL (or contract between sender and receiver) is the starting point.

Web services that use markup languages
There are a number of web services that use markup languages:
 * JSON-RPC
 * JSON-WSP
 * Web template
 * Web Services Description Language (WSDL) from the W3C
 * XML Interface for Network Services (XINS) provides a POX-style Web service specification format
 * Web Services Conversation Language (WSCL)
 * Web Services Flow Language (WSFL) (superseded by BPEL)
 * WS-MetadataExchange
 * Representational state transfer (REST) versus remote procedure call (RPC)
 * XML-RPC - XML - Remote Procedure Call

Criticisms
Critics of non-RESTful web services often complain that they are too complex and based upon large software vendors or integrators, rather than typical open source implementations.

There are also concerns about performance due to web services' use of XML as a message format and SOAP/HTTP in enveloping and transporting.