| ||
In this chapter, we've focused on the theory behind distributed systems, specifically , those based on distributed objects. The key to success in designing a distributed system is to keep clear the distinction between a logical and a physical architecture.
Logical architectures exist to define the separation between the different types of code in our application. The goal of a good logical architecture is to make our code more maintainable , understandable, and reusable. Our logical architecture must also define enough tiers to enable any physical architectures that we may require.
A physical architecture defines the machines on which our application will run. An application with several logical tiers can still run on a single machine. We also might configure that same logical architecture to run on various client and server machines. The goal of a good physical architecture is to achieve the best trade-off between performance, scalability, security, and fault tolerance within our specific environment.
The trade-offs in a physical architecture for an intelligent client application are very different from those for a web application. A Windows application will typically trade performance against scalability, and a web application will typically trade performance against security.
In this book, we'll be using a 5- tier logical architecture consisting of presentation, UI, business logic, data access, and data storage. We'll be using this architecture to create Windows, web, and web-services applications, each with a different physical architecture. In the next chapter, we'll start to design the framework that will make this possible.
| ||