Альтернатива профайлу провайдера в asp.net mvc
Я разрабатываю сайт ASP.NET MVC, который на самом деле использует собственный profileProvider для извлечения информации (например, о последней просмотренной странице, максимальном количестве записей для просмотра в сетке, уведомлениях по почте и т. д.), относящихся к одному пользователю, который хранится в пользовательской базе данных., Мне не нравится этот метод, потому что profileProvider нелегко вводить, есть ли альтернативный способ получить те же функциональные возможности, которые предоставляет провайдер профиля? Я думаю, что возможно использовать модуль asp.net, но я не эксперт.
2 ответа
Я думаю, что tartafe означает, что поставщики (также ваш пользовательский ProfileProvider) создаются и контролируются внешним кодом (System.Web.Configuration.ProvidersHelper).
Шаблон внедрения зависимостей говорит, что любые объекты, на которые опирается ваш пользовательский поставщик, должны передаваться контроллером (или контейнером). ЧФР. Внедрение зависимостей для слабой связи). Обычно ваш контроллер инициализирует хранилище, текстовый текст или другой объект и передает его через конструктор или свойство. Но это невозможно с пользовательским провайдером, поскольку его "контроллер" запечатан в System.Web.Configuration.
Я думаю, что возникает вопрос: есть ли способ повлиять на то, как ProvidersHelper создает и контролирует наших пользовательских провайдеров?
Что именно вы подразумеваете под нелегким инъекционным введением?
Если вы просто имеете в виду, что вы не хотите, чтобы это было в вашем контроллере, то создайте фильтр действий, который добавляет модель информации о пользователе, которая вам нужна для просмотра данных.
Если вы имеете в виду, что вам не нужна зависимость System.Web от того, что вы используете информацию профиля, создайте интерфейс адаптера, например IProfileService
и реализовать его с помощью оболочки-провайдера профиля.
Если вы не имеете в виду ни одну из двух вещей, о которых я догадывался, попробуйте объяснить, потому что язык немного неясен.