2016-03-05 3 views
2

У меня есть дилемма, как организовать мой новый проект.Проект MVC - два узла одинаковых контроллеров

На данный момент у меня есть сайт в стиле журнала, закодированный в MVC C#, где каждая страница имеет собственный контроллер с набором представлений. Для контроллеров у нас есть сервисный уровень (как отдельный проект) для доступа к базе данных. Большинство бизнес-логики находятся на уровне обслуживания с некоторыми битами бизнес-логики в контроллерах.

Мы планируем запустить новый веб-сайт, который будет использовать копию базы данных 1-го сайта, с 95% -ными функциями как первый веб-сайт, но совершенно разные виды/css.

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

Насколько я могу видеть, у нас есть два варианта:

  1. Чтобы создать новый проект для 2-го веб-сайта, где нам нужно будет переписать все контроллеры с нуля

  2. Для добавьте новый набор представлений на существующий веб-сайт и на основе переключателя конфигурации, чтобы отображать разные представления на основе URL-адреса 1-го или 2-го сайта.

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

Второй подход будет использовать те же контроллеры (с потенциально удвоенными методами для 5% различных функций).

Есть 3-е из этого?

благодаря

ответ

2

В конце концов, я решил реализовать собственные представления с помощью DisplayMode

DisplayModeProvider.Instance.Modes.Insert(0, new NewSiteDisplayMode() 
     { 


      ContextCondition = context => IshkaDisplayMode.IsNewSite(context.Request) 

     }); 

Теперь, если мне нужно настраиваемое представление для нового сайта я просто создать копию существующего вида добавить NewSite в имя и поставить конкретную HTML внутри.

Cheers

1

Я хотел бы использовать подход 2, если изменения в бизнес-логики являются незначительными, и если вы можете сохранить его совместимым.

На самом деле существует третий подход, который должен был создать ветвь управления версиями для v2. Вы можете продолжать поддерживать v1 и при необходимости интегрировать изменения в v2. Однако со временем, по мере того, как ваши сайты будут дрейфовать, эта интеграция будет сложнее. Таким образом, такой подход будет только подходящим, если у вас есть определенное ограничение, чтобы избавиться от v1.

В зависимости от изменений в модели данных вам также может потребоваться версия кода доступа к данным.

1

Джеймс,

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

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

Infact - это чистая сущность развития MVC.

Смежные вопросы