Key Moments

Web Services Middleware: All Grown Up!

Google TalksGoogle Talks
Education8 min read48 min video
Aug 22, 2012|1,716 views|8
Save to Pod

Want to know something specific about what's covered?

We've already dissected every moment. Ask and we will deliver (with timestamps).

TL;DR

Web services have evolved from RPC-over-SOAP to a pure message-passing architecture, essential for enterprise middleware but often overkill for simpler web interactions.

Key Insights

1

SOAP's evolution from an RPC-tied protocol (SOAP 0.9) to a transport-agnostic messaging format (SOAP 1.2) marked a significant shift away from distributed objects.

2

WSDL 1.1's message concept, inspired by email attachments, was a key design point allowing data to be sent in various ways, but WSDL 2.0 simplifies this to an XML element, with XOP and MTOM handling non-XML data.

3

The initial Apache SOAP stack's mistake was modeling web services after synchronous Java class invocations, a disconnect from the asynchronous, message-centric nature of web services.

4

Axis2's core design principle is XML-centric processing, treating all messages as XML (even if fictitious for non-XML inputs) and supporting both SOAP and POX (Plain Old XML) equally by focusing on the payload.

5

WS-Security, WS-ReliableMessaging, and WS-Transactions are essential additions built on top of the core SOAP/WSDL infrastructure, providing enterprise-grade qualities of service that RESTful approaches often lack.

6

The battle between REST and Web Services is framed as a misunderstanding of their purpose: REST for resource-oriented architectures (like the web) vs. Web Services for service-oriented architectures (enterprise integration).

The foundational shift from RPC to messaging in SOAP

The early days of web services were heavily influenced by Remote Procedure Calls (RPC), with Microsoft's initial SOAP project in the mid-90s aiming to integrate XML into communication protocols as an alternative to DCE. XML-RPC emerged as a simple RPC protocol using XML messages. SOAP version 0.9, released in 1999, was also RPC-centric and tightly coupled to HTTP. A pivotal change occurred with SOAP 1.1, which IBM helped drive, making the protocol transport-agnostic. Critically, the SOAP encoding data model, designed for serializing graph data, proved inconsistent with XML messages. This led to the development of SOAP 1.2, which fundamentally reoriented the standard as a purely messaging format. The acronym 'SOAP' was dropped, reflecting the shift from 'Simple Object Access Protocol' to just 'SOAP,' emphasizing its role as a message format rather than a protocol for distributed objects. This transition underscores a long-standing debate in distributed systems, ultimately settling in favor of message-based communication for web services.

WSDL's evolution from protocol description to abstract interface definition

Web Service Description Language (WSDL) also underwent significant evolution. Initially, Microsoft's SDL (Service Description Language) focused on describing how messages were sent over specific protocols like HTTP. IBM proposed NASA's NASSL (Network Application Service Specification Language), which was more akin to WSDL's current abstract/concrete structure but focused on RPC. The merger of these ideas led to WSDL 1.0, which adopted the abstract and binding nature of NASSL while incorporating the message-oriented structure from SDL. WSDL introduced the concept of 'message' as a collection of data parts, similar to an email with a body and attachments. WSDL 1.1, the widely adopted industrial standard, retained this structure. A key design principle behind WSDL was IBM's desire to remain transport-agnostic, allowing abstract service descriptions to be bound to various protocols like JMS or RMI, not just SOAP/HTTP. This was facilitated by the Web Service Invocation Framework (WSIF), an Apache open-source project that provided a unified programming model over different bindings.

The limitations of early web services for advanced qualities of service

While the abstract-concrete design of WSDL aimed for flexibility, its practical implementation faced challenges, particularly concerning advanced qualities of service like security and reliability. IBM's vision of abstract descriptions binding to diverse transports clashed with Microsoft's XML- and HTTP-centric approach. As a result, specifications like WS-Security, WS-ReliableMessaging, and WS-Addressing became tightly coupled to SOAP. This meant that WSIF could function for lightweight service invocation without these extra features, but deeper integration with message-level security or guaranteed delivery required adherence to the SOAP stack. The speaker concludes that achieving true transparency across all protocols with advanced features is not feasible, and embracing WS-* specifications necessitates commitment to the SOAP infrastructure.

WSDL 2.0: Simplifying messages and handling non-XML data

WSDL 2.0 marked another significant shift, fundamentally differing from its predecessor. It eliminated the abstract 'message' concept from WSDL 1.1 and replaced it with an XML element as the abstract description of an entire message. This simplification makes describing common XML exchanges straightforward: an XML element going in, an XML element coming out. For HTTP, this translates to simply placing the XML as the body of a POST request. For SOAP, it means placing the XML element within the SOAP body. A challenge arose with non-XML content (like images) that couldn't be directly embedded within an XML document without inefficient Base64 encoding. W3C standards XOP (XML-Out-of-Band Protocol) and MTOM (Message Transmission Optimization Mechanism) addressed this. XOP leverages the XML Infoset's abstract data model to allow non-XML characters, while MTOM uses MIME attachments when serializing to a transport like HTTP, replacing the embedded binary data with a reference to the MIME part. This integration means attachments are now logically part of the message's data model, simplifying security implementations like digital signatures that can cover both the message and its attachments consistently.

The diverse ecosystem of WS-* specifications

Beyond the core WSDL and SOAP, a rich set of WS-* specifications provides enterprise-grade capabilities on top of the messaging infrastructure. WS-Addressing defines message headers similar to email headers, specifying source, destination, and reply addresses. Security is handled by WS-Security (encrypting and signing XML/SOAP messages using XML Signature and Encryption), WS-Secure Conversation (establishing contexts for more efficient encryption), and WS-Trust (enabling trust through a trusted server, akin to Kerberos). Reliability is addressed by WS-Reliable Messaging, which guarantees message delivery, including ensuring exactly-once and in-order delivery through protocol exchanges. Transactional capabilities are provided by Atomic Transactions (two-phase commit, primarily for within-platform transactions) and Business Activity (a looser, coordination-based transaction model for wide-area interactions). WS-Policy offers a framework for defining business protocols and requirements for message interactions, such as reliability or transaction needs, while BPEL (Business Process Execution Language) enables service composition and workflow creation, allowing new services to be built by orchestrating existing ones. Metadata Exchange allows querying endpoints for their descriptions and policies.

Axis2: An XML-centric, payload-focused processing engine

Apache's web services stack evolved significantly, moving from Apache SOAP to Apache Axis, and then to Axis2. Apache SOAP's initial mistake was modeling web services after synchronous Java class invocations, a disconnect from the asynchronous, message-centric nature of actual web services. Axis addressed some shortcomings, notably adding support for headers and handlers, and improving performance by switching from DOM to SAX. However, Axis still largely assumed a synchronous request-response model and performed data binding (XML to Java types) within its core. Axis2, developed around 2004, fundamentally broke these models. Its core principle became purely XML-centric processing, treating all messages as XML (even creating a fictitious SOAP Infoset for non-XML inputs to ensure handlers operate on a consistent model). The focus shifted to a one-way message processing pipeline, with no inherent concept of data binding within the engine itself. This payload-centric approach naturally supports both SOAP and POX (Plain Old XML) by design, as it simply delivers the payload to the application. Axis2 uses a deferred build model with its Axium (Axis Object Model) to achieve high performance, only building the XML information model as needed. Data binding, while supported, is performed outside the core engine, often generated at development time for maximum efficiency.

The ongoing REST vs. Web Services debate and their distinct roles

The speaker addresses the common 'REST vs. Web Services' battle, arguing it's a misframed debate because they solve different problems. REST is fundamentally a resource-oriented architecture, well-suited for the web's information distribution. Web Services, particularly with the WS-* stack, are designed for service-oriented architectures (SOA), enabling complex enterprise integration with qualities like reliability and security that REST often lacks. While REST can be used for programmatic integration, when advanced features like message-level security or guaranteed delivery are required, the overhead and structure of SOAP become necessary. The speaker notes that within enterprise environments, the need for these qualities of service makes the choice for Web Services clear, whereas pure REST is generally sufficient for simpler web interactions. The preference for one architecture over the other depends on the specific system being built.

Axis2's extensibility and future performance goals

Axis2's architecture is designed for flexibility and performance. It operates on a message context that always represents the message as a SOAP Infoset, regardless of the actual input format (SOAP, POX, JSON, etc.), allowing handlers to work uniformly. Applied policies (security, reliability) are processed before the message is delivered to the application via a message receiver. While direct XML manipulation is preferred for efficiency, Axis2 supports data binding by mapping XML to Java classes outside the core engine, often using pre-generated code. The core engine can be implemented as POJOs, Spring beans, or directly using XML. Axis2 also supports modular extensions, including implementations of WS-* specifications and various language bindings (PHP, JavaScript, Python, Ruby) through projects like WSO2. Looking ahead, Axis2 aims to achieve performance levels comparable to or exceeding native Java RMI, thereby removing performance as a differentiator between using Web Services and other invocation mechanisms. The C implementation is expected to further boost performance capabilities by leveraging the efficiency of the C language for message processing.

Common Questions

SOAP was initially developed at Microsoft in the mid-90s to integrate XML into communication mediums, aiming to evolve beyond protocols like DCE and XML RPC.

Topics

Mentioned in this video

Concepts
Kerberos

A network authentication protocol that WS-Trust is compared to for its trust server mechanism.

Metadata Exchange

A protocol for querying an endpoint to obtain its service description and policies.

Business Process Execution Language

A language for defining business process interactions and composing services to create new services.

WS-Addressing

A specification that defines how to address web services, enabling them to process messages with routing information.

WS-AtomicTransaction

A transactional protocol implementing a two-phase commit, primarily for cross-platform transactions.

WS-Trust

A security specification related to WS-Security that handles the issuance and validation of security tokens.

Cobalt

A programming language or system for which a binding was created to invoke mainframe activities via web services.

SOAP 1.2

A revision of SOAP that purely focuses on messaging format, dropping the RPC and graph encoding aspects.

WS-ReliableMessaging

A protocol that guarantees the reliable, in-order delivery of messages, even in the event of failures.

SOAP 1.1

A version of SOAP designed to be transport-agnostic and support messaging structures.

Service Oriented Architecture

An architectural style that promotes the use of services and their integration, with web services as a common realization.

Ajax

Asynchronous JavaScript and XML, for which XPI provides web service capabilities.

WS-Security

A specification for enhancing communication security with XML-based message integrity and confidentiality.

XML Security

A specification for the digital signature and encryption of XML data.

WS-SecureConversation

A WS-Security extension that establishes security contexts for more efficient communication.

WS-Policy

A framework for asserting the requirements and capabilities of web services, related to business protocols and policies.

Software & Apps
Java RMI

Remote Method Invocation, a Java technology for inter-process communication, used as a performance benchmark for web services.

WSIF

Web Service Invocation Framework, an Apache open-source project that provided a programming model for WSDL.

Streaming API for XML

A Java API for reading XML, used as a basis for Axis2's message processing.

SWIG

Simplified Wrapper and Interface Generator, used for creating bindings for C implementations of Axis2.

CXF

A project formed from Xfire and Celtycs, offering a more flexible data model than Axis2.

E4X

ECMAScript for XML, a language extension that provides a more user-friendly way to work with XML in JavaScript.

J2EE

Java 2 Platform, Enterprise Edition, a platform for enterprise Java applications, compared with web services capabilities.

.NET

Microsoft's framework for building various types of applications, compared with web services capabilities.

Axium

Axis Object Model, the underlying model used in Axis2 for representing messages.

Rampart

A module for Apache Axis2 that implements WS-Security.

Apache SOAP

The first SOAP implementation from Apache, initially based on RPC and Java classes.

JMS

Java Message Service, an IBM messaging technology that WSDL was designed to interoperate with.

Axis

A successor to Apache SOAP, featuring handlers for better protocol support and switching from DOM to SAX.

Spring

A popular Java framework, integration with which is supported by Axis2 for service implementations.

PHP

A server-side scripting language for which Axis2 implementations and bindings are developed, noted for its XML handling.

Xfire

A popular SOAP engine, known for being Javacentric but less effective with other web service protocols.

Axis2

A major rewrite of Axis, focusing on an XML-centric processing architecture, supporting POX and SOAP, and using an XML pipeline model.

More from GoogleTalksArchive

View all 51 summaries

Ask anything from this episode.

Save it, chat with it, and connect it to Claude or ChatGPT. Get cited answers from the actual content — and build your own knowledge base of every podcast and video you care about.

Get Started Free