Как создать область ASP.NET MVC в виде подключаемой DLL?

Вот чего я хочу добиться: я хочу разделить ОБЛАСТИ ASP.NET MVC как чистую единственную DLL.

  1. Blog.DLL
  2. Форумы.DLL
  3. FAQ.DLL

Каждая из них представляет собой отдельную область ASP.NET MVC со своими собственными страницами CSHTML или ASPX по умолчанию. Установка, миграция и поддержка большого количества страниц, включая ресурсы, javascripts и т. д., являются настоящей проблемой в долгосрочной перспективе. Поскольку большинство из них вряд ли изменится.

Мой последний сайт будет таким.

\MvcApplication
   \bin
      \MvcApplication.bin
      \Blog.dll
      \Forums.dll
   \Controllers
      \..
   \Models
      \..
   \Views
      \..
   \Global.asax
   \Web.config

Ничего не добавляя, просто удаляя Blog.dll, мое приложение должно поддерживать /blog и все его страницы. Если я хочу что-то настроить, я могу добавить область и добавить только страницы cshtml..

\MvcApplication
   \bin
      \MvcApplication.bin
      \Blog.dll
      \Forums.dll
   \Areas
      \Blog
          \Views
              \Shared
                  \BlogLayout.cshtml <-- this will override the look
   \Controllers
      \..
   \Models
      \..
   \Views
      \..
   \Global.asax
   \Web.config

Это поможет повторно использовать подключаемые модули ASP.NET Area, просто поместив dll в папку bin. Однако web.config может потребовать некоторых изменений, но, скорее всего, мы сохраним значения конфигурации в базе данных, и единственное, что нам нужно, это «строка подключения Entity Framework» в web.config.

Мои проблемы (Вопросы)

  1. Является ли это возможным? Это, конечно, похоже на меня, но будут ли проблемы с отражением/разрешением?
  2. Как включить представления cshtml/aspx в одну DLL? Наверное скомпилированные версии? Я видел пару текстовых шаблонов View Engines на codeplex, но я немного смущен тем, как их использовать.
  3. И как мне заставить ViewEngine сначала проверить, существует ли файл физического каталога, а затем просмотреть cshtml/aspx внутри самой dll в качестве файла ресурсов?
17
задан tereško 14 July 2012 в 13:05
поделиться