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.