Application architecture is a science of compromises. Developers of distributed applications face countless design issues as they move local components to the server and bring three-tier design into the .NET world. In this chapter, you learned basic concepts about how to balance the reality of network communication and limited server resources with solid, extensible designs. To see these principles in action, you can refer to the case studies that make up Part III of this book. |