- From: <noah_mendelsohn@us.ibm.com>
- Date: Wed, 7 Jun 2006 16:17:39 -0400
- To: Tim Bray <tbray@textuality.com>
- Cc: Mark Baker <distobj@acm.org>, Jan Algermissen <jalgermissen@topicmapping.com>, Paul Denning <pauld@mitre.org>, public-web-http-desc@w3.org
Tim Bray wrote: > > except for HTTP and any shared MIME types, everything in a RESTful > > system is discovered at runetime. > > Who said? I disagree entirely. Just because the SOAP-heads blew > WSDL doesn't mean that there's anything intrinsically wrong with the > notion of declaring a REST interface. It would help with things like > tooling and testing and automation, too. I strongly agree. (Well, it would be impolitic of me to agree with the crack about the SOAP-heads blowing WSDL, so I'll just be neutral on that and strongly agree on the rest, pun in tended.) Anyway, long ago and far away I gave a talk on XML Schema in which I claimed that schemas were useful for at least 3 main purposes [1]. * Contracts: agreeing on formats * Tool building: know what the data will be before the first instance shows up - Database integration - User interface tools - Programming language bindings * Validation: make sure we got what we expected As Tim says, you get just the same kinds of benefit by having a declared description for a REST interface, and I'm not implying that the description need in any way be based on XML Schema in particular. The description should be at whatever level and in whatever form meets the above needs for you. It's also true that it's a good thing if the runtime interaction is indeed self-describing. That's fundamental to the Web. If you have no advance description, then you need runtime self-description to understand what you've got; if you have an advance description, then the information retrieved at runtime lets you "validate" that what you've received indeed matches your expectations. The runtime stuff always wins, but the advance description can be very useful. > > IMHO, HTTP and the shared understanding of a MIME type *and* the > > intention of the client developer at design time are sufficient to > > actually implement the client side - if the design time > > expectations do not hold at runtime this will be detected at > > runtime. (I do not consider this a problem since there cannot be a > > design time constraint on the runtime in a distributed system > > anyhow so you allways need to check and expect insifficient data) > > My experience differs. When building a heterogeneous distributed > system, I'd like to have a contract that operates at a higher level > than a MIME type, so that when things break, you can finger-point > constructively. -Tim Yup, I agree with that too. Noah [1] http://intertwingly.net/slides/2002/devcon/SchemaSecrets.ppt -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 --------------------------------------
Received on Wednesday, 7 June 2006 20:17:55 UTC