# From Service Composition to Mashup Editor: A Multiperspective Taxonomy
## 4 Taxonomy for Services Composition
### System Perspective
#### 4.1.2 Structural Approach (Software Engineering Approach)  
This approach is more about providing formalisms and tools to describe service interfaces (inputs/outputs) and behavior in order to compose services and create new ones. For instance, WSDL provides XML-based syntax for describing services and BPEL provides a framework for orchestrating services. By contrast, formal methods (Automata, Petri nets) provide tools to improve the reliability of the process of developing an implementation by ensuring the conformity of the formal model on which the implementation is based to a given set of properties. We present hereafter a number of standards in the area of Web services that allow for implementing the SOA concepts [26]. This includes WSDL, SOAP [27], HTTP, XML, and UDDI. Web Services Description Language (WSDL)  
WSDL [28] is an XML-based language that is used to describe the Web service. In other words, it describes: what a Web service can do, where it is, how to access it, and in which format. The WSDL provides features for service naming and operations naming (input parameters and responses organized in the form of messages). It also contains detailed information about the used communication protocol (often HTTP), information on the technique of data encoding, and the network address in the form of a URL. It does not contain semantic information about exposed operations, and there is no notion of order in the invocation process. The client can use SOAP to actually call one of the operations listed in the WSDL file. The Universal Description Discovery and Integration (UDDI)  
The service directory (also called repository or registry) is the place where the services are registered. The SOA concepts can be instantiated by using the standard UDDI ([[https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-spec](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-spec)]([https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-spec](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-spec)), accessed on 26 August 2020) as a service directory. The UDDI is structured into three pages (components): white (information by name), yellow (information by category), and green (service provided by WSDL). It is designed to be interrogated by SOAP messages and to provide access to service description documents (WSDL). Simple Object Access Protocol (SOAP)  
SOAP [29] is a messaging protocol for exchanging structured data between applications over a variety of network protocols. The structured data are encapsulated in XML-based messages according to the SOAP exchange standard. SOAP is itself represented in XML with a header part and a part that corresponds to the application payload (called _body_ or simply _payload_). The SOAP header part is optional and generally used to transfer data authentication or session management. These are aspects that are supported by the underlying protocol. The body part is in charge of encoding the names of operations and their parameters and returned results. The SOAP is typically deployed over HTTP but can also operate over SMTP or JMS. The SOAP is also defined by an envelope that allows for describing the specification of the namespace. One of the main advantages of SOAP is that it has built-in error handling, making it more robust and less error-prone. SOAP also provides a way to ensure the security of the message being exchanged through features such as WS-Security. Additionally, SOAP is language-independent, meaning that it can be used in any programming language, platform-independent, and can be used on any operating system. However, SOAP is more complex and verbose than REST, which can make it less efficient and more difficult to implement. SOAP also requires more bandwidth and resources than REST and uses XML as its message format, which is less lightweight than JSON. Representational State Transfer (REST)  
REST [30] is simple and easy to use, making it easier to implement and less error-prone.