W3C

XML Protocol Viewpoints List

The purpose of this page is to track the various viewpoints in the XML protocol area. The statements reflected here are attributed to people without benifit of supporting quotations from them. In other words, these are my best guess at stating their issues. If you have corrections or enhancements, I encourage you to contact me (Eric Prud'hommeaux) at eric@w3.org

Table Of Contents

Eric et al. - Proposed Requirements

Before the XTech2000 XML Protocol BOF, I encountered many folks who were interested in XML protocol standardization. I conferred with Henrik Nielson (Microsoft), Don Box (Delovopmentor), Gopol K (Microsoft), Glen Daniels (Allaire), Rob Weltman (Netscape), and someone else from Netscape who's name I don't remember. We discussed a multilayer architecture where the core consisted of a serialization protocol and an extensibility mechanism. This example shows some higher-level protocols stacked on the core serialization and extensibility.
start
This was used as a strawman to start the BOF discussion.

Extensibility

Each namespace may define how the XML-protocol layer should handle the request. The exact mechanism was not aggreed upon, but I propose that all that is needed is a directive that told the processor what to do with unknown namespaces.

XTech2000 XML Protocol BOF Dissents

Here are a few of the dissenting or enhancing opinions that came from the XTech2000 XML Protocol BOF:

Dave Winer - XML-RPC as an interim reccomendation

Dave Winer suggested that W3C reccomend XML-RPC as an interim standard while we sort out what we hope to produce here. XML-RPC has a large implementation base. A W3C reccomendation would allow the industry to implement a single protocol. A future XML-protocol reccomendation (the product we are all working on) would then have a clear upgrade path. This would be easier on developers than upgrading from a variety of protocols.

Eric Prud'hommeaux - Transfer Adapters

My bent on this includes an extra adapter to interface with different tranfer protocols. A given transfer/transport protocol (HTTP, SMTP, static message repository) has a transfer adapter.

start

As a proof of concept, I've been coding up a version running in CGI.

start

The problem with this model it that it implies:

Perhaps the transfer adapter can make good use of the transfer adapter where data may be pulled from the inner protocol layer. As an example:

HTTPExtensions example

POST http://asdf/myClass HTTP/1.1
Mandatory: (http://soap.org/schemas/method/ 23) <--- @@@ don't remember httpext syntax
23-method: add

<soap:Envelope
   xmlns:soap="urn:...SOAP"
   xmlns:adder="urn:...ADD">
   <soap:Header>???</soap:Header>
   <soap:Body>
      <adder:AddRequest>
         <adder:Addand>2</adder:Addand>
         <adder:Addand>2</adder:Addand>
      <adder:AddRequest>
   </soap:Body>
<soap:Envelope>

When this message arrives at the server, the transfer adapter delivers an envelope enriched by the sourceIP/port, destIP/port, and some other stuff implicit in the HTTP connection. Perhaps the best way to do this is to assign a namespace to the HTTP extensions and present all the headers as HTTPns:Header="Value" attributes of the soap:Body.

If this needs to be serialized into a contextless form, eg. to be piped to stdout, the phat transfer adapter must store all that information in the Header.

Glen Daniels - Messaging Over RPC

Glen Daniels and Noah Mendelson were concearned about making the assumption that the protocol layer is nested above (inside of) the serialization. Historically, it has been possible to implement RPC as messages and messages in RPC. In an effort to determine which of these models is closer to the true form we can examine the above example with the RPC on the outside:

We have not adequately discussed the options here to be sure this is not a superior architecture.

Ken MacLeod - Keeping it Skinny

Ken and several others expressed concearns about having an option to serialize in a simple, lean format. It is therefore important to maintain an architecture where much of the schema and context information may be removed for communications between parties with a structural context. While this could mean that we boil it down to look keep just the parameters and the values, I beleive it is more relevent to XML if we keep enough context for a stranger to decide if it can process the terse data. Otherwise, the transaction would probably just be run over CGI parameter encoding.

For example, SOAP may be compressed to:

POST http://asdf/myClass HTTP/1.1

   <soap:Body
      xmlns:soap="urn:...SOAP"
      xmlns:adder="urn:...ADD">
      <adder:AddRequest>
         <adder:Addand>2</adder:Addand>
         <adder:Addand>2</adder:Addand>
      <adder:AddRequest>
   </soap:Body>

without keeping a foreign observer from knowing whether it may process the data.

Eric Prud'hommeaux - Required Namespaces

Eric Prud'hommeaux proposes that all that is needed for extensibility is a directive that told the processor what to do with unknown namespaces. At the least, this would specify required or optional. A transparent mode would allow a processor to dive into data that was wrapped in an envelope that the processor didn't need to understand to process the data. An example would be an optional signature envelope. The data inside may not be critical, or it may have been transmitted over a secure line. Foreign directives could be allowed in the protocol to extend the extensibility mechanism. Would that lead to more fragmentation, or just give people to fix unexpected requirements in the protocol?

ext:requiredkill the root node
ext:optionalignore the element
ext:transparentdive into the element
my:thangapplication should treat as required unless it is a known enum

Other Issues

Here are some other random issues that I haven't organized.

Henry Thompson - contextual serialization

Henry has a strong interest in formalizing the interaction between the protocol and the transaction history. The idea is to use xinclude to relate any message to the message immediately before it. If the protocol is initiated by a message:

start

The following message relates itself to the previous message with xinclude:

start

The resulting document builds a comprehensive document
start
without burdening the transport with redundant data.


Valid HTML 4.0! Eric Prud'hommeaux,
@(#) $Id: 15-XML-protocol-Viewpoints.html,v 1.3 2000/03/20 14:31:23 eric Exp $