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