XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] Generic vs Specific WSDL

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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS