So far, this book has focused on framing the issue and explaining the context for ESA. The explanation has covered the business value and the general outline of how ESA creates value. This chapter dives deeper into the structure of ESA and covers the mechanisms that will be implemented at every level of enterprise software to make enterprise software simpler to adapt and change and to improve reuse across the board.
The challenge of understanding ESA is that, like mathematics, ESA defines a simple set of operators and primitive constructs that you can apply in many ways to a huge number of problems. Simple examples based on simple assumptions get the idea of ESA across. But the operators and building blocks of ESA are so flexible and powerful that almost any general statement has an exception.
For example, do composite applications consume services or can they also be service providers? Well, most of the time, composite applications are service consumers. They use enterprise services from service providers to do their work, and that's that. But there is no barrier that stops a composite application from being a service provider as well and offering services constructed inside of it to other composite applications. It might not happen often; it may be hard to do, but it can be done.
The concept of business objects offers a similar challenge. Business objects are collections of related functionality and data that bring together and encapsulate something ...