At the beginning, applications had all the code for all functions in the same place. The maintenance for these applications was difficult because of the quantity of code and the functions in the programs.
After that, distributed applications were considered. These applications have one part of the code on the server side and the other part on the client side. This period was called the time of the client/server applications. The client/server applications were useful for user interfaces, but they required a good design and good capacity or the application easily could get out of sync and cause issues.
After the client/server applications, the programmers developed applications by using different technologies. Some of these technologies are RMI/IIOP, CORBA, DCOM, and others. This period was called the time of the distributed technologies. During this time, applications were running over heterogeneous platforms.
Developing applications with technologies such as RMI/IIOP, CORBA, DCOM, and other similar technologies, is a difficult task. You should have high-level skills in using these technologies. For this reason, applications started to be implemented with the usage of web services. When you create applications that are based on service-oriented architecture (SOA), you are using a standard language called XML. XML is used to define the input and output of the services call, which can help decouple and promote a tiered approach because the caller of the web service does not need to know anything about the platform.
When we talk about service orientation in this book, we refer to SOA. SOA is an integration architecture approach that is based on the concept of a service. The business and infrastructure functions that are required to build distributed systems are provided as services that collectively, or individually, deliver application functions to user applications or other services.
SOA specifies that within any given architecture that there should be a consistent mechanism for services to communicate. That mechanism should be loosely coupled and support the usage of explicit interfaces.
SOA brings the benefits of loose coupling and encapsulation to integration at an enterprise level. It applies successful concepts that are provided by object-oriented development, Component Based Design, and Enterprise Application Integration technology, to an architectural approach for IT system integration.
Services are the building blocks of SOA, providing interfaces to functions out of which distributed systems can be built. Services can be started independently by either external or internal service consumers to process simple functions, or can be chained together to form more complex functions and to quickly devise new functions.