I tried to ignore this REST term for a while. But it keeps come up, so
I take a plunge and check it out. Yes, people often refer it to
http://en.wikipedia.org/wiki/Representational_State_Transfer
So, I check it out.
My first impression: it's non-sense. My deeper impression, it's nothing
more than a catch phrase. Yes, for those who bought into this
term/architecture may get offended, but let me explain.
First, the term REST, a noun to me because it IS an architecture name.
Then why would RESTful? it sounds like REST is adjective. A catch phrase.
Second, reading the page, it is recognized that REST is very broad. So,
using this page alone, there is no way I cannot develop a system that
communicate with others in a standard way. Communication without
standard? It's not communication. For example, wikipedia compare REST
to RPC. RPC is not a standard. You cannot say, let's program it in RPC
and we connect to each other.
Third, principle. This things based on stateless, client/server
protocol. With a big exception that the web is not just stateless.
Taking the "stateful" out of the web, you cut most of its usefulness.
Without cookies and url re-write, there's no commercial app on the web.
Yes, you can do something else like cookies, like submit something to
make it like cookie, but cookie is not the point, the point is
stateful. "stateful" is good. Repeat that 10 times.
The 2nd principle, well-defined operations. Take the web for example:
post, get, put, delete. How is this different from SOAP? They even use
less operation. Get/Post all the time (this may be not accurate, but
the point is that they also use the web's limited, well-defined
operations). But that's not enough, so they build on top of its any
operations needed. This is so that people can do things differently on
it. So, one can argue that REST does not need that and can handle the
job. Let's see. With REST, can one update a shopping card? No, you
can only do a GET/PUT/POST/DELETE? Sure, you can update a shopping card
using REST. They use one of the operation above, but I am sure they use
some way (through url?) to signal the update of the shopping card. How
is this different from SOAP over web? Nothing with respect to the
well-defined operations. Same basic web operations, with some way to
signify a higher level of operation. The difference is in how that
higher level of operation is defined. Whether in the header (or url),
in the body, what format, etc.
The 3rd principle, universal syntax. The same URL mechanism is used to
access resource. How is it different from SOAP of accessing a web
service end point? Look up and things like that is only required if you
don't have the URL. One can argue that they are not different, but that
is the principle. But what make this principle unique? People have a
standard on IP/port to communicate in TCP/IP. They have standard (at
least in the US) on snail mail address to get/send mail to someone. One
thing I can see that SOAP may have 1 end point, but different operation
may give you different meaning, different resource. This is another way
to put another abstract level above the URL. So, my interpretation is
that REST use different URL for different resources, and different
operations. While SOAP has a single end point, the depend on the
request, they can get different resource, or issue different command. I
think SOAP is better. This concept is like package in Java, or
namespace in general. You have [endpoint,operations] in SOAP or
endpoint_operations in REST. One can argue that SOAP does not have a
standard on the operations. This is the beauty of it. There's millions
of different apps out there, who know what operations to defined. If
REST forces you to 5 operations for example (this is not the case), what
good is it? Otherwise, if it defines millions of operations using the
same way to represent operation (URL), but the meaning of each operation
is depend on whoever make it defined it, then there's no relevant
difference with SOAP here.
The 4th principle, the use of hypermedia. The idea here is links inside
content. I don't see how SOAP cannot send links in its content which is
also XML. With SOAP, the links is not universally defined like the <a>
tag in HTML. However, the idea here is not about how to define the tag,
but way to link from one point to another.
So, there you go. If you don't know REST, you can check the link on top
(or other resource). Read my comment (optional of course) and get your
own opinion on it. To me, it's just a catch phrase. However, its use
maybe important and widespread. The point is that if I coin WEB as
"ASDF", then "ASDF" is as important and and widespread, but what
significance is in the new name?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]