A web service is a computer interface protocol of the family of web technologies allowing the communication and the exchange of data between heterogeneous applications and systems in distributed environments. It is thus a set of functionalities exposed on the Internet or on an intranet, by and for applications or machines, without human intervention, synchronously or asynchronously. The communication protocol is defined within the framework of the SOAP standard in the signature of the exposed service (WSDL). Currently, the transport protocol is essentially HTTP (S).
The concept was specified and implemented as part of Web Services Activity at W3C, particularly with the SOAP protocol. Associated with electronic data interchange (EDI), the ebXML consortium used it to automate inter-company exchanges. However, the concept is enriched with the deepening of the notions of resource and state, within the framework of the REST model, and the deepening of the notion of service, with the SOA model.
In its most general presentation, a web service is concretized by an agent, realized according to a precise computer technology by a service provider. An applicant, using a query agent, uses this service. The provider and the requestor share the same semantics of the web service, while the agent and the request agent share the same description of the service to coordinate the messages that they exchange.
There are several technologies behind the term web services:
- Web services of type representational state transfer (REST) fully expose these features as a set of identifiable and accessible resources by the syntax and semantics of the HTTP protocol. REST-based web services are therefore based on the architecture of the web and its basic standards: HTTP and URI;
- WS-* web services expose these same features in the form of remotely executable services. Their specifications rely on the SOAP and WSDL standards to transform the integration issues inherited from the middleware world into an interoperability goal.
WS-* standards are often criticized as being at risk of generating a race for technological performance. However, their robustness in the field of services between professionals is recognized, and they remain widely used.
Web services of type representational state transfer (REST)
The World Wide Web is an application designed according to the REST architecture. The architecture of the Web replaces the client and server application concepts with the concepts agents and resources. Agents interact with resources to create, access, modify, or delete a resource.
Today, there is increasing talk about the interaction between resources agents; ie the relationship between resources: a resource becomes the agent of another resource, but remains itself a resource accessible by other agents. This is exactly the architecture described by the example of application implementation of the mashups.
Web services therefore deal with resource agents where the classic mode of operation of the Web speaks of user agents. But the two concepts are based on the same architecture: REST.
There is thus no fundamental difference between the interaction of a browser with a resource and that of a Web Service with a resource. The main difference is in the format of the data representation: HTML for browsers or user agents, XML or JSON for web services or resource agents.
We can therefore define a web service as the software implementation of a resource, identified by a URL, and accessible using Internet protocols. The agents take care of the content, of the representation of their state, not tof he type of content. So Web Services is the way to manipulate information, not just a service provider.
- RESTful Web Services
- Agents Resources
- Robots Software
WS Web Services
The WS-* Web Services is the software implementation of the WS-* specifications and is based on a set of basic protocols and standards used for data exchange between applications in heterogeneous environments:
- SOAP (Simple Object Access Protocol) for message exchange;
- Web Service Description Language (WSDL) for describing: web services, their operations, messages used, types of data used, protocols used and their Internet location (URI / URL);
- UDDI directories that can reference web services.
These WS-* Web Services are also defined according to the type of SOA architecture.
Software written in various programming languages and platforms can use WS-* Web Services to exchange data across computer networks such as the Internet. OASIS and the World Wide Web Consortium (W3C) are the coordinating committees responsible for the architecture and standardization of Web services. To improve interoperability between Web service implementations, the WS-I organization has developed a series of profiles to evolve future standards involved.
Security and the WSDL
Based on the HTTP protocol, Web services can run across multiple firewalls without requiring changes to the filtering rules.
This facility to implement WS web services has a setback: it is more complex to implement security rules specific to WS web services than on a typical web server.
- Web services provide interoperability between various software platforms.
- Web services use open standards and protocols.
- Protocols and data formats are in text format as much as possible, thus facilitating understanding of the overall functioning of the exchanges.
- Development tools, based on these standards, allow automatic creation of programs using existing Web services.
- Web service standards in some areas are currently new.
- Web services suffer from low performance compared to other approaches to distributed computing such as RMI, CORBA, or DCOM.
Web services implement business logic made consumable (it is consumed a web service ⇒ is is used) using standards (mostly TCP/IP, URI/URN/URL, MIME, HTTP/SMTP/…, SOAP, SSL/TLS, … for transport, then XML for content), which allows any technology using these standards to be able to exploit it, thus facilitating the interoperability of the applications.
The creation of Web services is justified by the service-oriented architecture, ie the desire to make accessible a service that implements hidden business logic to users.
In the context of contracts of data exchange in business-to-business (business ↔ enterprise) and business to consumer (entreprise ↔ client/user), another interest for which Web services are used is the fact that they are based on the HTTP protocol (which uses port 80 by default). To understand this, keep in mind that many companies have protected themselves by using firewalls that filter and block a lot of Internet traffic for security reasons. In this environment, many (almost all) ports are closed to incoming and outgoing traffic and the administrators of these firewalls are unwilling to open them. Port 80, however, is always open because it is used by the HTTP protocol used by web browsers. With this advantage, web services represent a kind of tunneling.
Web services can be deployed by using application server software:
- JAX-WS 2.x which is the Java EE reference implementation is open source and integrated in GlassFish and usable in other environments. Its WSIT extension (also called Project Tango) provides an implementation of WS-ReliableMessaging, WS-SecureConversation, WS-Trust
- Axis and the Jakarta Tomcat server (two open source Apache Software Foundation projects)
- XFire from CodeHaus offers a Java framework with a different approach to Axis
- CXF merge between XFire (CodeHaus) and Celtix (Objectweb)
- ColdFusion MX from Macromedia
- Microsoft IIS HTTP Servers (with the .NET framework)
- WebLogic from Oracle Corporation
- IBM’s WebSphere Application Server (based on the Apache server and the J2EE platform)
- Oracle Application Server from Oracle Corporation
- Novell ZenWorks
- NuSOAP: PHP Web Services Developer Library
- GSOAP: C ++ Web Services Developer Library
- JBoss Application Server from JBoss. Component of the JBoss Enterprise Middleware System (JEMS), which is also part of the Hibernate relational persistence framework.
- Compuware‘s Uniface implementing SOAP web services using Tomcat
- IBM Lotus Domino
- Nirva Application Platform of Nirva Systems which proposes its fusion platform of an ESB and an application server handling different languages
Translated from Wikipedia