Web Services Technology Overview

This chapter identifies the set of design guidelines that should affect information system design choices for implementing Web Services. These guidelines address only the architectural aspects of systems, independent of any individual system’s business requirements. This topic establishes descriptive attributes for the architectural support of Web Services implementations to assure common characterization of what constitutes a Web Service.

Web Services Versioning

By design, the implementation of services can change with little impact to the service consumers (downtime, rework, compatibility, etc.). Changing the interfaces—the way one invokes those services—requires changes to the service consumers as well. CMS recommends that architects and designers focus on the impact of each change to service interfaces. Changing an interface cannot be done unilaterally. Instead, adherence to a governance process will facilitate negotiation to resolve differences between Web Service providers and consumers.

Web Services versioning provides a mechanism to allow service consumers to continue using previous versions of a web service while working on their transition plans.

Version Implementation

CMS employs the following principal methods of versioning Web Services:

  • Endpoint (URL) versioning
  • Message versioning (either using JSON or XML versioning)
  • XSD versioning

In URL versioning, the major version number of a web service endpoint is appended to the URL. In Message versioning, the message header contains a version number field. This can be a version in the XML or JSON payload or it can be a XML XSD version. In XSD versioning, the XSD for the WSDL contains the version as part of the schema definition.

URL versioning is generally the simplest to explain and use.

Versioning Scheme

The SemVer 2.0.0 (Semantic Versioning) specification provides a mechanism for naming versions of products following de facto industry standards. The scheme is summarized as follows:

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

For REST services, the version is reflected in the URI or as a field in the payload. XML payloads may use XML XSD versioning. Most often, the URI would reflect the version.

For SOAP services, the URI or WSDL reflect the version.

Dependencies on Standards

SOAP Web Service Standards

Successfully implementing solutions using this chapter depends on having integrators address multiple standards, appropriate elements, and other CMS TRA chapters.

The extensible nature of Web Services’ architecture has led to exponential growth in Web Services standards and specifications as standards bodies and companies attempt to leverage this technology. New specifications allow new functionality for Web Services, and these specifications are subsequently submitted to standardization bodies, such as the W3C or OASIS. Standardization is necessary to ensure that different implementations of Web Services engines engage one another seamlessly and thus fulfill the interoperability objective of Web Services.

Although this recent activity has created numerous standards and specifications that address many aspects of Web Services, only a narrow set are relevant to this supplement, as shown in SOAP-Specific Web Concepts and Definitions. For a more detailed discussion, please refer to the following sources:

SOAP Web Service Standards by Category

Category

Standards

Notes

Security

  • WS-Security
  • WS-Policy

Focus on Security Assertion Markup Language (SAML) and the related federated security model:

Processes

  • WS-Business Process Execution Language (BPEL)

Focus on support of distributed processes, where the participant initiating the process maintains a controlling position throughout the lifetime of the process. Future support should improve monitoring a process’s progress based on rules.

Data Formats

  • WS-SOAP
  • XML

SOAP payloads are XML documents.

REST Web Service Standards

For REST, the standards are different and there are fewer of them. REST relies on the infrastructure of the World Wide Web and the HTTP protocol for standards. REST relies on media types to identify payload (data) standards. Each Internet Assigned Numbers Authority (IANA) registered media type has a template that defines its use and format. REST Web Service Standards presents the REST Web Service Standards for Security, Transactions, and Data Format.

REST Web Service Standards

Category

Standards

Notes

Security

  • XML Digital Signature
  • HTTP/S using Transport Layer Security

There is no current standard for message-level encryption for JSON messages. XML has greater choices for this.

Transactions

  • HTTP

HTTP does not support transactions beyond the idempotency rules for HTTP request methods (GET, PUT, POST, HEAD, DELETE, etc.).

Data Format

  • XML
  • JSON
  • Other media

REST is most often used with JSON and sometimes with XML.

HTTP/S does include compression options.

Other media are identified using media types in the HTTP request and response headers.