Система плагинов с MVC3, Razor и C # - PullRequest
8 голосов
/ 24 ноября 2011

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

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

Например:

Общая сборка:

  • Зона пользователя
  • Базовое редактирование блога / новостей

Плагины: (может понадобиться для одного или двух сайтов, но не для всех)

  • Плагин чата
  • Статистика
  • и так далее ...

В настоящее время я просто сделал бы все это и отключил бы все через файл конфигурации, однако было бы неплохо, если бы я мог просто перетащить папку на свой FTP и получить страницу MVC, которая автоматически подхватывает ее!

Полагаю, мне придется начать с сканирования каталога "/ plugins" и подобрать файл "plugin.config" (или аналогичный), который будет содержать основные сведения.

Но как мне заставить мою основную систему подобрать эти вещи и фактически использовать их?!

Ответы [ 4 ]

2 голосов
/ 22 апреля 2012

Попробуйте выполнить сканирование сборки с помощью внедрения зависимостей StructureMap.

2 голосов
/ 29 марта 2012

Вы можете сделать это, используя области MVC, вот несколько ссылок о них:

1 голос
/ 18 мая 2012

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

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

Вы можете при запуске отсканировать все сборки в каталоге bin, чтобы проверить наличие плагинов. Обычно вы проверяете типы, которые реализуют интерфейс или наследуют от класса, и используете их вместе с контейнером IoC, таким как TinyIoc, NInject, StructureMap или Unity. Я бы порекомендовал TinyIoC, который используется NancyFX.

1 голос
/ 18 мая 2012

Прочтите этот замечательный учебник: Учебник по архитектуре плагинов ASP.NET MVC2

Это поможет мне создать архитектуру плагинов с MVC3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...