Управляемое меню базы данных веб-приложений MVC по разрешениям пользователя - PullRequest
3 голосов
/ 12 мая 2009

Мы собираемся перенести старое приложение Windows на большое веб-приложение для вертикального рынка. Глядя на MVC. Каждая реализация может иметь от 50 до 5000 пользователей. Глядя на размещение навигации в главной странице. Приложение будет содержать от 200 до 300 пунктов меню, в результате чего более 500 просмотров. Мы хотим отобразить урезанное навигационное меню для каждого пользователя в зависимости от его прав доступа к приложению. Пользователь может видеть только 20 предметов или все доступные.

Большинство сообщений, которые я видел, предлагают передавать элементы навигации на главную страницу через viewdata, созданные в базовом классе контроллера. Я понимаю это.

Каждый из потенциально от 10 до 1000 пользователей будет иметь различный набор разрешений.

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

Существует ли схема кэширования, которая будет работать для каждого пользователя?

Должна ли навигация обрабатываться в кадре (не мой выбор)?

Это просто цена, которую мы заплатим за такой подход к навигации?

Спасибо за любой вклад!

Ответы [ 2 ]

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

Некоторые идеи:

1.) Вы можете получить html панели навигации из Html.RenderAction (MVC Futures) и использовать для этого кэш вывода.

2.) Вы можете сгенерировать html для навигационной панели для каждого пользователя, затем сохранить его в БД и создать заново, если его пользовательские права изменятся. Поэтому все, что вам нужно сделать, это извлечь html из БД для каждой записи пользователя.

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

Вы могли бы начать с кэширования запросов linq , что было бы хорошим способом решения этой проблемы на уровне БД.

Делать это в MVC с использованием фильтра действий тоже не составит труда.

Я реализовал нечто подобное в PHP год назад, но общая идея та же. Во-первых, вам необходимо назначить каждой конфигурации меню уникальный идентификатор. Таким образом, когда пользователь A и пользователь X запрашивают одинаковую конфигурацию меню, он разрешается в один и тот же файл кэша.

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

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