Plugin Architecture from Soudaminis blog
While developing a software project / application we come across many requirement changes. Today we need certain functionality to be used in the application, tomorrow we may need to add/remove/change a similar functionality. This results in significant code changes in the application.
We can avoid this problem by using the plugin architecture. In .NET we can achieve this by using reflection to dynamically load assemblies. So we never directly refer to the assemblies. At run time we simply iterate through a directory containing the assemblies and load the required ones.
Lets consider our Application “MyApplication” will use “ComponentA”, “ComponentB”. In future we may remove some component or add “ComponentC”. So how can we achieve this without changing the application code? A possible solution is below.