Article

From:
To:
Dann Croghan
Subject:
Re: WSDL - Cannot Unwrap issues
Newsgroup:
embarcadero.public.delphi.webservices

Re: WSDL - Cannot Unwrap issues

Hello Dann,

This warning is perfectly safe and has to do more with how WebServices standards have changed. Initially WebServices were rpc-oriented. So an operation and it parts mapped exactly to a method and parameters. And even though the format was XML the encoding use was not XML encoding: SOAP had it's own encoding rules that used XML format but the XML conventions.
Then there was a push to shift to XML encoding. That model was not rpc-oriented; rather the Service expected a type [described] by a schema and it returned another type equally described by XML schema. In order to bridge the document/xml schema style to the previous rpc-oriented model the *wrapped* document|literal convention was established. In that model if a Service exposed an 'Add' operation, say:
{code}        function Add(I1, I2: Integer): Integer; {code}
The XML schema types would actually say that the Add operation takes a type, named Add, that contains two integers. Something along the lines of:
{code}   Add = class private   published     property I1: Integer;     property I2: Integer;   end;
  AddResponse = class(TRemotable)   published     property AddResult: Integer:   end;
  function Add(const parameters: Add): AddResponse; {code}

Of course, no one wanted to deal with that extra layer. You just want to pass two integers and get one back - not construct a type with two integers and receive back another type that contains the result. So it became customary for WSDL importers to *unwrap*.
A set of conventions were adopted on how the service would expose the wrappers such that someone looking at the WSDL would be able to tell: "Ah, this Service is wrapped... when I write a client for it I can remove that extra layer and get a more rpc-centric view of the Service". You can read about the conventions here: http://atmanes.blogspot.com/2005/03/wrapped-documentliteral-convention.html
But then Services started to worry less about exposing an rpc-friend view and several of them are simply not using the wrapped conventions. (It's a rather heated debate sometimes; you can search online for 'wrapped' vs. 'bare' and see the opinions for and against each:)
The messages that you saw were added to the WSDL importer because there was a time when most document|literal services were wrapped and if the Delphi importer failed to unwrap them (some) users would not be that happy. So, we added code to clearly say that we could not unwrap and then we spell out the reasons (they usually are because of the conventions mentioned in the link above was not adhered to).
Now that there's just as many wrapped and bare services out there it probably makes no sense to generate these messages anymore. Just a small line to mention that this is not a wrapped service would probably be sufficient. I'm making a note to do that.
Please let us know if you need more information or run into problems using this Service. You can configure to no unwrap and therefore it won't generate the messages because it won't even try.
Cheers,
Bruneau
FYI: Phrase searches are enclosed in either single or double quotes
 
 
Originally created by
Tamarack Associates
Thu, 28 Mar 2024 21:23:18 UTC
Copyright © 2009-2024
HREF Tools Corp.