The Composite UI Application Block (or CAB for short) has a lot of terminology to understand. In order to follow the downloadable samples you should first brush up on what the various components of CAB are.
Shell
The Shell is basically your application. The Shell’s responsibility is to load and initialize UI services, modules, and other CAB components. The Shell itself won’t contain many direct UI elements (these will be added later). The Shell will typically house UIExtensionSites and Workspaces.
Module
Modules are basically packages of WorkItems, which we will see next. Modules are defined in the ProfileCatalog.xml file so CAB can load them and they have constructs for initializing. Each module resides it its own assembly.
WorkItem
Your use cases will generally become WorkItems. A WorkItem is a container for UI elements, model classes, state, and services that are required to satisfy the use-case. If you were using NHibernate, this would be an ideal place to demarcate your ISession boundary.
Workspace
Workspaces are the containers on your UI that SmartParts (User Controls) can be loaded. Examples include DeckWorkspace, TabWorkspace, etc. Workspaces can be moved around and replaced at runtime easily.
UI Extension Sites
UI Extension Sites are static UI elements, such as Menus and Toolstrips, and as such are added directly to the shell. Different work items can access these to modify their contents. A good example is setting status text in a status bar at the bottom of the application shell or adding menu items depending on what tab has focus.
SmartParts
SmartParts are your basic user controls, only denoted with a [SmartPart] attribute. Think of these as the “View” in Model-View-Controller. As such, these will contain controls, however all logic will be deferred to a controller or presenter class.
Service
As you might expect, Services are very vague. They can be any type of service that provides your UI with logic or data. In a CAB architecture, you will abstract most of the data and calculations to services that are consumed by the UI. Out of the box CAB comes with a Catalog service for loading modules, a State service for persisting WorkItem state to a file or isolated storage, and an authorization service.
I think that gives us a good overview of the main terms and responsibilities. Until next time…