С точки зрения производительности профили лучше работают, когда выполняются следующие условия:
Хуже они работают при таких условиях:
Конечно, вы можете комбинировать профили с другими типами управления состоянием. Например, предположим, что ваш Web-сайт включает мастер заказов, который проводит пользователя через несколько шагов. В начале этого процесса вы можете извлекать информацию профиля и сохранять ее в состоянии сеанса. Затем вы можете использовать коллекцию Session для остальной части процесса. Предполагая, что вы используете модель хранения состояния сеанса на уровне серверного процесса или вне его, этот подход более эффективен, поскольку избавляет от необходимости периодически повторно подключаться к базе данных.
Наиболее существенное ограничение, касающееся профилей, никак не связано с производительностью — речь идет об ограничении сериализации профилей. Поставщик профилей по умолчанию, включенный в ASP.NET, сериализует информацию профилей в блоке данных, которые сохраняются в одном поле записи базы данных. Например, если вы сериализуете информацию об адресе, то получаете в результате нечто вроде такого:
Marty Soren315 Southpart DriveLompocCalifornia93436U.S.A.
Другое поле указывает, где начинается и заканчивается каждое значение, используя формат вроде следующего:
Name:S:0:11:Street:S:11:19:City:S:30:6:State:S:36:10:ZipCode:3:46:5:Country:S:51:6
Хотя такой подход обеспечивает достаточную гибкость, чтобы хранить данные почти любого типа, это существенно затрудняет их применение в других приложениях. Вы можете написать специальный код для разбора данных профиля, чтобы находить нужную вам информацию, но в зависимости от объема данных и их типов, этот процесс может оказаться весьма утомительным. И даже, если вы это сделаете, все же останетесь ограниченными в способах использования такой информации. Например, представим, что вы используете профиль для хранения адреса заказчика. Из-за ее специфического формата невозможно генерировать списки заказчиков в таких приложениях, как Microsoft Word, или выполнять запросы, которые фильтруют или сортируют записи, используя данные профиля. (Например, вы не сможете так легко выполнить запрос, чтобы получить всех заказчиков, живущих в определенном городе.)
предыдущая следующая страница вначало главы оглавление
956