Saturday, January 26, 2008

Will REST Provide a Better Experience?

Service Oriented Architecture (SOA) is an architectural style that promotes loose coupling of business processes through services independent of platform, time and location. When business discussion turns to SOA, web services are often used as the classic example for producing these loosely coupled components. What usually is not discussed are the challenges presented with SOA implementation based on classic web services. Some vendors have created tools to ease implementation, but it is important to understand that with a classic web service there's a lot happening behind the scenes and the programmer should have knowledge of how it works.

Classic web services are built upon the following five standards.
- SOAP (Simple Object Access Protocol)
- XML (Extensible Markup Language)
- HTTP (Hypertext Transport Protocol)
- WSDL (Web Services Description Language)
- UDDI (Universal Discovery Description Integration)
Keep in mind that while there are standards for the languages and protocols, each implementor may go about creating the solution in a different way. This is particularly important when it comes time to maintain your web service. Some solutions do a better job at hiding the complexity than others. Bottom line: There's very little that is simple about the classic web service.

When I approached traditional "web services" in school, I was in a .NET environment. Credit must be given to Microsoft with their implementation. It was so simple. The wizards were intuitive, changes were easy to make and all of the hard stuff was carefully hidden from the user. I should have understood that given the list of standards involved there was a lot of 'black magic' happening.

Having approached traditional web services professionally, it's always been a severe pain point. The java tooling (at least that provided by IBM) attempts to hide the complexity from the user, but it's been my experience that things never work quite as they should. This forces the developer to play with the "black magic" which never provides me with a really good, warm feeling inside.

I've been doing some preliminary reading on REST. This looks good. Really good. I'm up for anything that still provides platform independent exchange of information without the pain of RPC.


Jon said...

Just be grateful that you didn't have to implement a web service submission at the socket level like I did. Then you really get to know the bloated guts of the process.

Joe said...

Yes, but at least you wrote the 'bloated guts', and I'd like to believe that as you were writing them, you tried to make sure that your code would be easy to refactor in the future. My issue with the state of the traditional web service is that the tool sets I've been exposed to (for Java) simply aren't rich enough. Business tends to tout SOA as an efficient, time saving architecture. If you need to delve into the standards and write code at the socket level, we all know you're not saving time. But you probably had a lot of fun. Is this just another place where one finds that there's no free lunch?

Anonymous said...

Ahh....Microsoft and Black Magic. Suprise Suprise.