- Managed Add-in Framework
- The assemblies for these segments are not required to be in the same application domain. You can load an add-in into its own new application domain, into an existing application domain, or even into the host’s application domain. You can load multiple add-ins into the same application domain, which enables the add-ins to share resources and security contexts.
The add-in model supports, and recommends, an optional boundary between the host and the add-in, which is called the isolation boundary (also known as a remoting boundary). This boundary can be an application domain or process boundary.
The contract segment in the middle of the pipeline is loaded into both the host’s application domain and the add-in’s application domain. The contract defines the virtual methods that the host and the add-in use to exchange types with each other.
To pass through the isolation boundary, types must be either contracts or serializable types. Types that are not contracts or serializable types must be converted to contracts by the adapter segments in the pipeline.
The view segments of the pipeline are abstract base classes or interfaces that provide the host and the add-in with a view of the methods that they share, as defined by the contract. Source : MSDN