The plain vanilla Web services technologies we have seen in Part 1 allow us to take disparate applications on a multitude of platforms written by a plethora of vendors and provides a simple, elegant solution to the kinds of problems that engineers and IT professionals encounter on a daily basis. However, up until now we have only seen the tip of the iceberg. And, each of these technologies really can do all that they promise. The problem is that once you cut through the hype, they actually don't promise a great deal.
Certainly, we are told that we can link systems together, and we can. We are also told that heterogeneous platforms aren't a problem any longer, and that is largely true, too. However, what the wave of Web services hyperbole manages to evade is the fact that plain vanilla Web services technology does not support the kinds of requirements that enterprises demand. Luckily, the plain vanilla Web services model can be extended to support these enterprise requirements.
In Part 2 of this book, we look at how to support the requirements placed on robust, enterprise-class applications. Although the Web services world is still settling into its groove, there are already a set of front-running technologies that can be used to address many of the enterprise requirements for Web services and Web services-based applications. Over the course of this section, we explore those technologies and show how they can be put to use today. We also describe the key Web service technologies and standards that can be used to address the following enterprise requirements:
Chapter 5: Conversations. WSDL is sufficient for describing the static aspects of a Web service's interface, but it does little in the way of prescribing the ordering of its operations. Many enterprise systems have both a static and an interactive aspect to their system interface. In this chapter we look at how to implement such system interfaces within the context of a Web services environment. More specifically, we look at how to "converse" with a Web service over successive invocations.
Chapter 6: Workflow. If a business is the sum of its processes, the orchestration and refinement of those processes is critical to an enterprise's continued viability in the marketplace. Those businesses whose processes are agile and flexible will be able to adapt rapidly to and exploit new market conditions, while those businesses whose processes are poorly managed and inflexible will fall by the wayside. In this chapter we show how the application of workflow technology to Web services can support the creation of adaptive enterprise systems to support rapidly evolving business requirements.
Chapter 7: Transactions. A transaction, a critical component of dependable computing systems, is a unit of work that either succeeds completely or fails without leaving any side effects. A common example of a transaction use-case is where money is to be moved between bank accounts. In this case the goal is to ensure that the money both leaves the sender's account and is received by the recipient's account, or if something fails, for it to appear as if the transaction itself logically never occurred. In this chapter, we describe technologies that support transactions within a Web services environment, and develop schemes for supporting different levels of transactional integrity for loosely coupled and untrusted systems.
Chapter 8: Security. Security is a cornerstone of enterprise systems. Companies have confidential information and data that simply cannot be accessible either maliciously or accidentally by an unauthorized third-party. In this chapter we look at the security issues and attacks that are common to enterprises, including those security attacks that are in many ways facilitated within Web service environments. Then we describe the key technologies that can be used to address these security issues and prevent attacks.
Chapter 9: Quality-of-Service. Exposing a piece of business logic as a Web service is not difficult; architecting the system so that it meets the needs of potential users with respect to latency, performance, reliability, and so on is the hard part. In this chapter, we discuss quality-of-service (QoS) and how it pertains to Web services. We define the specific QoS metrics that are most often important in Web services, techniques to measure performance, and describe best practices and architectures for building Web services that support various QoS guarantees.
Chapter 10: Mobile and Wireless. Mobile and wireless devices have moved away from just a novelty within corporations to be critical tools within the arsenal of 24x7 enterprise operations. Many challenges exist in the development of mobile systems that are usually not an issue in the development of non-mobile systems. Issues such as application energy consumption, network bandwidth utilization, limited computational resources, and small form factor user interfaces all come together to make the design of mobile applications very difficult. In this chapter, we look at the issues that are inherent to the development of mobile systems, discuss the impact of Web services on mobile enterprise environments, and describe best practices for developing mobile Web service systems.
Chapter 11: Portals and Services Management. In this chapter, we look at two technologies that further position Web services as a critical foundation on which to build enterprise systems. Each of these two technologies is related to systems that exist today, but address issues arising from the use of Web services within those systems. The first one addresses how to build user-facing portals by simply aggregating back-end Web services, while the second addresses how to manage a growing number and type of Web services within enterprise environments.
After reading Part 2, you will have a strong understanding of many of the key requirements of enterprise systems and how to meet those requirements within a Web services environment using advanced technologies that are layered on top of the vanilla Web services platform. Refer to Section Three for a detailed, step-by-step guide and lots of sample source code to actually develop Web services and client applications using these higher-level technologies.