[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Generic vs Specific WSDL
- From: Stefan Tilkov <info@tilkov.com>
- To: "xml-dev@lists.xml.org Developers" <xml-dev@lists.xml.org>
- Date: Thu, 1 Mar 2007 17:33:46 +0100
Here is another reference that may be useful:
http://www.onjava.com/pub/a/onjava/2006/02/15/jython-soap-interface-
to-rest.html
The author (Jason Briggs) describes how to hide REST resources behind
a generic SOAP "bridge"; I think this is an intriguing idea.
Stefan
--
Stefan Tilkov, http://www.innoq.com/blog/st/
On Mar 1, 2007, at 5:28 PM, Paul Kiel wrote:
> Hi Dave,
> I've been through this discussion as well and in the end, there was a
> decision to use the payload schema. In essence, the generic wsdl just
> renders the soap message as a less useful envelope that is
> discarded (hence
> the REST comment from Stefan). Now most people end up discarding
> it anyway,
> but somewhere you need to model the expected request-responses. If
> it isn't
> in your wsdl, then you need to accommodate this in the
> application. What is
> the application expected to respond with? What should it do if it
> fails?
> How will it know what to validate the payload with? These
> questions need to
> be answered somewhere. Why not put them in the wsdl so that it is
> part of
> the explicit agreement between trading partners. If you push this
> into the
> application, you run the risk of people making assumptions that
> later become
> problems.
>
> At least those were some of the arguments we experienced.
> FWIW.
> Cheers,
> Paul
>
>
>
>
>
> W. Paul Kiel
> XmlHelpline.com
> "eXtensible Solutions"
> Specializing in Xml, Xslt, web services, and data integration.
>
> -----Original Message-----
> From: Stefan Tilkov [mailto:info@tilkov.com]
> Sent: Tuesday, February 27, 2007 3:48 PM
> To: xml-dev@lists.xml.org Developers
> Subject: Re: [xml-dev] Generic vs Specific WSDL
>
> Your architecture is similar to WS-Transfer: It seems to me you're
> implementing REST on top of the WSDL/SOAP architecture which sits
> on top of
> (and ignores most of) the HTTP/REST architecture. Which begs the
> question:
> why aren't you using plain HTTP in the first place?
>
> Stefan
> --
> Stefan Tilkov, http://www.innoq.com/blog/st/
>
>
>
> On Feb 27, 2007, at 9:28 PM, David Carver wrote:
>
>> A question has come up in our organization about implementing SOAP
>> Web
>> Services using a generic WSDL (i.e. common endpoint for all services
>> with a generic payload), or Specific Services with a
>> specific payload schema defined. The question comes down to can
>> these two type of services inter operate with each other. I know
>> you can make the SOAP message that surrounds the payload compatible
>> between the two. So the question comes down to which is
>> fundamentally better to implement, or is this really an architecture
>> preference and design?
>>
>> Included below is a copy of the template WSDL in question that
>> implements the generic implementation. Advantages, disadvantages,
>> security problems to this approach??? What additional benefits if
>> any
>> does a specific implementation provide, disadvantages.:
>>
>> <?xml version="1.0"?>
>> <definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:tns="http://www.starstandards.org/webservices/
>> 2005/10/transport/bindings"
>> xmlns:starws="http://www.starstandards.org/webservices/
>> 2005/10/transport"
>> targetNamespace="http://www.starstandards.org/
>> webservices/2005/10/transport/bindings"
>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>> xmlns="http://schemas.xmlsoap.org/wsdl/">
>>
>> <!-- Types -->
>>
>> <types>
>> <xsd:schema targetNamespace="http://www.starstandards.org/
>> webservices/2005/10/transport" elementFormDefault="qualified">
>>
>> <!-- Payload -->
>>
>> <xsd:complexType name="Payload">
>> <xsd:sequence>
>> <xsd:element name="content"
>> type="starws:Content" minOccurs="0" maxOccurs="unbounded" />
>> </xsd:sequence>
>> <xsd:anyAttribute/>
>> </xsd:complexType>
>>
>> <xsd:complexType name="Content">
>> <xsd:sequence>
>> <xsd:any namespace="##any" minOccurs="1"
>> maxOccurs="1" />
>> </xsd:sequence>
>> <xsd:attribute name="id" type="xsd:ID"
>> use="required" />
>> <xsd:anyAttribute/>
>> </xsd:complexType>
>>
>>
>> <!-- Attachment -->
>>
>> <xsd:element name="attachment" type="starws:Attachment" />
>>
>> <xsd:complexType name="Attachment">
>> <xsd:choice minOccurs="1" maxOccurs="1">
>> <xsd:element name="binary"
>> type="starws:BinaryData" />
>> <xsd:element name="text" type="starws:TextData" />
>> <xsd:element name="uriReference"
>> type="starws:UriReference" /> <!-- points to a
>> resource at a URI (not embedded nor attached) -->
>> <xsd:element name="attachmentReference"
>> type="starws:AttachmentReference" /> <!-- points to a MIME or
>> DIME attachment -->
>> </xsd:choice>
>> <xsd:attributeGroup
>> ref="starws:AttachmentAttributes" />
>> </xsd:complexType>
>>
>> <xsd:attributeGroup name="AttachmentAttributes">
>> <xsd:attribute name="id" type="xsd:ID"
>> use="optional" />
>> <xsd:attribute name="mimeCode" type="xsd:token"
>> use="optional" />
>> <xsd:attribute name="fileName" type="xsd:token"
>> use="optional" />
>> <xsd:attribute name="dateTime" type="xsd:dateTime"
>> use="optional" />
>> <xsd:attribute name="size" type="xsd:long"
>> use="optional" />
>> <xsd:attribute name="from" type="xsd:string"
>> use="optional" />
>> <xsd:attribute name="to" type="xsd:string"
>> use="optional" />
>> <xsd:attribute name="action" type="xsd:anyURI"
>> use="optional" />
>> </xsd:attributeGroup>
>>
>> <xsd:simpleType name="BinaryData">
>> <xsd:restriction base="xsd:base64Binary"/>
>> </xsd:simpleType>
>>
>> <xsd:simpleType name="TextData">
>> <xsd:restriction base="xsd:string"/>
>> </xsd:simpleType>
>>
>> <xsd:complexType name="UriReference">
>> <xsd:attribute name="href" type="xsd:anyURI"
>> use="required" />
>> </xsd:complexType>
>>
>> <xsd:complexType name="AttachmentReference">
>> <xsd:attribute name="href" type="xsd:anyURI"
>> use="required" />
>> </xsd:complexType>
>>
>>
>> <!-- Manifest -->
>>
>> <xsd:element name="payloadManifest"
>> type="starws:PayloadManifest" />
>>
>> <xsd:complexType name="PayloadManifest">
>> <xsd:sequence>
>> <xsd:element name="manifest"
>> type="starws:Manifest" minOccurs="0" maxOccurs="unbounded" />
>> </xsd:sequence>
>> </xsd:complexType>
>>
>> <xsd:complexType name="Manifest">
>> <xsd:attribute name="contentID" type="xsd:IDREF"
>> use="required" />
>> <xsd:attribute name="namespaceURI" type="xsd:anyURI"
>> use="required" />
>> <xsd:attribute name="element" type="xsd:string"
>> use="required" />
>> <xsd:attribute name="relatedID" type="xsd:string"
>> use="optional" />
>> <xsd:attribute name="version" type="xsd:string"
>> use="optional" />
>> </xsd:complexType>
>>
>>
>> <!-- Methods -->
>>
>> <xsd:element name="ProcessMessage">
>> <xsd:complexType>
>> <xsd:sequence>
>> <xsd:element name="payload"
>> type="starws:Payload" minOccurs="0" maxOccurs="1" form="qualified" />
>> </xsd:sequence>
>> </xsd:complexType>
>> </xsd:element>
>>
>> <xsd:element name="ProcessMessageResponse">
>> <xsd:complexType>
>> <xsd:sequence>
>> <xsd:element name="payload"
>> type="starws:Payload" minOccurs="0" maxOccurs="1" form="qualified" />
>> </xsd:sequence>
>> </xsd:complexType>
>> </xsd:element>
>>
>> <xsd:element name="PutMessage">
>> <xsd:complexType>
>> <xsd:sequence>
>> <xsd:element name="payload"
>> type="starws:Payload" minOccurs="0" maxOccurs="1" form="qualified" />
>> </xsd:sequence>
>> </xsd:complexType>
>> </xsd:element>
>>
>> <xsd:element name="PutMessageResponse">
>> <xsd:complexType />
>> </xsd:element>
>>
>> <xsd:element name="PullMessage">
>> <xsd:complexType/>
>> </xsd:element>
>>
>> <xsd:element name="PullMessageResponse">
>> <xsd:complexType>
>> <xsd:sequence>
>> <xsd:element name="payload"
>> type="starws:Payload" minOccurs="0" maxOccurs="1" form="qualified" />
>> </xsd:sequence>
>> </xsd:complexType>
>> </xsd:element>
>>
>> </xsd:schema>
>> </types>
>>
>>
>> <!-- Messages -->
>>
>> <message name="ProcessMessageIn">
>> <part name="parameters" element="starws:ProcessMessage" />
>> </message>
>>
>> <message name="ProcessMessageOut">
>> <part name="parameters"
>> element="starws:ProcessMessageResponse" />
>> </message>
>>
>> <message name="PutMessageIn">
>> <part name="parameters" element="starws:PutMessage" />
>> </message>
>>
>> <message name="PutMessageOut">
>> <part name="parameters" element="starws:PutMessageResponse" />
>> </message>
>>
>> <message name="PullMessageIn">
>> <part name="parameters" element="starws:PullMessage" />
>> </message>
>>
>> <message name="PullMessageOut">
>> <part name="parameters"
>> element="starws:PullMessageResponse" />
>> </message>
>>
>> <message name="ManifestHeader">
>> <part name="header" element="starws:payloadManifest" />
>> </message>
>>
>>
>> <!-- PortTypes -->
>>
>> <portType name="starTransportPortTypes">
>> <operation name="ProcessMessage">
>> <input message="tns:ProcessMessageIn" />
>> <output message="tns:ProcessMessageOut" />
>> </operation>
>>
>> <operation name="PutMessage">
>> <input message="tns:PutMessageIn" />
>> <output message="tns:PutMessageOut" />
>> </operation>
>>
>> <operation name="PullMessage">
>> <input message="tns:PullMessageIn" />
>> <output message="tns:PullMessageOut" />
>> </operation>
>> </portType>
>>
>> <!-- Bindings -->
>>
>> <binding name="starTransport" type="tns:starTransportPortTypes">
>> <soap:binding transport="http://schemas.xmlsoap.org/soap/
>> http" style="document" />
>> <operation name="ProcessMessage">
>> <soap:operation soapAction="http://www.starstandards.org/
>> webservices/2005/10/transport/operations/ProcessMessage"
>> style="document" />
>> <input>
>> <soap:header message="tns:ManifestHeader"
>> part="header" use="literal" />
>> <soap:body use="literal" />
>> </input>
>> <output>
>> <soap:header message="tns:ManifestHeader"
>> part="header" use="literal" />
>> <soap:body use="literal" />
>> </output>
>> </operation>
>> <operation name="PutMessage">
>> <soap:operation soapAction="http://www.starstandards.org/
>> webservices/2005/10/transport/operations/PutMessage"
>> style="document" />
>> <input>
>> <soap:header message="tns:ManifestHeader"
>> part="header" use="literal" />
>> <soap:body use="literal" />
>> </input>
>> <output>
>> <soap:body use="literal" />
>> </output>
>> </operation>
>> <operation name="PullMessage">
>> <soap:operation soapAction="http://www.starstandards.org/
>> webservices/2005/10/transport/operations/PullMessage"
>> style="document" />
>> <input>
>> <soap:body use="literal" />
>> </input>
>> <output>
>> <soap:header message="tns:ManifestHeader"
>> part="header" use="literal" />
>> <soap:body use="literal" />
>> </output>
>> </operation>
>> </binding>
>> </definitions>
>>
>>
>> Any information would be helpful, particularly articles that discuss
>> this topic.
>>
>> Thanks.
>>
>> Dave
>>
>>
>> _____________________________________________________________________
>> _
>> _
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS to
>> support XML implementation and development. To minimize spam in the
>> archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
>> subscribe: xml-dev-subscribe@lists.xml.org List archive:
>> http://lists.xml.org/archives/xml-dev/
>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>>
>
>
> ______________________________________________________________________
> _
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS to
> support
> XML implementation and development. To minimize spam in the
> archives, you
> must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org List archive:
> http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
>
>
>
>
>
> ______________________________________________________________________
> _
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]