Project Description
This project provides a new reference implementation for the Composite WPF libraries. During the development of this reference implementation I have extracted some useful classes into a new library called ‘Composite Extensions’.The Test Suite reference implementation was originally developed for the Composite UI Application Block. You might already know this application from one of the Websites:
- Diploma Thesis: Evaluation of Plug-In Architectures for a Test Suite
- CodePlex: CAB Extension / Test Suite reference application
- CodePlex: Smart Client Contrib
Highlights
- Separated presentation through Presentation Model (often referred as Model-View-ViewModel pattern).
- The Composite Extensions library contains the PresentationModel base class and the IView interface that helps to implement the Presentation Model pattern.
- Collaboration with the model is done through weak events. This ensures that no memory leaks occur. See: RtfEditor.Module / RtfEditorPresentationModel.cs or Help.Module / HelpPresentationModel.cs (here is a custom WeakEventManager used)
- Composition of views that uses a separate PresentationModel for every view. See: TestDevice / FGenDevice.ControlView / Views: ConfigurationView.xaml is used by ConfigurationEditWindow.xaml and FunctionGenView.xaml
- Document Management (New, Open, Save and Close documents): The Infrastructure.Module / Services / DocumentManager and the RtfEditor.Module shows how document management could be handled in a composite application. The DocumentManager service handles document lifecycle tasks and keeps track of all registered document types. This service mediates between the user interface and the document. A module developer, who has to implement a new document type, does not have to care about things like configuring the OpenFileDialog component or enabling and disabling the save buttons.
- Enterprise Library example modules: The three modules LogViewer.Module, LogViewer.Demo and Message.Demo are dedicated to show how the Logging Application Block and the Exception Application Block works.
- Modules deployment: The Test Suite reference implementation provides every module a separate directory to avoid file naming or versioning conflicts between the modules. These directories are found under the directory Modules. The Libraries directory contains all the libraries used by the Test Suite and its modules (e.g. Enterprise Library). By using sub directories, the CLR has to be told where it is going to find the assemblies. The Shell adds the probing element in the application configuration file (App.config) to accomplish this.