.NET Plug In куда пойти

Я пишу приложение для Windows, которое подключается к интернет-магазину через его API и считывает / записывает значения.

Интернет-магазин может иметь несколько платежных шлюзов, и я думал о написании плагина для каждого из них и создании пользовательского интерфейса, который будет доступен для выбора каждого из них и загрузки правильной сборки ...

Моя идея состоит в том, чтобы иметь несколько библиотек (.dll) и загружать правильную после настройки ...

Я действительно думаю, что это своего рода разработка в конце 80-х, поэтому мне интересно, есть ли что-нибудь новое, что могло бы помочь мне разработать такое поведение в .NET 3.5 SP1.

Я новичок в этом вопросе, и поэтому я хотел бы спросить вас, как лучше всего подойти к этому вопросу.

Спасибо.

PS Я читал о MEF (Managed Extensibility Framework ), но это все еще предварительная версия (текущая версия MEF Preview 8), и она доступна только в .NET 4.0, поэтому я не могу пойти по этому пути :-(


person balexandre    schedule 10.01.2010    source источник


Ответы (2)


Взгляните на MEF и Unity, это два очень полезных проекта от Microsoft, которые должны помочь с расширяемостью вашего приложения (MEF фактически используется внутри VS2010 для поддержки расширений).

person Rory    schedule 10.01.2010
comment
Я только что сообщил, что не могу использовать MEF ... вскоре я нажал «Изменить». Я получил ваш ответ :) Но это все еще очень новая технология, и я не могу основывать свое приложение на состояниях бета / превью. Что люди делали до появления MEF? - person balexandre; 10.01.2010
comment
Ну, как я уже сказал, есть еще вариант Unity. На самом деле это просто D.I. контейнер, но его можно использовать в качестве основы для архитектуры подключаемых модулей. Если вы работаете с Silverlight или WPF, вы также можете посмотреть compositewpf.codeplex.com - person Rory; 10.01.2010

В .NET 3.5 добавлен ряд вспомогательных классов в системе . Addin пространство имен. Они помогают с большим количеством стандартного кода и более сложными аспектами этого вида разработки (такими как загрузка и удаление плагинов как при запуске, так и во время выполнения, а также изоляция кода), но они по-прежнему следуют базовому шаблону, который вы описано.

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

Обзор можно найти здесь.

person Martin Harris    schedule 10.01.2010