In an SOA solution, there are four key areas which are subject to change: contract, address, binding, and implementation.
Let's take a look at the contract. As we've discussed back in Chapter 4, contracts explain what operations the service exposes, and the types of messages and exchange patterns supported by this service. So as you can imagine, there are cases when all of those items are subject to change. A widely-used service, which provides an abstraction of business functionality is likely to be extended with new operations and capabilities. For example, when first created, a service may have operations for publishing both new and changed invoices. Some time later the service adds the capability to query and return existing invoices. Users may then request the capability to only return the status of a given invoice. Over time, our service has additional operations added while keeping the existing operations in place.
Similarly, a contract may...