Some material in this lecture is adapted from the teaching materials of the book “Web Services: Concepts, Architectures and Applications” and is thus Copyright © 2003 Gustavo Alonso, ETH Zürich and/or Copyright © 2004 Springer-Verlag Berlin Heidelberg.
All other material is Copyright © 2006 Kenneth M. Anderson
Web services are a form of distributed information system. Many of the problems that Web services try to solve, as well as the design constraints encountered along the way, can be understood by considering how distributed information systems evolved in the past.
— Introduction to Chapter 1 of our Textbook
![]() |
A client is any user or program that wants to perform an operation on the system. Clients interact with the system through a presentation layer. |
The application logic determines what the system actually does. It takes care of enforcing the business rules and establishing the business process. The application logic can take many forms: programs, constraints, workflows, etc. | |
The resource manager deals with the organization (storage, indexing, and retrieval) of the data necessary to support the application logic. This is typically a database but it can also be a text retrieval system or any other data management system providing querying capabilities and persistence. |
![]() |
Each box represents a part of the system. Each arrow represents a connection between two parts of the system. |
Adding boxes makes the system modular: this provides opportunities for adding distribution and parallelism. It also supports encapsulation, component–based design, reuse, etc. Adding arrows, on the other hand, adds connections that need to be maintained; more coordination is necessary. The system becomes more complex to monitor and manage. | |
The more boxes, the greater the number of context switches and intermediate steps to go through before one gets to data. Performance suffers considerably. System designers try to balance the flexibility of modular design with the performance demands of real applications. |
There is no problem in system design that cannot be solved by adding a level of indirection. There is no performance problem that cannot be solved by removing a level of indirection. |
![]() |
The functionality of a system is divided among several modules. Modules are typically not stand-alone components, their functionality depends on modules located in a lower layer. |
Hardware is typically homogeneous and the system is designed to be distributed from the beginning. |
![]() |
The presentation layer, application logic and resource manager are built as a monolithic entity. |
Users/programs access the system through “dumb” terminals, whose display is controlled by the information system. | |
This was the typical architecture of mainframes, offering several advantages:
|
![]() |
As computers became more powerful, it was possible to move the presentation layer to the client. This has several advantages:
|
![]() |
|
![]() |
|
![]() |
Middleware systems also enable the integration of systems built using other architectures |
![]() |
|
![]() |
|
![]() |
|