Ron,
> Some bindings
will include extra message parts (possibly as SOAP headers, or JMS headers),
while others will not (perhaps an EJB or MDB binding?).
> The only
message parts guaranteed to be delivered to the service by all of the possible
bindings are those declared in the port type.
No, there is no
guarantee that the parts declared in a port type will be delivered by all
possible bindings. A binding can select any subset of those parts (possibly the
empty subset). This is clearly specified in the SOAP binding where the soap:body
element can select which parts are going to be mapped to concrete messages and
which ones are not.
This is exactly the
same thing that happens with abstract messages that are not part of a port type.
A particular binding will select some of them and leave others out. The only
difference is that, in the case of SOAP bindings, portType parts can map to
either bodies or headers, while non portType parts can only map to headers.
Nothing is said, of course, about bindings other than SOAP which don't have the
concept of a header.
> How could any
reasonable interpretation or use of WSDL conclude that a specific binding type
(namely SOAP)
> has the
ability to jump across the logical layers that WSDL has defined (albeit
imperfectly!).
> This is
fundamental: we are talking about the WSDL model of messaging, not
SOAP.
I am talking about
any possible binding, not just SOAP. It really all depends on how you define the
logical layers. We all agree there is an abstract layer and a concrete layer. So
far nobody has shown me that the WSDL 1.1 states that abstract
messages outside portTypes are not part of the abstract layer. In
particular, your quotations below do not say anything about that
either.
Ugo
Ugo,
Ugo Corda
wrote:
No, I disagree - the abstract interface of a service is ONLY
defined by its portType(s).
From WSDL 1.1, Section 2.5: Bindings:
"A binding defines message format and protocol details for
operations and messages defined by a particular portType. There may be any
number of bindings for a given portType."
Bindings have a very
clear relationship with port types. Port types are defined in part as (section
2.4):
"A port type is a named set of abstract operations and the
abstract messages involved." Our operations (the abstract service
being offered) are based only the information contained in the port
type.
It is true that bindings (e.g., SOAP) allow
extra message parts to be utilized by the binding. However, there is clearly
no connection between these extra message parts and the operations offered by
our abstract service.
I will try putting this a
different way. Multiple bindings are allowed for a single port type. Some
bindings will include extra message parts (possibly as SOAP headers, or JMS
headers), while others will not (perhaps an EJB or MDB binding?). The only
message parts guaranteed to be delivered to the service by all of the possible
bindings are those declared in the port type. How could
any reasonable interpretation or use of WSDL conclude that a specific
binding type (namely SOAP) has the ability to jump across the logical layers
that WSDL has defined (albeit imperfectly!). This is fundamental: we are
talking about the WSDL model of messaging, not SOAP. If people confuse WSDL
for SOAP we should gently correct them, or, if too late, provide workarounds
to some of their architecturally-challenged creations (as Satish has very
reasonably suggested). We shouldn't give up on the basics of WS
architecture!
-Ron
Yes, I understand your position. My point is that it is just your personal position, not supported by anything said in the spec. You cannot expect designers to base their choices on anything outside the spec, no matter how reasonable those external argumentations are. That's one of the rules of the standards game ...
Ugo
-----Original Message-----
From: Sanjiva Weerawarana [mailto:sanjiva@watson.ibm.com]
Sent: Monday, November 24, 2003 10:51 AM
To: Ugo Corda; Satish Thatte; Francisco Curbera
Cc: Ron Ten-Hove; wsbpel@lists.oasis-open.org
Subject: Re: [wsbpel] Issue - 77 - Under specified operation
definitions
OK this is my last note on this topic ..
"Ugo Corda" <UCorda@SeeBeyond.com> writes:
I would say that the abstract behavior of a Web service is
defined by its abstract interface. The portType is just a
subset of the WSDL 1.1 abstract interface, because abstract
messages are allowed in the abstract interface that are not
part of a portType.
No, I disagree - the abstract interface of a service is ONLY
defined by its portType(s).
(Don't blame me for that: your name is on
the WSDL 1.1 spec, not mine ;-).
I'll accept blame if it was written incorrectly, but see below.
Let me quote here WSDL 1.1, sec. 2.3.2, Abstract vs.
Concrete Messages:
"Message definitions are always considered to be an abstract
definition of the message content. A message binding describes
how the abstract content is mapped into a concrete format. However,
in some cases, the abstract definition may match the concrete
representation very closely or exactly for one or more bindings,
so those binding(s) will supply little or no mapping information.
However, another binding of the same message definition may require
extensive mapping information. For this reason, it is not until the
binding is inspected that one can determine "how abstract" the
message really is".
Everything above is true - but its *only* talking about abstract
message definitions and how they are bound to the "wire." It does
not say *anything* about what constitutes the abstract interface of
a service.
So, I will stick to my position that the interface of a service
is defined by its portType(s) and thus BPEL should only allow
access to the messages as brought in by the portType.
It seems like its time to agree to disagree ...
Sanjiva.
To unsubscribe from this mailing list (and be removed from the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/wsbpel/members/leave_workgroup.php.
|