Достаточно ли зрел MEF, чтобы делать ставку на компанию? - PullRequest
3 голосов
/ 07 июня 2010

Моя компания должна переписать большую монолитную программу, и я хотел бы, чтобы она была написана с использованием архитектуры типа плагина. В настоящее время лучшим решением кажется MEF, но, поскольку это довольно «новая» вещь, я боюсь ставить на нее будущее моей компании (и мою репутацию).

Кто-нибудь чувствует, насколько зрелым является решение MEF?

Спасибо

Ответы [ 3 ]

7 голосов
/ 07 июня 2010

Вся система расширений Visual Studio теперь построена на MEF.

То есть, Microsoft это собачье дело (как они делают с WPF).

Учитывая, что сами разработчики фреймворка будут работать с ним, вы можете быть уверены, что он останется здесь. Однако, как и в любом первом выпуске, вы почти гарантированно испытаете некоторые проблемы с ростом при следующем выпуске.

Лично я бы пошел на это. Это, безусловно, лучше, чем альтернатива на основе тесно связанных отражений.

2 голосов
/ 07 июня 2010

Не думаю, что нужно "делать ставки на MEF". Ваш код должен иметь очень мало зависимостей от MEF.

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

Соединение компонентов вместе в приложении может быть затем выполнено с помощью любой структуры внедрения зависимостей или даже вручную. Логика компонента не должна знать о контейнере - может даже не быть контейнера.

В случае MEF вам необходимо добавить атрибуты импорта / экспорта в ваши классы. Однако вы все равно можете игнорировать эти атрибуты и повторно использовать эти компоненты без MEF, например, используя другой DI-фреймворк, такой как AutoFac .

1 голос
/ 07 июня 2010

Это относительно новая технология, поэтому я не уверен, точно ли она зрелая. Я уверен, что в течение следующих нескольких лет он немного изменится, возможно, объединится с другими средами для лучшей поддержки IoC. Тем не менее, у MS довольно хорошая история сохранения обратной совместимости, поэтому теперь, когда MEF фактически является частью Framework, я бы посчитал, что публичные интерфейсы стабильны.

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

...