Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
Biztalk
acce.forsuppliers
acce.hipaa
acce.hl7
acce.rosettanet
accelerator.finserv
admin
appintegration
framework
general
library
nonxml
orchestration
sdk
server
setup
tools
xlangs
xsharp
  
 
date: Tue, 4 Sep 2007 06:26:04 -0700,    group: microsoft.public.biztalk.appintegration        back       


Is the element name in a WSDL part of the contract?   
Hi there,

We're having an internal debate about whether the element name in a WSDL is 
part of the interface contract, or whether the root element name of the 
inbound message can be named anything provided the complex type is the same.

This question came about because we've published a WSDL that is used to 
define both "Request" and "Response" messages for our orchestration.  However 
we're only exposing a SOAP receive location using the BizTalk Web Publishing 
Wizard for the inbound "Request" messages, and require our consuming clients 
service to use the "Response" message types defined in our WSDL to expose a 
service to which we can post our response asynchronously.  (FYI We can't use 
synchronous request-response semantics because the orchestration is 
long-running, and we have to use SOAP as the transport).

Further, our public XSD schemas (and thus the generated WSDL) uses 
lowerCamelCase for root-node element names (e.g. "requestMessage") and 
UpperCamelCase for all complex types (e.g. "RequestMessage").

<s:element name="CommitRequest"> 
<s:complexType> 
<s:sequence> 
<s:element minOccurs="0" maxOccurs="1" name="requestMessage" 
type="tns:RequestMessage" /> 
</s:sequence> 
</s:complexType> 
</s:element>

But when the client's development team add a web reference based on our 
WSDL, then use those types to expose a service for us to post our responses 
to, the root element names (i.e. the message names) in their derived WSDL all 
become UpperCamelCased, and thus different to our lowerCamelCased element 
names in the original XSD.  This occurs because the web reference tool 
generates local copies of the XSD's based on the complex type of the element 
in the original WSDL (which are UpperCamelCase), despite the actual original 
element name being lowerCamelCased.

Phew, still with me?

So we want to dictate to the consuming client that they "must" expose a 
response service for us to consume with lowerCamelCased root element names as 
per the WSDL.  Which means they need to deal with the way the Visual Studio 
2005 "Add Web Reference" process consumes our WSDL, because it is "breaking 
the contract" by changing the case of the element name.  But there is 
disagreement about whether we can demand that as part of the interface 
contract, because it has been suggested that the actual root element name 
does not form part of the contract thus we have no right to dictate both the 
message element name and the complex type.

Hence the original question, whether the element name in a WSDL is "part of 
the interface contract" and thus "must" be enforced in the message.  Or can 
the root element name of the inbound message be any named anything and we 
need to deal with different element names arriving at our service

Thanks in advance for any assistance.
Dean
date: Tue, 4 Sep 2007 06:26:04 -0700   author:   Dean Robertson Dean

Re: Is the element name in a WSDL part of the contract?   
On Tue, 4 Sep 2007 06:26:04 -0700, Dean Robertson <Dean
Robertson@discussions.microsoft.com> wrote:

>Phew, still with me?
No :-)

>Thanks in advance for any assistance.
I would definately say that the rootnode is part of the contract!

-- 
eliasen, representing himself and not the company he works for.

Private blog: http://blog.eliasen.dk

Private email: jan@eliasen.dk
date: Wed, 05 Sep 2007 12:48:39 +0200   author:   Jan Eliasen am

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us