Web Services, Part I

Over the last 4 years the internet has been undergoing a sort of revolution in terms of web based software decelopment, this revolution has been brought on by a combination of factors not the least of which is web services. Everyone has at least heard of Web 2.0 but there is also Web2, Web 3.0 and the Internet of Things all of which represent some form of evolution on the internet. I've included the links to each of the definitions and also a video (at the end) where Eric Schmidt answers some questions on this new nomenclature.

While there have been lots of advances in web-based software development over the last 4-5 years, the biggest changes are just taking hold now. Sure, you can say Javascript, Ajax and even Flex had an impact on development (absolutely true) but there is no question that the advent of web services has had and will continue to have the biggest impact moving forward.

What is a web service? A web service is sometimes referred to as an API (application programming interface) but this is a misnomer since APIs have traditionally been used in "thick" applications where the API is directly embedded in the environment where the application runs (with some exceptions). For our purposes we'll call them web services and leave API out of the discussion. A web service provides a framework that can be leveraged by external applications as a means of syndicating content and services.

A great example of a web service is Google Maps, this service has become ubiquitous and is used on practically every website that has any address or location information. Basically, wherever you see a map think web service because that is how it was generated. Keep in mind that Google isn't the only map supplier on the internet, Yahoo ad Microsoft are two others that offer similar web services.

The number of web services is growing at an increasing rate, roughly one a day according to the ProgrammableWeb site. John Musser runs this site and does a fantastic job keeping all of this information organized and up to date, this is a great resource for learning about web services. As of this writing there were 1555 web services listed on the ProgrammableWeb site. The services offered range from the silly to the extremely useful and everything in between, I tend to think of web services as being similar to iPhone applications in that they are being produced at a predigous rate.

One of the fundamental problems with web services is the pure and increasing volume of the services available, sure you can use ProgrammableWeb to identify the service and some critical meta-data but in the end you'll need (as a developer) to dive into the details of the service in order to actually use it. Why is this a problem? There are currently over 1500 services that within a few years will be well over a million, how can any developer leverage that many services? They can't, not without some help.

Help is currently coming in the form of standards from the W3C organization, these new standards will allow the web services to be consumed in a consisten way. The idea is to provide a standard set of options that can be used to identify and access web services without any special programming. It turns out that this is pretty lofty goal, especially considering that the organization is out-of-touch with what is actually happening. For example, the original set of standards outlined a SOAP based model for deployment and consumption of these services but unfortunately the developers had already decided on REST as the preferred protocol. So, the W3C went back and decided to modify the original specifications to allow for REST based services to be defined in the context of SOAP!

There are other protocols as well, XML-RPC is one of the original protocols for sharing services and content. There are still others that exist and are being used everyday, trying to force the developers into a single standard doesn't make much sense to me and so far hasn't been successfull. Here are the three top protocols for leveraging web services: REST, SOAP and XML-RPC. Each of these three protocols have specific features and benefits over the other, the type of service and ultimately consumers should drive the protocol used. That said, many of the service providers have decided to support multiple protocols since picking the ultimate winner seems impossible.

In Part II I'll describe some of the services that are currently available, what they offer and how they are leveraged by developers. It is fairly obvious that web services are a major driver of the current internet revolution just look at Twitter, Facebook, Flcikr or GoogleMaps to see the amount developer adoption that is happening.

Stay tuned.

No votes yet
Groups: