Design

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 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, such as View-Presenter and MVC, that separate user interface design code from business logic.
  • 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 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 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.

Related Topics

Last edited Nov 20, 2007 at 11:35 AM by ejadib, version 2

Comments

No comments yet.