W3C home > Mailing lists > Public > www-ws-arch@w3.org > July 2003

Re: Fw: Naming a Web service resource

From: Francis McCabe <fgm@fla.fujitsu.com>
Date: Mon, 7 Jul 2003 09:55:28 -0700
Cc: "Www-Ws-Arch@W3. Org" <www-ws-arch@w3.org>
To: "Anne Thomas Manes" <anne@manes.net>
Message-Id: <CFB8638F-B09B-11D7-8C30-000393A3327C@fla.fujitsu.com>

Anne:
   This topic has been discussed a little in WSA. I can give you my 
personal view on this; it is not one that is necessarily shared ;-)

1. The targetResource concept is, IMO, a brain-dead idea. The principal 
reasons being:

a. The resource that a service manipulates may not be identifiable in 
any obvious way
b. A service may be inherently `about' a dynamic set of resources, and 
therefore it becomes onerous to identify them in the service description
c. The action-oriented level of description implicit in a service 
description is not the appropriate level to discuss resources.

However, who am I to say what WSD gets up to?

2. Web services *do* have identity; and hence can be expected to have a 
URI. However, that does not imply that a Web service has a meaningful 
representation:
a. For a simple, atomic, service, one might assert that the binding 
address of a service is a good candidate for the service identity. 
However, that seems too low-level and too transport specific.
b. The service description of a service is a potential candidate for 
the service representation, but different descriptions of the same 
service are likely.
c. A composite service, in the sense of a transparently composed 
service, is different to its component services and yet essentially 
unknown to the component parts. A simple example: a service composing a 
weather service with a language translation service to give weather 
reports in foreign languages. Ideally, one should be able to build such 
a service with no programming: simply by hooking together the weather 
service and the translation service. The service description amounts to 
a particular choreography over existing services. The foreign language 
weather service is still a service, and still had an identity (it may 
be composed further, by linking with an import-export service to 
predictively order umbrellas say).

So, the upshot seems to be that a Web service has an identity, but that 
that identity is closer in spirit to the namespace uri than a web page 
uri.

Frank

On Friday, July 4, 2003, at 07:10  AM, Anne Thomas Manes wrote:

>
> I'm not getting much response from the ws-desc team on this issue, and 
> it
> occurs to me that it might be of more interest at the arch level.
>
> Some background: The WS-Desc team has proposed the introduction of an
> optional attribute called targetResource to provide some additional
> discovery metadata to reference the "thing" behind a Web service
> interface -- for example, it can help you discover that different 
> service
> interfaces provide access to the same thing. To some degree, this 
> attribute
> is tied to the groups decision to limit a service to a single 
> interface,
> because now you need a mechanism to express that fact that multple 
> services
> are related in some way.
>
> Thinking through this scenario, I've realized that one of the must 
> unwebby
> features of the Web services framework is that a Web service doesn't 
> have a
> URI. It has a description (WSDL). It has one or more endpoints. But 
> there is
> no one URI that represents the resource that *is* the Web service.
>
> Reading through the various documents that describe URIs and the Web
> architecture, it seems obvious to me that a Web service is an 
> "important"
> Web resource, therefore it should have a URI.
>
> I'd appreciate it if the WS-Arch group would discuss this issue.
>
> Anne
>
> ----- Original Message -----
> From: "Anne Thomas Manes" <anne@manes.net>
> To: <cordau@acm.org>; <www-ws-desc@w3.org>
> Sent: Wednesday, July 02, 2003 11:43 AM
> Subject: Naming the service resource
>
>
>>
>> See inline...
>> ----- Original Message -----
>> From: "Ugo Corda" <cordau@acm.org>
>> To: <www-ws-desc@w3.org>
>> Sent: Saturday, June 28, 2003 3:48 PM
>> Subject: Re: Minutes of W3C WSDWG Conference Call, June 26th, 2003
>>
>>
>>> Anne,
>>>
>>> Let me see if I understand you correctly. I think you are saying two
>> things.
>>>
>>> a) A serviceURI is a way of associating a URI with a particular
>> wsdl:service
>>> (single interface), so that this URI abstracts away the individual
>> endpoints
>>> and associated URIs.
>>>
>>> This is fine with me. The URI of the WSDL document plus the fragment
>>> identifier mechanism gives us that type of URI right away.
>>
>> My suggestion is that we name the *service resource*, as opposed to 
>> the
>> interface to the service or the definition of the service. I don't 
>> think
>> that it's appropriate to use the WSDL document plus fragment 
>> identifier
> for
>> this purpose, because the fragment identifier is the URI of the 
>> definition
>> of the service, not the service itself. The serviceURI would give us 
>> the
>> ability to directly associate this definition with the thing that it
>> defines. Also consider the fact that the service resource might be 
>> defined
>> using some other type of description language, such as DAML-S, and it
> would
>> be very useful to have a definition-language neutral mechanism to 
>> refer to
>> this resource. (Now that I think about it, I think this point is 
>> probably
>> the most important point in my argument.)
>>
>> A week ago or so I asked whether a process can be a resource, and a
>> REST-oriented person (I forget who, now--sorry) responded, "yes". Way 
>> back
>> (at least a month ago), Sanjiva made a comment in response to one of 
>> the
>> questions regarding targetResource that we have no name for the thing
> behind
>> the interface, which--unless I'm missing something fundamental 
>> here--is
> the
>> service resource. IMHO such a resource should have a name. It's very
>> un-Webby not to name an important resource. I'd like to think that 
>> this
> idea
>> was the basic concept behind targetResource -- but then we started 
>> talking
>> about naming the thing that the service acts upon rather than the 
>> service
>> itself (e.g., the printer rather than the print queuing/management
>> services). I'm totally in agreement with Mark (!) that identifying the
> thing
>> that the service acts upon is too much implementation detail.
>>
>>> b) A serviceURI is a way of abstracting away a particular 
>>> wsdl:service
>>> document instance, so that I could change some of the endpoint URIs
> under
>>> that wsdl:service (and generate a new WSDL document) and still refer 
>>> to
>> the
>>> same serviceURI.
>>
>> The serviceURI names the service resource. It has nothing to do with
>> abstracting away a wsdl:service document instance. The wsdl:service
> document
>> instance defines some aspect of a service resource, hence it should
> specify
>> the resource that it is defining. A service resource may have multiple
>> endpoints, and these endpoints may change. But it's still the same
> resource.
>> Here's a simple analogy: Ugo Corda has many endpoints -- email 
>> addresses,
>> postal addresses, phone numbers, etc. Ugo may change some of these
>> endpoints. He may get new ones, he may get rid of some. But he's 
>> still Ugo
>> Corda.
>>
>>> I am not sure we need this. We could just keep the endpoints the same
>> while
>>> changing the underlying implementation and/or deployment. (To take 
>>> your
>>> parallel with a Web site's home page, the Yahoo home page is always
>>> http://www,yahoo.com regardless of any change in the underlying
>>> implementation and deployment).
>>
>> That's exactly my point. http://www.yahoo.com names the Yahoo home 
>> page,
>> which is a resource. The URI isn't the definition of the resource. It
> isn't
>> the endpoint of the resource (that would be
> http://www.yahoo.com/index.html
>> or something like that). It names the resource. The implementation of 
>> the
>> resource can change, and things still work.
>>
>>> Regarding the use case of a single service implementing multiple
>> interfaces,
>>> that "service" will actually be a bunch of wsdl:service's, and this
>>> particular type of relationship among them could be addressed by the
>> service
>>> group solution.
>>
>> Perhaps, but how would you indicate the type of relationship in the
> service
>> group? And how would this solution allow me to discover that a
> wsdl:service
>> definition and a DAML-S definition in fact define different aspects 
>> of the
>> same service?
>>
>>> (As you can see, I am taking a minimalist approach and trying to 
>>> avoid
>>> introducing new concepts unless they appear to be absolutely 
>>> necessary).
>>>
>>> Ugo
>>>
>>> ----- Original Message -----
>>> From: "Anne Thomas Manes" <anne@manes.net>
>>> To: "Ugo Corda" <UCorda@SeeBeyond.com>, <www-ws-desc@w3.org>
>>> Date: Sat, 28 Jun 2003 07:57:02 -0400
>>> Subject: Re: Minutes of W3C WSDWG Conference Call, June 26th, 2003
>>>
>>>
>>> Ugo,
>>>
>>> My proposal for point 1 is simply the assignment of a name (a URI --
> let's
>>> call it serviceURI) to a service implementation (a resource). As with
> any
>>> resource, there's no reason why you can't change the code that
> implements
>>> this resource.
>>>
>>> In many respects, it is equivalent to assigning a URI to a Web site's
> home
>>> page. There's nothing stopping you from changing the code behind the 
>>> Web
>>> page (in fact it happens all the time).
>>>
>>> I proposal the serviceURI SHOULD NOT be the same as the endpoint URL 
>>> of
>> the
>>> service implementation -- for exactly the reason that you may want to
>> change
>>> its implementation some time down the road.
>>>
>>> And I think I agree that the new wsdl:service definition looks pretty
>> close
>>> to being right for the definition of a service implementation -- but 
>>> I
>>> suggest that the resource MUST have a serviceURI name. Given the 
>>> naming
> of
>>> the service implementation, I'm not sure we then need targetResource 
>>> --
> or
>>> perhaps it could be added to the service group definition as a means 
>>> to
>>> identify the relationship among the services in the group.
>>>
>>> By naming the service implementation, you also solve the use case 
>>> where
> a
>>> single service might implement multiple interfaces -- you would still
>>> maintain the one service/one interface requirement, but you could 
>>> define
>>> multiple service implementations that reference the same serviceURI.
>>>
>>> Anne
>>>
>>
>
Received on Monday, 7 July 2003 12:55:50 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 3 July 2007 12:25:21 GMT