Мы создаем около 10 сайтов ASP.NET MVC, которые имеют общий набор функций (и соответствующие URL-адреса, маршруты, контроллеры, действия и представления). На всех сайтах также будет использоваться базовый набор объектов домена (например, пользователей, компаний) и базовые атрибуты для этих объектов (например, имя, адрес и т.д.).
Но каждый сайт также будет сильно настроен и расширен от базы. Например, наш сайт для крупных публичных компаний будет иметь поля "Вспомогательный" и "Фондовый символ" на объекте домена компании, а наш сайт для стартапов будет иметь атрибуты "Венчурная фирма" и "Финансирование". Внешний вид также будет значительно отличаться, хотя мы стараемся, чтобы HTML был максимально согласован (по модулю дополнительных полей формы для дополнительных атрибутов объекта домена и т.д.). Мы также будем отсеивать изображения экономно, поэтому мы можем, например, повторно использовать одну и ту же графику кнопок на сайтах.
В любом случае мы пытаемся выяснить, как лучше всего учитывать факторы и архитектуру, чтобы мы могли повторно использовать как можно больше кода и как можно больше тестов без ограничения нашей свободы добавлять атрибуты для каждого приложения и изменять пользовательский интерфейс между приложениями.
Я знаком с тем, как обрабатывать многоуровневую ограниченную настройку, как вы находите в StackOverflow/SuperUser/ServerFault (или MSDN/TechNet, если на то пошло), где пользовательский интерфейс немного отличается, а модель данных - или менее идентичны. Но когда модели и пользовательский интерфейс сильно отличаются (но наследуются от общей базы), я не уверен, как действовать дальше.
Меня меньше беспокоят операционные проблемы, так как мы, вероятно, будем запускать каждый сайт в отдельном приложении и размещать их в отдельных базах данных. Я больше беспокоюсь о снижении долгосрочных расходов на обслуживание кода, повышении гибкости (например, легко добавлять новые функции в базу без разрыва производных приложений) и реализовать краткосрочную экономию средств на основе dev/test-cost, поскольку мы создаем наши 2-й, 3-й, 4-й и т.д. Сайт.
Я ищу как для руководства и предложений высокого уровня, так и для конкретных предложений о том, как сделать это руководство реальным, используя современные методы ASP.NET MVC.
Я понимаю, что это очень общий вопрос, но для начинающих я ищу как руководство высокого уровня, так и конкретные советы - n-трюки для того, как применять это руководство с ASP.NET MVC, включая такие вещи, как:
- рекомендации по разделению базы/производных в проектах Visual Studio
- наконечники управления источником, чтобы избежать разветвления
- подсказки схемы базы данных (FWIW, наши базы данных невелики - под 10K строк на таблицу, поэтому стоимость dev/test больше связана с проблемой, чем DB perf)
- советы по повторному использованию контроллеров /Views/etc. соответствующие "базовым" характеристикам модели, особенно повторное использование пользовательского интерфейса для таких вещей, как формы "нового клиента", которые будут содержать базовые и производные атрибуты.
У кого-нибудь есть хороший совет для того, как создать многопользовательское приложение вроде этого?