Краткое описание:
Моя команда решила использовать Microsoft Managed Extensibility Framework ( MEF ), чтобы обеспечить расширяемую модель для добавления новых "провайдеров" в нашу систему.
Это позволяет нам относительно легко подключать новых сторонних поставщиков.
Примечание: я был впечатлен тем, как просто использовать MEF и как его использовать.
Мой вопрос:
Поскольку эти поставщики обычно имеют различные свойства , связанные с ними, при загрузке этих поставщиков в систему во время выполнения нам необходимо получить доступ к потокам данных и свойствам поставщиков.
Какой подход следует использовать для работы с указанными плагинами провайдера из-за различных свойств? Отмечая, что все они выполняют одинаковую работу.
Мое решение:
Создайте интерфейс, которому должны соответствовать поставщики, в результате чего создается «обертка» вокруг каждого из сторонних поставщиков, что приводит к согласованному интерфейсу /
модель программирования для работы с каждым провайдером.
Плагин = сторонний источник данных (поставщик) + Реализация общего интерфейса.
+ ве:
Для указанных плагинов не требуется более сложный динамический «плагин» для отражения.
-ve:
Нужно написать обертку для каждого провайдера. (Независимо от того, нужно ли добавлять теги MEF Export)
Примечание:
Для меня подход интерфейс / обертка был бы самым простым, но мне сказали, чтобы исследовать подход, основанный на отражении, который может использовать отражение, чтобы обнаружить свойства во время выполнения, которые могут подвергаться система.
Я не сторонник какого-либо одного решения, а другого, но мне было бы интересно услышать мысли сообщества (большинство из которых более опытны, чем я).
Спасибо.