WHAT'S IN THIS CHAPTER?
Understanding design patterns and principles
Working with the Model View ViewModel pattern
Exploring Silverlight frameworks (MEF and PRISM)
Defining a data access strategy
Designing with performance in mind
When architecting your Silverlight application you need to keep in mind the functional and non-functional requirements.
Functional requirements include navigation, workflow, and security.
Non-functional requirements include number of concurrent users, performance, scalability, maintainability, and reliability.
Whether your application is configured to run as a web browser plug-in or installed on an end-user machine (out-of-browser application), you need to understand the tradeoffs involved in and best practices for designing an n-tier application. Addressing these functional and non-functional requirements is no small task. A solution that increases performance may impact scalability or the maintainability of your application. Fortunately, n-tier application design is not new and several well-documented approaches exist to address functional and non-functional requirements.
The most proven approach for architecting n-tier application is to focus on building loosely coupled components. Each component is focused on a single or small set of responsibilities (features). This approach increases the maintainability of your application and allows you to easily address performance/scalability issues that might come up. For example, if ...