Я пишу приложение ASP.NET MVC 2, где разработчики могут расширять его с помощью плагинов. Я начал думать о том, как создать систему плагинов. (например, как у Joomla)
У меня есть некоторые сомнения относительно того, как это сделать. Я искал по сети и обнаружил, что есть два возможных решения.
использование интерфейсов или абстрактных классов для реализации методов и структуры плагинов, загрузки сборки, приведения объекта к интерфейсу и вызова методов, которые должны иметь плагины, когда мне нужно подключить систему.
использование событий C # для загрузки сборки и вызова событий, когда мне нужно перехватить систему. Плагин в конструкторе зарегистрирует функцию с событием, предоставленным моим приложением.
Какое лучшее решение? Какие соображения производительности есть? Какие еще могут быть подходы?