The biggest difference in architecture, compared to the default model in MEF, is that there exists a loose coupling between the ways that definitions are provided to the framework. In the default model (at the time of this writing MEF Preview 4 is the latest
version) there is a tight coupling between the model and the way definitions are provided, with the help of attributed.
In the provider model there is an abstraction layer in place which enables definitions to be provided in multiple ways, with the ability to add new ways as you desire.
The top layer is known as the definition provider layer. These are the actual implementations which enables specifying definitions in various ways. In-between the definition providers and the provider model exists an abstraction layer.
In this abstraction layer there are a set of data transfer objects which exists to help map the input from the definition providers to a format that the provider model can work with. So all that’s needed is to make sure these objects are instantiated the correct
way and the provider model will be able to use the new definition provider.
The data transfer objects exposes the functionality in the provider model which can be controlled by the definition, for example the name of the contract.