Razbezhkin
@Razbezhkin
программист, преподаватель

Как провести разделение большого asp.net mvc3 проекта на несколько небольших?

Здравствуйте.
Ситуация: есть проект, которому больше 4 лет, и который построен на технологиях asp.net web forms и asp.net mvc3. проект разрабатывался мной одним, теперь пришло время приглашать дополнительных программистов. хочется логически разделить проект на несколько частей (Форум, Блоги, Доска объявлений и др.) так, чтобы каждая часть разрабатывалась отдельным ответственным за нее программистом. На сервере при этом должен быть единый сайт в пределах одного домена со сквозной аутентификацией.

Вопросы:
1. как разделить большой проект на несколько небольших и как их потом собирать на одном сайте
2. как добиться прозрачной аутентификации на сайте
3. можно ли (и как) добиться единого использования коллекций Cache, Application, Session
4. имеет ли смысл делить базу данных на части? база уже достигает 70Гб, но в ней некоторые таблицы (например Users) используются во всех частях большого проекта.

Спасибо за советы.
  • Вопрос задан
  • 2850 просмотров
Пригласить эксперта
Ответы на вопрос 1
Barada
@Barada
Я считаю что:

1-1) Проект не стоит делить на несколько веб-проектов. Стоит выделить бизнесс логику в отдельные "сервисы" и вынести их в отдельные проект. То есть веб проект - точка сбора, в которой референсы на Class Library сервисов. Тут поможет IoC. Но тогда все вьюхи и прочее будут в одном проекте. Но такие ресурсы как стили и js стоит держать в одном месте. Поэтому это не плохо.
1-2) Можно разделить на вебные подпроекты и деплоить их в виртульаные папки. То есть проект "форум" будет лежать отдельным приложением в виртуальной папке forum и будет доступен по пути domain.ru/forum

2) Аутентификация в первом варинте будет проходить в едином веб приложении и передевать через какой-нибудь IUserContext во все модули, где они будут решать допускать пользователя к той или иной фиче или нет.
Со вторым варинтом сложнее. Но так как домен 1 а ключом к аутентификации у нас является кука - можно будет докрутить до этого варианта.

3) 1 вариант - всё остаётся как есть. Второй вариант SessionServer и прочее. Отдельные машины шареного состояния.
4) Я считаю что без видимой надобновсти делить не надо. Но если она весит 70Гб, я бы разделил, так как таким объёмом сложно ворочить. Сбекапить и развернуть 70Гб - это несколько часов наверно? Под каждый атомарный сервис я бы выделил. Общие таблицы в общей базе.

В принципе я бы попробовал первый вариант. Так как он всё равно промежуточный перед вторым. Сделать модульную архитектуру. Разобраться с базой. Убрать лишние зависимости. Если этого мало то уже делить на подпроекты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы