ASP.NET встроенный профиль пользователя по сравнению с.пользовательский класс/таблицы старого стиля

StackOverflow https://stackoverflow.com/questions/1683

  •  08-06-2019
  •  | 
  •  

Вопрос

Мне нужны рекомендации по использованию функции профиля в ASP.NET.

Как вы решаете, что следует хранить во встроенном профиле пользователя или следует создать собственную таблицу базы данных и добавить столбец для нужных полей?Например, у пользователя есть почтовый индекс. Должен ли я сохранить почтовый индекс в своей собственной таблице или добавить его в XML-профиль web.config и получить к нему доступ через механизм ASP.NET профиля пользователя?

Плюсы/минусы, о которых я могу сейчас подумать, заключаются в том, что, поскольку я не очень хорошо знаю профиль (это немного Матрица прямо сейчас), я, вероятно, смогу делать все, что захочу, если пойду по табличному маршруту (например, SQL, чтобы получить всех пользователей с тем же почтовым индексом, что и у текущего пользователя).Я не знаю, смогу ли я сделать то же самое, если буду использовать профиль ASP.NET.

Это было полезно?

Решение

Я создал только два приложения, которые использовали поставщика профилей.С тех пор я воздерживался от его использования.В обоих приложениях я использовал его для хранения информации о пользователе, такой как название компании, адрес и номер телефона.

Это работало нормально, пока наш клиент не захотел найти пользователя по одному из этих полей.Поиск включает в себя циклическое перебор каждый профиль пользователя и сравнение информации с критериями поиска.По мере роста базы пользователей время поиска стало неприемлемым для нашего клиента.Единственным решением было создать таблицу для хранения информации о пользователях.Скорость поиска значительно возросла.

Я бы рекомендовал хранить этот тип информации в отдельной таблице.

Другие советы

Профиль пользователя — это хорошая чистая платформа для индивидуальной настройки (AKA.Свойства профиля).(например.Igoogle) Проблема в том, что она не предназначена для запроса и не идеальна для обмена данными для общественного пользователя. (Вы все равно сможете это сделать, с низкой производительностью)

Итак, если вы хотите улучшить индивидуальный пользовательский интерфейс, профиль пользователя будет хорошим способом.в противном случае гораздо лучшим решением будет использование собственного класса и таблицы.

По моему опыту, лучше всего свести информацию в профиле к минимуму, помещая туда только то, что непосредственно необходимо для аутентификации.Другая информация, такая как адреса, должна сохраняться в вашей собственной базе данных с помощью вашей собственной логики приложения. Этот подход более расширяем и удобен в обслуживании.

Я думаю, это зависит от того, сколько полей вам нужно.Насколько мне известно, профили по сути представляют собой длинную строку, которая разбивается на заданные размеры полей, а это означает, что они не очень хорошо масштабируются, если у вас много полей и пользователей.

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

Создание собственного объекта позволяет поместить его в правильно нормализованную базу данных, что значительно повышает производительность, но вам придется писать практически весь код управления профилями самостоятельно.

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

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

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

конечно, это личное предпочтение, но другие подняли некоторые другие важные вопросы.

Также очень полезно, учитывая, что его можно использовать для неаутентифицированного пользователя, чей профиль поддерживается с помощью анонимного файла cookie.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top