If you were interested in building profiles and themes into your own application in ASP.NET 1.x, you basically had to create your own. For instance, you had to provide your own mechanisms for storing and retrieving user profile information and for allowing users to choose the look and feel they wanted for your application. The latter was sufficiently daunting that beginning or mid-level developers rarely attempted it.
Fortunately, with ASP.NET 2.0's profile support, the days of having to create your own are gone. For instance, in ASP.NET 2.0, you can include user profile data in your application without writing any code to persist the data. You can inherit a profile, which is handy when you want to use the same profile definition in multiple applications. You can store profile information for users who are not logged into your application, and you can create a mechanism to periodically remove user profile data that is no longer being used. All of these scenarios are illustrated by the recipes in this chapter.
Themes are another new feature in ASP.NET 2.0 and provide a browser-independent way of "skinning" a set of controls. In ASP.NET 2.0, themes consist of collections of (Cascading Style Sheets) CSS files, .skin files, and images that contain a definition for each server control you use in your application and images. If you want to provide users the ability to choose the look and feel they want for your application, you can store their selected theme in their profile and set the selected theme in the pre-initialization code of the pages in your application. Recipe 10.5 shows you how to create an ASP.NET 2.0 theme, and Recipe 10.6 shows you how to manage user-personalized themes.
Web parts are another new ASP.NET 2.0 feature that we could have covered in this chapter. Because the topic is sufficiently rich in its own right, however, we decided to cover it in a separate chapter all its own, which follows this one.
Before delving into this chapter, you should know that Microsoft has clarified its personalization and profile terminology in ASP.NET 2.0:
All of these topics, with the exception of personalization, are covered in one way or another in the various recipes in this chapter. See Chapter 11 for more information on personalization.