XMLProtocolComparison
XML Protocol Comparisons
The purpose of this document is to compare and contrast a variety of XML protocols. It will probably take a while to flesh out the form and content. Viewers are invited to comment and contribute. Contact me (Eric Prud'hommeaux) at [email protected]
| XML syntax | ||||||||
|---|---|---|---|---|---|---|---|---|
| Protocol | Organization | Architects | Status | ns | schema | DTD | Facets | Example |
| XML-RPC | Userland | Dave Winer | deployed | 0 | 0 | 1? |
| [in a POST parameter] <methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall> |
| SOAP | Microsoft |
D. Box (DevelopMentor?) G. Kakivaya (Microsoft Corporation) A. Layman (Microsoft Corporation) S. Thatte (Microsoft Corporation) D. Winer (Userland Software) | coded | 1 | 1 | 0 | POST /StockQuote? HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml Content-Length: nnnn SOAPMethodName?: Some-Namespace-URI#GetLastTradePrice? <SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1"> <SOAP:Body> <m:GetLastTradePrice? xmlns:m="Some-Namespace-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice?> </SOAP:Body> </SOAP:Envelope> | |
| ICE | GCA |
Neil Webber, Vignette Corporation Conleth O'Connell, Vignette Corporation Bruce Hunt, Adobe Systems, Inc. Rick Levine, Sun Microsystems, Inc. Laird Popkin, Sothebys.com | ? | 0 | 0 | 1 | <?xml version="1.0"?>
<!DOCTYPE ice-payload
SYSTEM "http://www.ice-ag.org/ICE.dtd"
>
<ice-payload
payload-id="1998-07-05T02:02:[email protected]"
timestamp="02:02:23,449"
ice.version="1.0">
<ice-header>
<ice-sender
sender-id="4af37b30-2c35-11d2-be4a-204c4f4f5020"
name="XYZ Corporation"
role="subscriber"/>
<ice-user-agent>Acme Ray Gun ICE System, V0.9beta</ice-user-agent>
</ice-header>
<ice-request
request-id="1998-07-05T02:02:[email protected]">
<ice-nop/>
</ice-request>
</ice-payload> | |
| WDDX | Allaire | Simeon Simeonov | coded? | 0 | 0 | 1 | <?xml version= | |
| BizTalk | Microsoft | Andrew Layman | ? | 1 | 1 | 0 | <PurchaseOrder? xmlns:abcde="http://electrocommerce.org/stuff.xml"> <shipTo> <abcde:Address> <abcde:name>Alice Smith</abcde:name> <abcde:street>123 Maple Street</abcde:street> </abcde:Address> </shipTo> <orderDate>1999-05-20</orderDate> <shipDate>1999-05-25</shipDate> <comments>Get these things to me in a hurry, my lawn is going wild!</comments> <Items> <Item> <productName>Lawnmower, model BUZZ-1</productName> <quantity>1</quantity> <price>148.95</price> </Item> <Item> <productName>Baby Monitor, model SNOOZE-2</productName> <quantity>1</quantity> <price>39.98</price> </Item> </Items> </PurchaseOrder?> | |
| IOTP | Commerce One | David Burdett | ? | 0 | 0 | 1 | <BrandList? ID= | |
| Transaction Internet Protocol (still more) | Microsoft Tandem |
J. Lyon (Microsoft) K. Evans (Tandem) J. Klein (Tandem) | ||||||
| WfXML | Workflow Management Coalition | 0 | 0 | 1 | ? |
| <WfMessage? Version= 1.0> <WfMessageHeader?> <Request><ResponseRequired?>Yes</ResponseRequired?></Request> <Key>http://www.XYZcompany.com/wfprocess</Key> <Operation>CreateProcessInstance?</Operation> </WfMessageHeader?> <WfMessageBody?> <CreateProcessInstance?.Request> <Key>http://www.XYZcompany.com/wfprocess</Key> <ObserverKey?>http://www.mycompany.com/mywork</ObserverKey?> <ContextData?> <Vehicle> <VehicleType?>Car</VehicleType?> <Specification> <Manufacturer>Mercedes</Manufacturer> <Model>450SL</Model> </Specification> </Vehicle> <Furniture>chair</Furniture> </ContextData?> <StartImmediately?>Yes</StartImmediately?> </CreateProcessInstance?.Request> </WfMessageBody?> </WfMessage?> | |
| ebXML | UN/CEFACT oasis | |||||||
| XMI | Unisys Corporation Fujitsu IBM DSTC Recerca Informatica Oracle Daimler-Benz Platinum Technology | ? | 1 | 0 | 1 | [UML model in an XMI document] <XMI xmi.version="1.1" xmlns:UML="org.omg/standards/UML">
<XMI.header>
<XMI.metamodel name="UML" version="1.3" href="UML.xml"/>
<XMI.model name="example" version="1" href="example.xml"/>
</XMI.header>
<XMI.content>
<UML:Class name="C1">
<UML:Classifier.feature>
<UML:Attribute name="a1" visibility="private"/>
</UML:Classifier.feature>
</UML:Class>
</XMI.content>
</XMI> | ||
| XDR | XDR is Sun's RPC data format. It may have some interesting lessons for us. | |||||||
Facets
Below is the list of facets I have defined for characterizing these protocols.
- serialization
- format for storing primitive data types (int, char, string), structures, and matrices
- protocol
- definition of requests and responses
- extensibility
- a mechanism allowing features and functionality to be added beyond what the architects can predict. Some protocols mention extensibility as a requirement without defining the mechanism. Generally, protocols that use namespaces and specify what to do with unknown namespaces get extensibility for free.
- interface discovery
- machine-readable markup allowing a naive application to access the typed data. Supporting schemas in turn supports interface discovery.
- transactions (ACIDity?)
- atomicity and state clarity that allows an action to be partially completed and then undone
- remote procedure
- I'm still a little fuzzy on what I mean here. It may mean the ability to pass generic procedures and have the other side have some mechanism for giving a best-guess response, or it may mean that there is a way to have the other side do something for you, ie. protocol.
- business process
- modeling of business workflow conventions