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