Prism is a pattern of modular development, used to produce “very large” applications. The current platforms that Prism targets are WPF and Silverlight. Prism was developed by Microsoft and is available to the development public as an open source project here.
The basic premise of Prism is one of divide and conquer. The divide is cleverly performed by using loose coupling of modules (in English that means that modules know little if anything about each other).
Prism includes a practice referred to as Unity. The Unity container is responsible for providing interfaces to modules and objects on request and acts as the central port of call that modules use to communicate with other modules.
There is a very good set of videos giving examples of Prism on the Channel 9 site here.
The latest version combines a second practice known as MEF (Managed Extensibility Framework). This is another Microsoft produced open source project. MEF uses clever techniques to identify requirements in projects, at runtime, by analysing “import” and “export” directives that exist only in the Metadata of the project. MEF is designed to allow for a plug-in style environment, like the Visual Studio IDE.
We are now using Prism and MEF on a medium to large scale project that is expected to have a lifespan of many years.
We will post updates on techniques as we progress on the project. I must say it’s good to be back on hard-core Silverlight development after a spell of APS.Net development.