2015-03-29 3 views
0

В моей компании мы должны разработать веб-приложение ASP.NET MVC 5, которое должно иметь несколько плагинов.ASP.NET MVC 5 plugin framework

Мы хотим, чтобы эти плагины имели следующие функции.

  1. Каждый плагин может быть развернут в отдельной папке; Нет необходимости копировать сборку плагинов в папку bin, файлы плагинов сохраняют ту же структуру, что и обычный веб-сайт;
  2. Динамическая установка/удаление плагина после запуска веб-сайта;
  3. Плагины совместно используют один и тот же мастер/макет; Я нашел статью, которая описывает аналогичное решение, но это зависит от платформы плагинов, которая основана на OSGi.NET, которая не является открытым исходным кодом.

Есть ли плагин, который имеет вышеуказанные функции?

+0

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

ответ

0

Да. MEF очень хорошо.

Это пример того, как создать сайт MVC с плагинами архитектуры: http://www.fidelitydesign.net/?p=104

http://www.fidelitydesign.net/?p=130

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

UPD

В моем случае я хочу, чтобы пользователи могли добавлять расширения в приложение без каких-либо зависимостей или конфигурационных файлов. Все, что вам нужно сделать, это скопировать папку расширения в папку расширения основного проекта. Каждое расширение может содержать DLL, представления (в отдельной папке представлений), контент (стили, изображения и т. Д.). Более того, каждое расширение может иметь один или несколько типов db, и это может быть настроено только при копировании файлов. Кроме того, мое приложение содержит некоторые бэкэнд, и этот бэкэнд должен быть расширяемым с расширениями. Поэтому каждое расширение должно сообщить основному приложению, что он может предложить для интерфейса и для бэкэнд.

Я потратил на это много времени, но теперь он работает очень хорошо.

+1

Привет, ссылки, которые вы опубликовали, не работают :(У меня вопрос о том, как вы решили, что каждый модуль имеет пользовательскую логику db, таблицы, сущности (используете ли вы общий DBCONTEXT?), И каждый модуль имеет общую функцию fuctionality, такую ​​как атрибут Authorize , Разрешения и т. Д. И еще один, как решить маршруты модулей.Спасибо за долю! Если у вас есть заметки, советы, образцы кода, я буду очень благодарен! Спасибо –

+0

@ MartinHaščák Привет! Вы можете посмотреть мой проект ExtCore: https://github.com/ExtCore/ExtCore (он содержит все, что вы просили). Я буду рад ответить на ваши вопросы, связанные с этим проектом. –

+1

@DmitrySikorsky ExtCore для .net Core версии, можете ли вы посоветовать мне, как я могу использовать выше в mvc4/5 также скоро появятся документы на ваших сайтах ... tag – Alok