Web services technologies are fundamentally changing the software industry, making the role of enterprise IT organizations more strategic, and recasting the software vendor-consumer relationship. Web services are also being hailed by CEOs, CIOs, and CTOs as the next-generation vehicle for driving topline growth and controlling bottom lines. But, simply jumping on the Web services bandwagon won't lead to corporate success. Web services are simply a platform; how companies implement a solution using this new technology determines their success and ultimately their return on investment (ROI). In this book, we take a no-nonsense, strategic view of developing enterprise Web services and applications: looking at where the technologies are, where they are going and how companies need to architect their own Web services solutions to not get left behind.
Web services platforms provide the functionality to build and interact with distributed applications by sending eXtensible Markup Language (XML) messages. Additional technology layers are constantly emerging, others are being refined, and still others are being discarded. The platform is essentially a moving target.
To stay on the leading edge, companies are building and deploying their applications while work on the underlying platform continues. And, as with any industry standard initiatives which require building consensus, the Web services platform will remain a work in progress for some time.
How can you build any meaningful application, let alone mission-critical enterprise applications, on such a platform? If you are a developer or an architect charged with building Web services or applications that consume Web services, you have to know where the platform is today, and where it is going. Otherwise, the endless pit of application rewrite and maintenance overhead will far outweigh any benefits that can be garnered from this promising new technology.
Real world, enterprise Web services and applications cannot be developed by simply reading through the Simple Object Access Protocol (SOAP) or the Web Services Description Language (WSDL) specifications. Developers must understand a number of different standards and technologies, and more importantly, their inter-relationships as well as best practices for their use.
Consider an e-business application that requires interaction between multiple partner Web services. Understanding SOAP and WSDL gives developers the ability to write Web services and consume them within their application. But, how must the application be architected to be reliable in case some Web services become unavailable? How can an application be written to seamlessly scale and support new Web services from a growing list of strategic partner companies? What are the best practices for developing mobile Web service applications, and how can individual Web services be created to support quality-of-service (QoS)? How can transactional guarantees or atomic coordination between multiple, independent Web services be supported by applications? And, how can all of this be done securely so that corporate and individual information and intellectual property are safeguarded?
In this book, we focus on how to develop Web services and applications within real world enterprise environments. We describe not only the vanilla Web services platform consisting of SOAP, WSDL, and UDDI (Universal Description, Discovery and Integration), but also build on this to include the other technologies, standards, and emerging standards that provide support for transactions, security and authentication, mobile and wireless, quality-of-service, conversations, workflow, interactive applications and portals, as well as systems management.
We discuss the opportunities represented by Web services and, more importantly, describe best practices and architectural patterns for building enterprise systems that position you and your organization to most fully leverage those opportunities. We do not summarize any one Web services standard, but instead provide a sufficiently thorough discussion of all of the critical technologies and standards, as well as their inter-relationships, that are necessary for building enterprise Web services and applications. Our focus is on developing enterprise Web services and applications based on industry standard Web services technologies, not on summarizing standards.
Let's get started by reviewing what Web services are and why they are important.