Ron,
> What, exactly
is the relationship between an operation defined in a port type, and that
operation as bound
> to a particular
protocol? Is this why you are concerned about relying on port types for
our message descriptions?
I am not sure I
understand your question. What I was saying is that there is no substantial
difference between a binding for a portType and a binding for an abstract
message not belonging to a port type. In either case, the associated parts might
or might not be used by the binding. So, you might find variables in current
BPEL activities that, for some bindings, have parts not mapped to the wire
(so are uninitialized), despite the fact that they belong to what you consider
the "true" abstract interface.
> "A binding
defines message format and protocol details for operations and messages defined
by a particular portType."
> This clearly
separates the layers. I don't see any mention of "extra" abstract messages
becoming part of the abstract endpoint type.
The fact that a
reference to "extra" abstract messages binding is missing is just an example of
how poorly "extra" abstract messages are described in the spec. (That's, after
all, the source of all these discussions). Or are you saying that this
binding rule does not apply to "extra" abstract messages? Then where is that
binding rule specified? And if those "extra" abstract messages have no
binding defined, how would you be able to map them to a soap:header, the same
way you do for a part defined in a portType?
> Can you provide
us with a definition of an abstract endpoint using WSDL terminology?
Here it is. "An abstract endpoint is defined by a particular portType
plus all the abstract messages not belonging to any portType. A particular
binding will specify which parts in those "extra" abstract messages will
belong the concrete endpoint (the same way that the binding will specify
which parts in the portType will belong to the concrete
endpoint)".
You certainly can say that this interpretation is
arbitrary, but yours is too for the simple reason that the WSDL 1.1 spec *does
not* define what an abstract endpoint is. Any such definition can only be
derived by interpretation of certain parts of the spec. Since the spec itself is
unfortunately unclear, different interpretations can be derived from
it.
Ugo
-----Original Message-----
From:
Ron Ten-Hove [mailto:]
Sent: Tuesday, November
25, 2003 12:03 PM
To: Ugo Corda
Cc:
Subject: Re: [wsbpel] Issue - 77 - Under
specified operation definitions
Ugo,
Ugo
Corda wrote:
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.
What, exactly is
the relationship between an operation defined in a port type, and that
operation as bound to a particular protocol? Is this why you are
concerned about relying on port types for our message descriptions?
> 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.
WSDL 1.1,
Section 2.5:
"A binding defines message format and protocol details for
operations and messages defined by a particular
portType."
This clearly separates the
layers. I don't see any mention of "extra" abstract messages becoming
part of the abstract endpoint type. Microsoft has a nice article
on the MSDN site that includes a diagram that illustrates this
nicely.
Perhaps we a suffering from terminology
differences here. Can you provide us with a definition of an abstract endpoint
using WSDL terminology? I hold that an abstract endpoint is defined by the
port type (or interface, if you prefer WSDL 2.0
terminology).
Cheers,
-Ron