Many people who have worked with enterprise applications over the years have realized that building maintainable applications that naturally evolve over time is quite challenging. If the application consists of many modules, it is paramount that each module be as self-contained and decoupled from other modules as possible. Otherwise, over time, the modules become more and more tightly-coupled which generally results in spaghetti code.
Prism is a codename for the Composite Application Guidance package which consists of libraries (DLLs) that you can reference in your Silverlight/WPF projects. As such, Microsoft Patterns & Practices is providing documentation, written tutorials, videos, etc., in order for software developers to get up to speed with it. You can check out the CodePlex site for Prism @ http://www.codeplex.com/CompositeWPF
Prism empowers developers to create modules that encapsulate a certain piece of functionality. Each module would be responsible for emitting a view, which would then be injected into a particular region that is present inside a containing shell. The bootstrapper is responsible for initializing the shell and enumerating the available modules in the ModuleCatalog. There is also an EventAggregator that essentially acts as a Mediator, and all event publishers and subscribers use the EventAggregator to publish and subscribe to events. As such, one module may fire an event, and a multitude of subscribers may handle that event. Therefore, the modules are truly decoupled from each other. In addition each module uses a Model-View-ViewModel (M-V-VM) architecture to separate the View from the underlying model using data binding and the Command pattern. I have previously blogged about a fully unit-tested sample application that showcases the M-V-VM pattern and the Ninject (Inversion of Control) IoC container @ http://www.leonidsorokin.com/blog/post/Architecting-Designing-Silverlight-2-Applications.aspx. By the way, Prism includes the Unity IoC (Inversion of Control) container out-of-the-box although you are free to plug-in other IoC containers in replace of Unity.
In my opinion, the real power of the Prism framework is that it uses a large number of popular design patterns, with the hope that the composite applications that you build as a developer are as maintainable and scale well over time. In most documents, design patterns are presented in isolation, but the beauty of Prism is that it amalgamates these design patterns in a form of libraries, reference implementation (Stock Trader WPF application), and written guidance documentation. You can find an excellent introductory series of screencasts that showcase Prism @ http://compositewpf.codeplex.com/Wiki/View.aspx?title=Learn%20Prism
On a side note, I have found another framework that Microsoft appears to be developing with the developer community, although so far it is only in a preview state - it called MEF (Managed Extensibility Framework). As far as I understand, this framework will ship with .NET Framework 4.0. I believe MEF is some kind of grandiose Publish/Subscribe & component discovery mechanism which by decorating properties/methods with Import/Export attributes enables a developer to basically dump a bunch of modules in a folder and have them discover other modules during run-time and not during design time, and actually use them. Also, unlike Prism, which relies of WPF, MEF has no requirement on XAML, so theoretically, it can be used with other-non WPF stacks, such as Windows Forms. MEF is still early in its development but it feels rather promising. Hopefully, MEF will be ported over to Silverlight at some point. You can check out MEF on CodePlex @ http://mef.codeplex.com