While the enterprise procurement application in its present form addresses the basic functional requirements of ordering parts, traditionally enterprise computing has had much stronger non-functional requirements which the current architecture does not address. The challenge is, therefore, to meet the following non-functional requirements to make the application truly dependable:
Given the modular and extensible nature of Web services, we can add each of these features into our architecture in a piecemeal fashion, building up the overall functionality of the system one step at a time until we can support all of our non-functional requirements, as shown in Figure 13-1.
Figure 13-1. A Secure, Mobile, Configurable, Transaction-Aware Web Services-based Application
It should be kept in mind that while the overall architecture of a complete system may resemble that shown in Figure 13-1, Web services uniquely among current distributed systems technology allow a great deal of flexibility in the composition of underlying infrastructure. While as developers we may be expected to build secure, mobile, transaction-aware, reconfigurable services, we may equally be expected to produce simply a secure Web service. As we progress through this chapter, remember that each highlighted technology can be taken as a discrete component in its own right, and does not depend on any of the other technologies. That is, we are free to mix-and-match technologies in keeping with the general Web services philosophy, and so each example can be seen as a specific application in its own right and the examples can be taken as a whole composite application.