views:

32

answers:

1

While debugging a classic ASP application (and learning about classic ASP at the same time) I've encountered the following

Application("Something") = "some value"

and elsewhere in the code this value gets used thus:

someObj.Property = Session("Something")

How does the Application object relate to Session?

+4  A: 

A Session variable is linked to a user. An Application variable is shared between all users.

Application is a handy vault for storing things you want to persist but you can't guarantee they'll always be there. So think low-end caching, short-term variable storage, etc.

In this context with these definitions, they have very little to do with each other except that getting and setting variables is roughly the same for each.

Note: there can be concurrency issues when using Application (because you could easily have more than one user hitting something that reads or writes to it) so I suggest you use Application.Lock before you write and Application.Unlock after you're done. This only really applies to writing.

Note 2: I'm not sure if it automatically unlocks after the request is done (that would be sensible) but I wouldn't trust it to. Make sure that any part of the application that could conceivable explode isn't within a lock otherwise you might face locking other users out.

Note 3: In that same vein, don't put things that take a long time to process inside a lock, only the bit where you write the data. If you do something that takes 10 seconds while in a lock, you lock everybody else out.

Oli