Design

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies.
This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The Composite Web Application Block provides an infrastructure that helps you build Web clients composed of independent, yet cooperating, modules. The application block is usable out-of-the-box, but it is designed to be easy to extend and modify. This topic explains the design of the application block so that you can fully use its capabilities or extend it for a specific purpose.

Design Goals

The Composite Web Application Block is designed to support the following extensibility and developer productivity objectives:

  • Allow different teams to create modules that can be independently deployed to a Web site.
  • Allow developers to easily implement Web pages that use patterns that separate user interface design code from business logic, such as Model-View-Presenter and Model-View-Controller (MVC).
  • Allow cooperating modules to contribute and use shared infrastructure components.
  • Allow modules to define and consume authorization functionality for common application operations.
  • Allow the Web site that hosts the modules to determine the appearance of shared module elements (such as site map nodes).
  • Allow extensibility for customizing its behavior for special or uncommon scenarios.

These design objectives are achieved through the following strategies:

  • It provides an XCopy deployment model for independent modules (it does not require complex registration operations to deploy a module to an application).
  • It uses dependency injection techniques to simplify the code necessary to implement the Model-View-Presenter and MVC patterns.
  • It provides a module loading infrastructure and allows modules to perform startup operations, such as registration of site map nodes. Modules can also register shared components for use by other modules or the host Web application.
  • It includes an extensive set of unit tests with the source code. Developers can modify the application block and use the test to verify its functionality.
  • It separates the interface and implementation for the application block behaviors.