Hi Marina,
First of all, let's see the difference between SessionState and
ApplicationState. When you store data in Session, it is only available for
one user Session (even when a user open a new browser by clicking desktop
icon or Start -> Programs -> browser menu in same computer, it starts a new
Session.) On the other hand, data in ApplicationState can be accessed cross
sessions in the application. Hence, if you want the data to be shared for
different users, use Application, otherwise use Session.
Secondly, let's see Cache. It has the same scope as Application. And it also
has some other feathers, such as, CacheDependency (e.g. some file or files),
expiry date time, time span, and so on.
Thirdly, advantages of using them are good performance (it cuts
communication between web server and database) and sharing data cross pages.
Disadvantages are consuming web server memory resource (when in user and
data intensive application, it causes server dead soon) and out of time data
(so you might need some refresh events).
HTH