More and more the World Wide Web is being used for application-to-application communication. The programmatic interfaces made available over the web 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. More information on web services can be found at http://www.w3.org/2002/ws/.
The web services client for Mathematica allows users to call operations that are based on other platforms or languages that are not immediately accessible to Mathematica. This opens up a whole new realm to users of Mathematica.
The World Wide Web Consortium (W3C) has introduced two Application Programming Interfaces (API) that are highly useful for application-to-application communication. These API's are Simple Object Access Protocol (SOAP) and Web Service Definition Language (WSDL). These API's are the foundation for Mathematica's web services client.
XML and HTTP
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 promotes interoperability between applications and allows applications using differing languages and platforms to interface. The user may find knowledge of XML to be helpful, however, it is not required.
SOAP formally sets the conventions governing the format and processing rules of an XML message. SOAP is important because it standardizes the XML message used by the applications to communicate. Without SOAP or a similar protocol, applications would not know how to process XML messages. Mathematica users are not required to know any specifics of SOAP, but for more information please see http://www.w3.org/TR/SOAP/.
WSDL formally sets the format for describing a web service. 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 a client can bind to the operation and use it. A web services operation may be used without a WSDL, however, the WSDL is key for promoting a web service. Mathematica users are not required to know any specifics of WSDL, but for more information please see http://www.w3.org/TR/wsdl.
XML Schema is used to describe data types used in a web service. Using schema, a client can dynamically generate data types used in a web service. The client can validate data against a schema to make sure it correctly matches the definition for a data type. For more information please see http://www.w3.org/XML/Schema. The user is not required to know any specifics of XML Schema. However, it could be useful in determining whether a web service is supported by the Web Services Package.
WS-I Profiles specify 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. For more information please see http://www.ws-i.org/.
Rather than implement a whole new engine, Apache Axis is used to implement part of the Web Services Package technology. It is a Java-based SOAP engine with extensive support for WSDL. This engine is used by the Web Services Package to invoke web service operations. Axis follows the SOAP 1.1 and WSDL 1.1 specifications. For more details on Axis see http://xml.apache.org/axis.
Despite being implemented in Java, the Web Services Package is designed to be Java independent. This means the user will not be required to provide Java parameters to functions, and Java objects will not be returned from functions. Therefore the user is not required to know Java to use this package.