A software system consists of components that implement different aspects of the processing. There are many different ways to create the architecture for a system—its components and their relationships and interactions. A service-oriented architecture (SOA) is a system design upon which the solution is described in terms of one or more services. Normally, to promote reuse, the services are distributed on the web. When a program needs to use a service, the program exchanges messages with the service, normally through the use of a remote-procedure (method) call, as shown in FIGURE 11.1. This chapter examines the use of web services to implement a service-oriented architectural design.