W3C home > Mailing lists > Public > www-ws-desc@w3.org > September 2002

RE: proposal for changing binding for WSDL 1.2

From: Liu, Kevin <kevin.liu@sap.com>
Date: Thu, 19 Sep 2002 03:53:02 +0200
Message-ID: <99CA63DD941EDC4EBA897048D9B0061DA953BD@uspalx20a.pal.sap-ag.de>
To: "'Jacek Kopecky'" <jacek@systinet.com>
Cc: "'WS Description WG'" <www-ws-desc@w3.org>

Hi Jacek,

It seems your concerns can be summarized as:

1. By abstract the binding data to a separate <bindingType> element, though it's not a problem for "machine" which has good understanding of the "inheritance rule", it's harder for a novice user to get guidance about where this info can be applied. 

2.  Since WSDL hierarchy (sequence of serviceType/portType/operation/input|output|fault) is fixed and quite limited, we can live with just define the bindings under each element, and the benefit of having a modular <bindingType> is not obvious

3. Unless the issue addressed by Sanjiva's proposal can be broken down to several small issues and considered separately, it should be WSDL 2.0 issue

For point 1,  I think we can address it by adding an optional attribute @target which can be used as a hint about where this bindingType should be applied. so the modified grammar may look like below

<bindingType name = "NCname" target = "serviceType|portType|operation|input|output|fault|...">*
 	<!-- binding details -->
</bindingType>
 
<binding>*
   <serviceType name = .. bindingType = "qname"?..>* (depends on the result of the discussion about if binding should be defined in serviceType level) 
     <portType name = .. bindingType = "qname"?..>*
         <operation name = .. bindingType = "qname"?..>*
 	<input name = .. bindingType = "qname"?..>*
	   <parts name= "nmtokens" bindingType = "qname"?...> * 

Also, more generic binding types can be modularly defined if we adopt the suggestions from Jeffrey et al  for Hoisting SOAP Binding Attributes (see http://lists.w3.org/Archives/Public/www-ws-desc/2002Jul/0058.html). 

For point 2, I view it differently. IMHO, In WSDL1.1, the binding constructs is quite inconsistent with all other constructs. For example, one defines a type then references it in <part>, one defines a <message> then references it in <input|output|fault>.  but when it comes to binding, one has to
mingle the binding data inline with the <binding> element. add <bindingType> will make the wsdl component model more consistent and clean. Just like in a relational database, you can definitely live with putting all data in one table, but separating repetitious data to a separate table will make
reusability much better.   

For point 3.  I believe  <bindingType> can be considered separately from Sanjiva's proposal: the key for the related section of Sanjiva's proposal is about whether we should allow define bindings in the serviceType level. No matter what the WG eventually decided, <bindingType> idea can be applied
with just minor changes. 


Regards,
------------------------------
Canyang Kevin Liu
SAP Labs, Palo Alto
Technology Architecture
3475 Deer Creek Road
Palo Alto, CA 94304
(650) 849-5167
http://www.saplabs.com


> -----Original Message-----
> From: Jacek Kopecky [mailto:jacek@systinet.com]
> Sent: Thursday, September 12, 2002 9:23 AM
> To: Liu, Kevin
> Subject: RE: proposal for changing binding for WSDL 1.2
> 
> 
>  Kevin, 
>  please see my replies below. 8-)
> 
>                    Jacek Kopecky
> 
>                    Senior Architect, Systinet Corporation
>                    http://www.systinet.com/
> 
> 
> 
> > >  I'm afraid that while being more modular and more reusable, your
> > > proposal is also more complex to grasp. 
> > 
> > I am not convinced that bindingType proposal is harder to grasp. The
> > key difference between the two proposasls is whether to define 
> > resuable info in a separate module. IMHO, thinking in terms of 
> > relational database, separating resuable data is  just like 
> achiving 
> > first form normalization. I believe
> > the benefits of normalization have been discussed enough 
> 
> I'm not convinced either, that was just my initial reaction. 
> The reason
> why I think it may be harder to grasp is below.
> 
> > >The meaning of specifying
> > > soap:body on wsdl:service/@bindingType is simple - the 
> element will
> > > apply wherever among the descendants of the service where it is
> > > recognized. 
> > >  But there is the IMHO non-obvious expectation that one 
> extensibility
> > > element QName has one global meaning and won't be confused in 
> > > some WSDL
> > > contexts. Even if machine would not be confused, users might.
> > 
> > Maybe I am missing something, but I don't get your point 
> here.  Just 
> > like a input/@message can reference a message/@name, a 
> > service/@bindingType can reference a bindingType/@name. I don't see 
> > anything to do with extensibility Qname. In the grammer below, the 
> > extensible binding details are wrapped
> > inside the <bindingType> element and is referenceable by 
> the bindingType/@name  
> > 
> > <bindingType name = "NCname">*
> >  	<!-- binding details -->
> > </bindingType>
> >  
> > <binding>*
> > 	<serviceType name = .. bindingType = "qname"?..>*
> > 	...
> 
> Let me try to explain using an example:
> 
> First, I'll define a bindingType named 'example':
> 
> <bindingType name="example">
>   <soap:body .../>
> </bindingType>
> 
> Now, the confusion may stem from the fact that the bindingType above
> doesn't say where <soap:body .../> can be used, i.e. where this
> bindingType can be referenced in the portType hierarchy 
> (portTypes with
> operations and input/output/faults).
> 
> So now when I have a binding like
> 
> <binding name="eg2">
>   <serviceType name="st1" bindingType = "example" >
>     <portType name="pt1" />
>     <portType name="pt2" />
>   </serviceType>
> </binding>
> 
> a novice user or a user who doesn't know the <soap:binding> extension
> doesn't get any guidance from the fragment above about what 
> soap:body in
> fact affects - if it's the service, portType, operation or just one
> message in an operation.
> 
> So, back to my previous (quoted) text, by an extensibility 
> element QName
> I meant something like soap:body.
> 
> > 
> > >  Furthermore, WSDL hierarchy is quite simple and not meant to be
> > > extended. Therefore I think Sanjiva's proposal is simpler 
> > > than yours and
> > > suitable for almost as many cases. The rare cases where 
> your proposal
> > > would really bring benefits are not worth the additional 
> conceptual
> > > complexity, IMHO.
> > 
> > Again, I am missing your point:(.  Can you explain what you mean by 
> > wsdl hierachy? I don't see why the bindingType proposal is 
> extending 
> > WSDL hierachy
> 
> by WSDL hierarchy I mean the sequence serviceType/portType/operation/
> input|output|fault. I wasn't saying that your proposal extends this, I
> was saying that because this is fixed and quite limited, your proposal
> doesn't bring as much benefit as it would if the hierarchy was
> extensible or deep.
> 
> > >  Anyway, I think both proposals are very much a 2.0 material, not
> > > necessary for 1.2.
> > 
> > Maybe you are right, but I believe we need to address the 
> problem at 
> > least to some extend in 1.2 given that serviceType is introduced.  
> > Both proposals are just starting points for discussion. We 
> will find 
> > out how much can be done in 1.2.
> 
> Well, at the moment, I don't think much of your or Sanjiva's proposal
> should go to WSDL 1.2. That's mostly because I can't see 
> these proposals
> splitting into smaller pieces that could be applied to the 
> WSD language
> independently. Of course, if you show such a split can be done, then
> each piece can be considered on its own merits.
> 
> I hope I've clarified,
> 
> Jacek
> 
> 
> 
Received on Wednesday, 18 September 2002 21:53:30 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:21 GMT