Как структурировать, разбивать и создавать большое приложение MVC для развертывания небольшими инкрементными частями? - PullRequest
5 голосов
/ 27 мая 2009

Мы будем разрабатывать очень большое вертикальное веб-приложение для рынка и склоняемся к подходу MVC.

Он будет иметь 1 мастер-страницу, общую для всех представлений в приложении. Мастер предоставит навигационную / поисковую среду для всего приложения это позволит пользователям искать и выбирать объекты, а затем переходить к выполняемой функции.

Модель базы данных будет иметь от 700 до 1000 таблиц. Приложение будет иметь сотни контроллеров.

Контроллеры и их представления могут быть сгруппированы в одну из множества (20-50) подсистем в приложении. (Мы смотрим на подходы к организации в областях).

Мы хотим иметь возможность предоставлять улучшения / обновления небольшими функциональными частями. Это могут быть новая функция, исправление ошибки, зависящая от клиента функциональность или дополнительные модули, отдельно приобретаемые конечным пользователем.

Мы потратили слишком много лет на разработку / поддержку и поставку одной большой Windows vb app exe. Мы хотели бы принять другой подход.

Руководство не хочет поставлять одно большое приложение. Они хотят быть в состоянии доставить небольшие приращения при необходимости.

Мы можем захотеть создать конечный результат, который содержит один контроллер, только пару представлений и часть модели.

Чтобы доставить его, мы хотим скопировать dll в папку bin, а также создать папку View и скопировать в новые представления. Как можно проще!

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

Как нам структурировать приложение для этого?

Как мы можем разбить приложение на отдельные проекты / сборки, чтобы сделать это?

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

В разработке каждый подпроект должен содержать весь базовый проект или только папку общих представлений, Глобальная маршрутизация, а web.config и ссылка на базовый проект dll?

Какие-нибудь подробные документы, объясняющие этот подход?

Есть ли проблемы с разработкой / тестированием?

Спасибо за все комментарии, мы скоро должны это сделать.

Обновление:

Здесь следовал примеру текст ссылки

Это отличная отправная точка!

Ответы [ 3 ]

1 голос
/ 28 мая 2009

Абсолютно, разбейте проект на подпроекты / модули, содержащие ваши контроллеры. Вы можете использовать IoC-контейнер, такой как Unity, Spring.Net или Castle Windsor, чтобы найти соответствующие контроллеры в дочерних проектах.

Реализуйте свой собственный IControllerFactory, чтобы выполнять поиск контроллера в контейнере IoC на основе переданного ему имени контроллера. Вы хотите установить метод IControllerFactory.CreateController, который выглядит примерно так:

public IController CreateController(RequestContext requestContext, string controllerName) 
{
  return (IController)IoCContainer.GetObjectByName(controllerName);
}

Тогда вы сможете просто изменить файл конфигурации IoC, чтобы определить новые контроллеры по мере их развертывания.

1 голос
/ 28 мая 2009

Я думаю, что это именно тот случай, когда DLR поможет. Ваши контроллеры и представления могут храниться в виде сценариев в базе данных. Будет очень легко доставить ваше приложение в виде набора «маленьких функциональных частей». Вы можете начать с чтения Haacked - сценариев ASP.NET MVC представлений, хранящихся в базе данных

0 голосов
/ 28 мая 2009

Google для MVC с MEF. Вот пример одной из команд MEF, который точно подойдет вашим потребностям.

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