ASP.net MVC и модульность - PullRequest
       3

ASP.net MVC и модульность

0 голосов
/ 14 декабря 2011

Я пытаюсь выяснить, есть ли способ использовать ASP.Net MVC для разработки модульного веб-приложения.

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

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

Я нашел одну или две ссылки, но ASP.Net MVC движется быстро, и они могут быть внеsync.

Любые входные данные приветствуются (вплоть до «не идите туда»)!

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Это просто.

Начните с создания библиотеки классов с той же структурой, что и в обычном проекте MVC. Убедитесь, что в свойствах файла все представления заменены на «Встроенные».

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

Вам нужно создать пользовательский VirtualPathProvider, который будет искать ваши представления во всех найденных библиотеках плагинов. Возможно, вы также захотите, чтобы VirtualPathProvider изменил представления, добавив @inherits YouBaseView<TModelName>, поскольку Views\Web.Config не используется для встроенных представлений.

2 голосов
/ 14 декабря 2011

Я думаю о том, чтобы сделать что-то подобное, я нашел, что это хорошая статья для начала: http://sankarsan.wordpress.com/2009/04/12/a-layered-aspnet-mvc-application-part-iv/

Я выбрал контейнер Castle Windsor IoC - информация о ASP .NET MVC и Windsor находится здесь: http://stw.castleproject.org/Windsor.Windsor-tutorial-ASP-NET-MVC-3-application-To-be-Seen.ashx

Затем я использую Razor Generator отсюда: http://razorgenerator.codeplex.com/, чтобы я мог компилировать виды в отдельные сборки.

И некоторый код отсюда: https://github.com/csteeg/BoC/blob/master/Src/Commons.Web.PrecompiledViews для построения механизма представления, использующего контейнер IoC.

Благодаря этим двум вещам и нескольким интерфейсам, которые являются пользовательскими для моего приложения, я смог добавить «модули», поместив библиотеки DLL в папку, и они отображаются в виде вкладок в приложении хоста.

...