Thursday, May 05, 2005

Web Services: Applied for Practical Success...

Web Services are everywhere. They have achieved the success that many of its predecesors could not achieve. So how do we define success...? Seamless Integration? A bit!, Sucessful projects? A few!!; Interoperability? Maye!!!
At this point, success is acceptence of the technology in the mainstream. Yes, web services are here to stay...

So what is needed to get from "A bit", "A few" and "Maybe" to Successful projects, that Interoperate and Work in a Secured, fast, and maintainable manner.

In this post I discuss some critical elements that drive successful Web Services implementations:

1. The More the better: Services need to be Coarse Grained, and pass large amount of data between Clients and Services, rather than make multiple requests for data. Tip: Only pass data that is needed.


2. Data types passed: Services should pass Non-object data(such as Lists, ResultSets), to keep clean interoperability. Object passing is not only more work on both ends, but it is also tightly coupled. This is a practical need for web services to succeed. Tip: Pass XML data.

3. Async communication: For robust implementations, assume a non-reliable service between clients and Services. Use a message based implementation for interacting with Web Services. This will lead to long term success. Tip: This is specially applicable to legacy code integration. Build adapters to integrate with legacy applications in a messaging framework.

4. Log'em: While implementing services, always keep a log of the clients that access the service. The extent of the logging will depend on business needs, but some level of logging is mandatory.

5. Secure them: Build security at a message level, so requests can be identified (Digital Certificates), and messages are safe in transit(XML Encryption)

Some of these tips make the application less Object Oriented, but are critical to success of Web services applications.