I've been reading and thinking about RESTful web applications and
services quite a bit recently. The last large web application I wrote
evolved into a RESTful web application: readable, bookmarkable URLs;
resources with unique addresses; and alternative renderings of a
resource depending on the request.
It would have been a short step to complete this evolution and then
expose the programmable interface as RESTful as well. This all
happened without being aware of REST: it just seemed like the logical
way to design a web application.
REST is starting to make a big splash now. Web services have been
around for a few years, and many systems have been built upon
them. Beyond the architectural considerations, it seems that the main
differences between the two approaches is that it is easier to write
clients for a RESTful service, and it is easier to write the service
using SOAP.
Up until recently most of the development of web services has been for
systems that do not cross organisation boundaries. Therefore, the
consumer of the web service has usually been the programmer who wrote
it. Or, if not actually the same programmer, then a programmer in the
same organisation. SOAP works well in this environment as one
development tool can be mandated and this tool can generate all the
painful code required to consume a SOAP service, and when the SOAP
service changes every single consumer can be informed.
However, now there are many services being exposed on the Internet
that provide useful data. Services such as Google Maps. It is becoming
more common to write applications that consume a handful of services
from different organisations. Suddenly, it is more important for the
client to be robust and easy to write.
Unfortunately though, it is still much easier to write the service
using SOAP than REST. Most web servers don't deal well with the
concept of the URI not referring to an actual file on disk, and there
aren't many frameworks that put resources rather pages at the
centre. There seems to a hole in the eco-system here.
I'm going to take a shot at filling it. For this project, as I'll be
doing this for interest and to learn, I'm going to talk about what I
do as I do it. Ruby On Rails will ultimately provide the full RESTful
service framework that the world needs; I'm not expecting to make
money off this project. No need to hide anything.
I've started writing some code, and planning a simple design. I'm
going to make some apparently unusual technology choices, but this is
for my learning. I'll talk about the technology and design in some
upcoming posts.
Sunday, 12 August 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment