It is ok to use session variables. The hang up comes from classic ASP
problems. ASP.NET Session is re-architected to be better, faster and
more
efficient than ASP. In fact, outside of superficial similarities, the
two
are entirely different animals underneath.
Finally, session use is tied to server memory. Developers need to be
responsible in the use of this resource.
--
Regards,
Alvin Bruney
[ASP.NET MVP
http://mvp.support.microsoft.com/default.aspx]
Got tidbits? Get it here...
http://tinyurl.com/27cok
Actually .. I respectfully disagree
.. don't take it personally . .!!
)
- Sahil Malik
You can reach me thru my blog at
http://www.dotnetjunkies.com/weblog/sahilmalik
Allright, I disagree .. Let me explain why ---
As far as scalability, SqlServer mode scales very well and doesn't
rely
on a centralized model (no more so than any other SQL Server
database).
SqlServer scalability is acheived using failover and clustering. Not
using
Network Load Balancing and Web Farms (redundancy). Web farm machines are
by
far much cheaper than Sql server clustering architecture. What's
more, by
using Session variables and not specifying state server, you loose
any
prayer of ever being able to use a webfarm well enough. Not to
mention,
you
have one point of failure, and hardware limitations on that one poor box
acting as the state machine. By using a state server you donot lock
yourself
up into an app that will never scale - but you make it pretty damn
expensive
to scale in future - which is the whole point, you want to acheive
scalability cheaply by adding/removing machines at runtime without
bringing
the entire site down. (therefore www24.microsoft.com).
What's even better is how easy it is to switch modes - so long as you
were careful to design all objects which are to be stored in sessions as
serializable (normally achieved simply by specifying the
ISerializableAttribute() to the class) you simply change your web.config
and
off you go.
Objects in session are even worse. If you have a memory leak, you
just
fixated that memory leak in a process that won't die (IIS). Not to
mention
there is nothing like ISerializableAttribute, but there is a
SerializableAttribute and an ISerializable interface.
SerializableAttribute
works .. well most of the times; but first of all it's behavior is
limited,
(it's not that smart), and it has troubles with protected members and
delegates.ISerializable on the other hand depends on the programmer's
efficacy - which I try and not rely on in a website that is
highload -
typically multi megabyte source code - you cannot practically enforce
good
programming all over.
Finally, ASP.Net 2.0's provider model will provide even more
choice.
Makes no difference to the above facts.
The rule is - Try very hard to avoid session - but don't put yourself in
a
hospital trying to avoid it.
- Sahil Malik
You can reach me thru my blog at
http://www.dotnetjunkies.com/weblog/sahilmalik
"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME
net>
wrote in message I disagree with the two answers given so far, sessions in ASP were evil
'cuz
they were stored in the same memory space as the worker process. This
is
true in ASP.Net as well when you have it set for InProc. It isn't true
for
either StateServer or SQLServer. As far as scalability, SqlServer mode
scales very well and doesn't rely on a centralized model (no more
so
than
any other SQL Server database). What's even better is how easy it
is
to
switch modes - so long as you were careful to design all objects which
are
to be stored in sessions as serializable (normally achieved simply
by
specifying the ISerializableAttribute() to the class) you simply change
your
web.config and off you go.
Finally, ASP.Net 2.0's provider model will provide even more
choice.
Karl
--
MY ASP.Net tutorials
http://www.openmymind.net/
Session variables - bad.
All the session state schemes rely on a centralized model - that can
never
be good for scaleability.
But if it means you will have to write tonnes of code for a
website
that
has
5 concurrent users, then go ahead use 'em. (never overarchitect).
- Sahil Malik
You can reach me thru my blog at
http://www.dotnetjunkies.com/weblog/sahilmalik
I've come from the old ASP camp where session variables were
not
used.
When
i started using ASP.NET in 2001, I started using them again because
it
was
ok from what I'd read.
I've been merrily using Session variables for three years now
and
i'm
entering a project with my new boss who has never quite come around
that
session variables are ok.
What's the concensus here. How can i convince him that they
are ok
in
ASP.NET. OR
Are there those out there that still think they aren't good to use?
TIA
Harry Simpson
MCSD