Steve White wrote:
Jan,

On  7.08.08, Jan Ploski wrote:
Steve White wrote:
A user asked me, what are Web Services?
A web service is a procedure which can be invoked remotely using a set of communication protocols prescribed by W3C.

Which communications protocols?  Any protocol?

Hi Steve,

Not any protocols, just those endorsed by W3C. So CORBA or language-specific RPC/RMI mechanisms do not qualify, for instance. HTTP and SOAP and WS-anything do. The exact membership of this protocol set is going to change tomorrow. As others have pointed out, "RESTful services", which are really just plain old HTTP request-response dressed up in new buzzwords also qualify as web services, probably just because they rely on HTTP and HTTP means "web".

Yes, my explanation skims over a lot of technical detail, but when you are asked this question by a user, it might actually be a good tactic to just give a brief explanation. For we should ask ourselves a meta-question: what is the purpose of this sought definition - when we ask "what *is* a web service", what do we really want to do with the answer? It depends on the context and individual needs, of course.

I think that is not what is usually meant by the term--it is somehow
more restrictive.  But this is the question: how restrictive?

My impression is that the term "(web) service" is used in different types of discourse. First, on a down-to-earth technical level - where my proposed definition applies. Second, on an "architectural" level - where the term refers to a metapher useful in structuring software systems. However, I wouldn't bother explaining to a user this second meaning. It would be like engaging in a discussion of what an object "is" in context of oriented-oriented design. Unless a precise question is asked, no precise answer can be given, and precise questions seldom start with "what is ...".

In fact, any time two machines talk, effectively a procedure is being
called.  So if the communications protocol is defined by the W3C, those
procedures are Web Services?  I don't think so.

The implementor of client software must have an intent to invoke a specific remote procedure (one with a specific name and parameters). So low-level socket-based communication, which also qualifies as "machines talking", would not be enough. Other than that, I do think that indeed "if the communications protocol is defined by the W3C, those procedures are Web Services".

To be even more exact, a "web service" is a *set* of topically related procedures, much like a package or module in a traditional programming language. But here too, I'd say that the simplified explanation (web service = remotely invokable procedure) is good enough for someone unfamiliar with the concept.

If you are familiar with the RPC concept, web services are easily explained as one possible implementation of this general concept.

For people who are familiar with RPC (as am I), that serves as a starting
point.  But then the question is:  How do Web Services differ from
other implementations of RPC?

The individual W3C specifications of course explain most of the gory details. Whatever you pick from the standards in order to make the definition more specific, you can always raise the question afterwards "yes, but how does it differ from ..." For example, one could say that web services are meant to be independent of programming languages or that their deployment locations are supposed to be looked up through a registry. But that's also true for CORBA. In the end, I don't think we can or should inflate a definition of "web service" with such details, especially if we consider the actual broad and rather unspecific usage of the term.

An analogous situation might be asking "what is Java?". A possible answer: "a popular programming language and a set of related technologies". But how does it differ from other programming languages? What do you want to know precisely? Go read the specification so-and-so to find out.

For people not familiar with RPC... it isn't helpful.

I agree. However, RPC can be explained easily. Most people are (?) familiar with the concept of "procedure" and can (?) imagine the benefits of being able to invoke one across the network on another computer.

The standardized Web Services include
        WS-Security
        WS-Addressing
        WS-Notification
        WS-Reliability
        WS-Transaction
These standards just describe the calling conventions and communication protocols. But they don't specify any standardized web services and certainly cannot be said to *be* web services themselves.

Right.  How about this instead?

        A client interacts with a Web Service by way of its interface.
(described for example by WSDL).
        Some standardized Web Service interfaces include
                WS-Security
                WS-Addressing
                WS-Notification
                WS-Reliability
                WS-Transaction

However, none of the documents at hand explain what "interface" means in
the context of Web Services.

I guess that's the next question.

It is better than the previous try, but overcomplicating. Now you have not just a "web service", but also an "interface of a web service" to explain, as if they were distinct separable entities. This leads down the road of WS-jargon (endpoints, port types, etc.) No such dilemma arises from my irreverent definition.

Best regards,
Jan Ploski

Reply via email to