Technical Details
ASP.NET 2.0 introduced Profile Providers, a customizable, pluggable personalization system. A basic implementation to get started with, the SqlProfileProvider, is also part of the package.
Profile Providers are declared in the Web.config:
XML | Copy Code |
---|---|
<profile defaultProvider="ProfileProvider"> <providers> <add name="ProfileProvider" connectionStringName="SqlServer" applicationName="MyApp" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </providers> <properties> <add allowAnonymous="false" name="Name" type="string"/> <... /> <properties> </profile> |
The system comes with a ProfileBase class which is 'enriched' during site startup to create an inherited class with the extra properties declared in the web.config. This way, ASP.NET code has access to a strongly typed Profile object with these custom properties.
Binary- and XML-serialization is used to store the contents of the profile object into the database.
This built-in SqlProfileProvider class has a number of drawbacks:
- Non-searchable storage in opaque text- or binary blobs.
There is no direct way to query Profile data from inside of the database. You cannot search profiles of your "members" with a normal SQL query, and you cannot index the profile data with FullText, because all the profile name/value pairs are serialized and stored in a single column, essentially. - No Oracle support.
- Datamodel is not in line with Smartsite iXperion database.
There is no easy way to link personalization data to existing visitors and users. - Static representation of a user-profile, based on a .NET class and/or web.config settings.
The ASP.NET Profile Provider creates a strongly typed Profile object based on a class declared in the web.config (the inherits attribute of the profile tag), or the ProfileBase class, together with the properties declared in the profile/properties section. In iXperion however, a new SXML application should not require the web.config or a .NET class to be modified to store and use its own profile settings.
This is why Smartsite iXperion provides a personalization system that is built as a custom ASP.NET Profile Provider. This provider is database-neutral, stores its data in a searchable way, and is dynamically expandable.
A User Profile is either linked to a user/vistor in Smartsite (UserId foreign key), or an anonymous user (linked to the profile cookie). Each profile property is stored seperately in the UserProfileProperties table.
The vwUserProfileProperties joins userprofiles, users/visitors and userprofileproperties to directly show users personal settings:
SQL | Copy Code |
---|---|
select userName, propertyName from vwUserProfileProperties |