Building a plugin architecture with Managed Extensibility Framework - Part 1

Starting today, we embark on a journey exploring a sequence of articles delving into the creation of a plugin architecture within the .NET framework. Initially, we will delve into the foundational concepts before elucidating them through the utilization of the Managed Extensibility Framework, an integral component native to the .NET framework.

One of the most advantageous qualities a software can possess is indeed extensibility. This essentially means that the design of our programs should facilitate the seamless integration of new capabilities or features without necessitating extensive refactoring or introducing fragility. As engineers, it is crucial for us to identify these points of extensibility within the codebase, or, if necessary, swiftly adapt certain areas of the program to imbue it with this quality.

We will explore how this capability can be achieved through well-crafted design patterns (such as a strategy or a template method). However, we will also uncover certain limitations inherent in these patterns. Subsequently, we will transition to a more sophisticated yet widely adopted approach centered around plugins. Through this journey, we will delve into the concept of a plugin architecture and its implications.

The subsequent textbook proves useful for concluding this series.

Software Architecture by Example: Using C# and .NET (Michaels)

Without further ado and as usual, let's begin with a few prerequisites to correctly understand the underlying concepts. Continue here.