The Plugin Framework
Through out the documentation you have seen the plugin framework in use. Some times it is obvious, like when we get the logging module by using Composable.GetExport<IXLogger>()
. Other times it is not as obvious, for example when you implement an interface such as IXSocketAuthenticationPipeline
.
The plugin framework is a stand-alone library that can be used outside of XSockets when you need modular architecture. The plugin framework was built with MEF (Managed Extensibility Framework) in mind, and XSockets actually used MEF in the beginning before we built our own plugin framework.
If you know about MEF you know that it is all about exporting and importing. Since we export and import interfaces we do not need to have references to the classes implementing the interfaces. This gives us true modularity since we can add/remove assemblies without the need for recompiling. If you want to you can actually add modules at run-time with the plugin framework.
So let's get started...