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

Я ищу руководство о наилучшей практике вокруг использования функции профиля в ASP.NET.

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

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

5 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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