Следует ли использовать Managed Extensibility Framework для использования внешних плагинов? - PullRequest
2 голосов
/ 30 сентября 2010

Я думаю, что у меня есть модель MEF. Но мне трудно понять, соответствует ли это тому, что я пытаюсь сделать.

У меня есть приложение, которое будет вызывать сторонние плагины для обработки видео. Плагин может быть FFMPEG.exe или x264.exe, не имеет значения. Процесс вызова плагинов происходит через ProcessStartInfo (в основном через командную строку) и передает несколько параметров. * например 1003 *

ffmpeg.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Xheight 100 -Xwidth 100
or 
x264.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Yheight 100 -Ywidth 100

При условии, что каждый плагин будет иметь свои собственные наборы параметров, поэтому целесообразно ли использовать MEF, чтобы интерфейс был одинаковым независимо от того, какой плагин используется (alebit через публичный контракт)? Если да, я должен написать класс-оболочку для каждого плагина, реализующего контракт?

Это правильный способ использования MEF? С одной стороны, я пытаюсь сделать свое приложение расширяемым, позволяя клиентам выбирать свои плагины. Но на самом деле я не уверен, является ли MEF излишним и просто лучше использовать конфигурационные файлы для хранения команды?

Ответы [ 3 ]

1 голос
/ 30 сентября 2010

MEF - отличный способ добавить расширяемость в приложение. Вам просто нужно определить интерфейс в вашем приложении, реализовать этот интерфейс во внешнем компоненте и добавить в реализацию атрибут Export. Используя атрибут импорта в вашем приложении, вы можете обнаружить внешний компонент. Подробнее см. в документации . Если вы прочитаете это, ваше приложение будет запущено с использованием MEF менее чем за 2 часа.

Вернуться к теме: Если вы вызываете разные приложения только с разными аргументами, я бы не стал использовать MEF, потому что это было бы немного излишним. Тем не менее, с MEF приятно работать, и если вы хотите немного поэкспериментировать, вы все равно можете использовать его для своего приложения только для обучения.

1 голос
/ 30 сентября 2010

Если у вас есть возможность просто использовать конфигурационные файлы, тогда это будет предпочтительнее. Это позволит добавлять или изменять плагины без перекомпиляции. Также это даст возможность мощным пользователям настраивать плагины.

0 голосов
/ 30 сентября 2010

Похоже, MEF, вероятно, излишним для того, что вы хотите. Ваши плагины уже являются внешними приложениями и у вас уже есть способ их вызвать. Написание оберток кажется просто работой!

...