83 messages in org.w3.www-tagRe: FW: draft findings on Unsafe Meth...
FromSent OnAttachments
Dan ConnollyApr 15, 2002 8:50 am 
Larry MasinterApr 15, 2002 1:44 pm 
David OrchardApr 15, 2002 3:01 pm 
David OrchardApr 15, 2002 3:19 pm 
Mark BakerApr 15, 2002 8:00 pm 
Keith MooreApr 15, 2002 8:37 pm 
Scott CantorApr 15, 2002 9:28 pm 
Edwin KhodabakchianApr 15, 2002 9:34 pm 
David OrchardApr 15, 2002 10:18 pm 
Paul PrescodApr 15, 2002 11:17 pm 
Tim BrayApr 15, 2002 11:32 pm 
Mark NottinghamApr 16, 2002 1:01 am 
Tim BrayApr 16, 2002 1:02 am 
Mark NottinghamApr 16, 2002 1:09 am 
Paul PrescodApr 16, 2002 2:11 am 
Paul PrescodApr 16, 2002 3:02 am 
Mark BakerApr 16, 2002 4:54 am 
Williams, StuartApr 16, 2002 8:22 am 
Keith MooreApr 16, 2002 8:32 am 
jon...@research.att.comApr 16, 2002 8:44 am 
Scott CantorApr 16, 2002 8:55 am 
Paul PrescodApr 16, 2002 9:40 am 
Mark NottinghamApr 16, 2002 9:42 am 
Hutchison, NigelApr 16, 2002 9:43 am 
Henrik Frystyk NielsenApr 16, 2002 10:48 am 
Bullard, Claude L (Len)Apr 16, 2002 1:46 pm 
Larry MasinterApr 16, 2002 6:39 pm 
Roy T. FieldingApr 16, 2002 7:54 pm 
Larry MasinterApr 16, 2002 10:10 pm 
Graham KlyneApr 17, 2002 1:54 am 
Paul PrescodApr 18, 2002 12:33 am 
Graham KlyneApr 18, 2002 9:11 am 
Alex RousskovApr 18, 2002 9:30 am 
Paul PrescodApr 18, 2002 9:45 am 
Graham KlyneApr 18, 2002 11:58 am 
Roy T. FieldingApr 18, 2002 3:11 pm 
Don BoxApr 18, 2002 6:28 pm 
Mark BakerApr 18, 2002 8:50 pm 
Keith MooreApr 18, 2002 8:54 pm 
Paul PrescodApr 18, 2002 10:00 pm 
Graham KlyneApr 19, 2002 12:53 am 
Bill de hÓraApr 19, 2002 4:18 am 
Roy T. FieldingApr 19, 2002 1:20 pm 
Anne Thomas ManesApr 22, 2002 3:23 pm 
Paul PrescodApr 22, 2002 4:01 pm 
Anne Thomas ManesApr 22, 2002 8:17 pm 
Paul PrescodApr 22, 2002 10:21 pm 
Anne Thomas ManesApr 23, 2002 5:36 am 
Paul PrescodApr 23, 2002 12:03 pm 
Paul PrescodApr 23, 2002 2:09 pm 
Roy T. FieldingApr 23, 2002 2:14 pm 
Bullard, Claude L (Len)Apr 23, 2002 2:50 pm 
Joshua AllenApr 23, 2002 2:53 pm 
David OrchardApr 23, 2002 4:14 pm 
Keith MooreApr 23, 2002 5:05 pm 
Roy T. FieldingApr 23, 2002 5:14 pm 
Simon St.LaurentApr 23, 2002 5:18 pm 
Larry MasinterApr 23, 2002 6:31 pm 
Mark BakerApr 23, 2002 6:36 pm 
Paul PrescodApr 23, 2002 8:03 pm 
Tim BrayApr 23, 2002 8:30 pm 
Dan ConnollyApr 23, 2002 9:05 pm 
Joshua AllenApr 23, 2002 9:10 pm 
Anne Thomas ManesApr 23, 2002 9:28 pm 
Mark NottinghamApr 23, 2002 9:42 pm 
Jeff BoneApr 23, 2002 9:42 pm 
Joshua AllenApr 23, 2002 10:02 pm 
Paul PrescodApr 23, 2002 10:05 pm 
Joshua AllenApr 23, 2002 10:27 pm 
Joshua AllenApr 23, 2002 10:38 pm 
Mark NottinghamApr 23, 2002 10:57 pm 
Mark NottinghamApr 23, 2002 11:16 pm 
Joshua AllenApr 23, 2002 11:20 pm 
Dan ConnollyApr 23, 2002 11:23 pm 
Tim BrayApr 23, 2002 11:56 pm 
Bullard, Claude L (Len)Apr 24, 2002 7:23 am 
Larry MasinterApr 24, 2002 8:47 am 
Keith MooreApr 24, 2002 10:46 am 
Bullard, Claude L (Len)Apr 24, 2002 10:56 am 
Aaron SwartzApr 24, 2002 11:27 am 
Mike DierkenApr 24, 2002 12:06 pm 
David OrchardApr 25, 2002 10:54 am 
Roy T. FieldingMay 5, 2002 3:38 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: FW: draft findings on Unsafe Methods (whenToUseGet-7)Actions...
From:Paul Prescod (pa@prescod.net)
Date:Apr 23, 2002 12:03:56 pm
List:org.w3.www-tag

Anne Thomas Manes wrote:

Paul Prescod wrote:

We're getting off into a diversion. Can we agree that every piece of information available on the Web should be URL addressable or a PART of a URL-addressable resource? And I don't mean part in a vague sense: I mean you download a representation and the piece of information is in there. In many content-types you can also directly link to "sub-resources" of the resource (e.g. XML, PowerPoint, PDF)

Agreed. In the case of a Web service, if you perform a simple GET on the resource, you receive a service description, which tells you how to (a) how to invoke the service or (b) how to send a message to the service.

Let's be concrete. With the HTTP version of Google' web service I can refer to any cached page with a URI:

* http://216.239.35.100/search?q=cache:www.manes.net

With the SOAP version *I cannot do so*. Cached pages retrieved through the SOAP interface *have no URI*. If the SOAP interface is removed, the URI version provides all of the same functionality. But if the URI version is removed I can no longer use XPath/XPointer/XSLT's "document" function to retrieve this. I can no longer use XInclude to refer to it. I can no longer use a cached Google document as an XML Namespace definition. I can no longer make RDF assertions about it.

The HTTP-GET version of the service is in a very strict, concrete sense, more powerful than the HTTP-POST/SOAP version.

The same goes for UDDI. Please forget that UDDI is about discovery. I'm not talking about the best way to do discovery. I'm talking about the best way to make a bunch of information available on the Web. UDDI repositories happen to be a "bunch of information." For all I care it could be a rap album database. An HTTP-GET/PUT/POST/DELETE version of UDDI, or the rap database, would be more powerful in a strict and concrete sense then the HTTP-POST/SOAP version. Thousands of people have heard this claim and not one has disputed it.

I could go down the list of web services at XMethods and demonstrate the same thing. Each can be made demonstrably and substantially more powerful if you base them on multiple HTTP methods rather than just one. It doesn't matter whether the service is read-only or read-write, the multiple-method HTTP version still wins. Thousands of people have heard this claim and I am waiting for the first counter-example.

.... I encourage you to explore new ways to perform discovery.

I think we could have a very interesting conversation about this but I don't think it is the same conversation as whether SOAP should support more than one HTTP method.

... Right now the most popular form of discovery of Web resources by humans is Google, although Google doesn't particular help you discover Web services (a very specialized form of Web resource). Google (until now) hasn't been particularly available to application (non-human)clients. By building a SOAP API to Google, applications can now invoke Google searches. I would characterize the Google SOAP API as extremely flexible and powerful -- so I'm having trouble following your argument. Are you saying that it could be more flexible and powerful (i.e., support simpler discovery) if Google designed a API based on something else other than SOAP?

Yes, I will separately send you an article that demonstrates this.

If you spend a moment looking at the Google WSDL description, you'll realize that the input and output messages are relatively complex.

Just FYI, I've done more than look at the Google WSDL description. I rewrote it to use pure HTTP. (WSDL supports "pure" HTTP) I also wrote a server side application that maps from the HTTP version to the SOAP version. My version is a strict functional superset of the real Google version.

The other fascinating thing about it is that Google has three methods.

1. GetCachedPage. They *already* have an HTTP way to do this. They merely needed to descsribe it in WSDL and it would have been an official web service. For various reasons the HTTP version would be substantially more efficient and simpler.

2. SpellingCorrection. this one takes one string argument and returns one string argument. In order to do that, it builds two HTTP envelopes and two SOAP envelopes, although HTTP can trivially pass strings back and forth.

3. GoogleSearch. This one was provided in a XML/HTTP version around a year ago. That service became pay-only.

So they had their problem essentially solved a year ago and they had only to publish a WSDL. But instead they invented a less powerful, less efficient SOAP wrapper. That's progress!

... The data are structured and typed, and the formats change based on the function you're performing. From a developer's point of view, it much simpler to deal with these input and output messages as application structures than as URI constructs. I'm not sure that I'm willing to sacrifice developer productivity for a simpler discovery mechanism.

There is no change in developer productivity. If you are using the .NET framework you take my version of the wsdl and you say:

delete GoogleSearch.wsdl ren Pauls.wsdl GoogleSearch.wsdl wsdl Pauls.wsdl

That generates a C# class which is identical to C# or VB programmers (actually there is a bug in Microsoft's WSDL implementation that prevents this from being strictly true -- but it is very close). If other WSDL implementations are similarly sophisticated (they aren't, yet) then the same will be true for them. I'm not theorizing. I have the code to prove it:

wsdl: http://www.prescod.net/rest/googleapi/GoogleHTTP.wsdl generated C# client (after a small bug fix): http://www.prescod.net/rest/PureXMLGoogleHTTPService.cs C# client code (same as shipped with the Google API): http://www.prescod.net/rest/googleapi/Form1.cs server implementation: http://www.prescod.net/rest/googleapi/google_gateway.zip

To be clear, the only thing that changed for the average developer is the classname. For clarity I created a different class name than Google's. But now the underlying service is based on GET (they had no need of PUT/POST/DELETE) and supports URI referencing.

...

Since Web services by definition are identified by a URI, you can easily reference a Web service. Our are you looking for more granularity -- I imagine that you're asking for a mechanism to supply a URI that provides access to a specific method within the service? There are ways to do so. You could provide a reference to a specific QName (referencing an operation within a portType) within the WSDL document.

I don't want to reference the web service. I want to reference the information WITHIN the web service. If it is a stock database, I want to reference *individual* stock quotes. If it is a UDDI repository then I want to reference individual T-Models. If it is a Google search then I want to reference individual search results (as I could a year ago, but cannot with the SOAP API). If it is an album database I want to reference individual albums.

This is not rocket science. It works on the Web as we know it. We now have a trend of people choosing to use SOAP because it is new and shiny and losing features that the Web provided them in 1993. We need to figure out how SOAP can add value to the Web's existing features and not detract or compete with them.