Introduction to Web Services
The World Wide Web is increasingly being used for communication between applications. The programmatic interfaces made available over the web for application-to-application communication are often referred to as web services. There are many types of applications that can be considered web services but interoperability between applications is enhanced most by the use of familiar technologies such as XML and HTTP. These technologies allow applications using differing languages and platforms to interface in a familiar way.
The web services client for the Wolfram Language allows users to call operations that are based remotely on other platforms or languages that are not immediately accessible to the Wolfram Language. This opens up a whole new realm of functionality and data to users of the Wolfram Language.
There are several key technologies that enable the Wolfram Language to interact with web services. Following is an explanation of each technology.
XML and HTTP
XML and HTTP are the foundation for calling web services with Web Services Link. A user interacts with the web service interfaces by sending XML messages over HTTP. XML and HTTP are useful for creating and sending messages because they are flexible and widely supported on many platforms and languages. This interoperability allows applications to communicate using differing languages and platforms using these common technologies. Web Services Link supports XML 1.0 and HTTP 1.1. The XML functionality is supplied by the XML capabilities built into the Wolfram Language. The HTTP functionality is supplied by the Apache Commons HTTP client. The user may find knowledge of XML and HTTP to be helpful; however, it is not required. For more information about HTTP, please see http://www.w3.org/Protocols. For more information about XML, please see http://www.w3.org/XML.
Because XML and HTTP are so flexible, a web service message may be represented and communicated in many different ways. Therefore, it is important to have standards that are common among all platforms and languages that use a web service. Simple Object Access Protocol (SOAP) is one standard that formally sets the conventions governing the format and processing rules of XML messages and how they are used with HTTP. Web Services Link supports SOAP 1.1. Wolfram Language users are not required to know any specifics of SOAP. For more information, please see http://www.w3.org/TR/SOAP.
Another useful technology that is associated with web services is Web Service Description Language (WSDL). WSDL formally sets the format for describing a web service using XML. By providing a Uniform Resource Identifier (URI) to a WSDL, applications can discover what operations a particular web service provides and how an operation's messages look. With this information, Web Services Link can generate SOAP messages using input from Wolfram Language functions. A web services operation may be used without a WSDL; however, the WSDL is key for promoting a web service. Web Services Link supports WSDL 1.1. Wolfram Language users are not required to know any specifics of WSDL. For more information, please see http://www.w3.org/TR/wsdl.
Data types are a very important component of web services because different data types may be used to compose SOAP messages. WSDL uses XML Schema to describe data types used in a web service. Web Services Link uses the XML Schema package to dynamically bind Wolfram Language expressions to XML. This package validates data against a schema to make sure it correctly matches the definition for a data type. Web Services Link supports XML Schema 1.0. Wolfram Language users are not required to know any specifics of XML Schema. For more information, please see http://www.w3.org/XML/Schema.
WS-I Basic Profiles
While SOAP and WSDL are great starts for implementing web services, there are compatibility issues that result from these specifications. WS-I Basic Profiles address all compatibility issues by specifying implementation guidelines on how core web services specifications should be used together to develop interoperable web services. This specification gives guidelines for WSDL, SOAP, and Universal Description, Discovery, and Integration (UDDI) implementations. The focus of this specification is easier integration among varying implementations of web services and their clients. The client uses these guidelines for the implementation. A web service that follows these guidelines is more likely to work correctly with the client. Web Services Link supports WS-I Profiles 1.1. Wolfram Language users are not required to know any specifics of Basic Profiles. For more information, please see http://www.ws-i.org.