I am new to ASP.NET and most of my time spending on windows application. In
my Windows application, I used to create a class called MySession and and
instantiate it at the first page and pass around from form to form.
My quesitons are:
1) Does this concept same with the Session in ASP.NET?
2) Can I use the MySession method in ASP.NET?
3) Wht's the benefit of Session over own-declared session class?
Thank all.
Regards,
Chow
Aidy - 28 Mar 2008 11:53 GMT
Asp.net gives you a built-in object called Session that lets you store
whatever you want in it;
Session["UserID"] = 123;
Session["Username"] = "Hello";
User user = new User();
Session["UserObject"] = user;
So you could create your own MySession class and just store it in the
Session object;
MySession s = new MySession();
Session["SessionObject"] = s;
then retrieve it like this;
MySession s = (MySession) Session["SessionObject"];
If you look at the global.asax page you can code up a Session start event,
this is fired when the user first visits your site and this is where you
would instantiate the object and store it in the Session;
void Session_Start(object sender, EventArgs e)
{
... code here
}
>I am new to ASP.NET and most of my time spending on windows application. In
> my Windows application, I used to create a class called MySession and and
[quoted text clipped - 9 lines]
> Regards,
> Chow
chowchho - 28 Mar 2008 12:04 GMT
Thank for your explanation.
But is it a good practice to declare our own class of session insteads of
using the system one? In my opinion, own session class is more easy to manage
and no time-out issue.
Thank.
> Asp.net gives you a built-in object called Session that lets you store
> whatever you want in it;
[quoted text clipped - 36 lines]
> > Regards,
> > Chow
Juan T. Llibre - 28 Mar 2008 12:36 GMT
re:
!> But is it a good practice to declare our own class of session insteads of
!> using the system one? In my opinion, own session class is more easy to manage
!> and no time-out issue.
There's no problem at all with using your own version of Session,
instead of the built-in one, as long as you know what you're doing.
Just place your class file ( *.cs or *.vb ) in the App_Code directory of your app,
and it will be automatically compiled, or manually compile an assembly
from your class file and place it in the /bin directory of your app.
Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
> Thank for your explanation.
> But is it a good practice to declare our own class of session insteads of
[quoted text clipped - 43 lines]
>> > Regards,
>> > Chow
Aidy - 28 Mar 2008 13:45 GMT
> But is it a good practice to declare our own class of session insteads of
> using the system one? In my opinion, own session class is more easy to
> manage
> and no time-out issue.
No, cos IIS manages if you have timed out, or are a new visitor etc, and you
use the built-in Session object to properly interact with that. You can't
impose your own time-out constraints, the web server will dictate when you
have timed out and when you do your session is destroyed and the next time
you access a page you're given a new session and are now a new user.
Coming from a desktop app background you maybe need to spend some time
familiarising how the lifespan of a web app differs.
Hans Kesting - 28 Mar 2008 13:54 GMT
on 28-3-2008, chowchho supposed :
> I am new to ASP.NET and most of my time spending on windows application. In
> my Windows application, I used to create a class called MySession and and
[quoted text clipped - 9 lines]
> Regards,
> Chow
It might not be so easy to "pass it from page to page", as the
page-classes themselves live only long enough to serve a single
request. Every request is handled by a fresh instance of the page.
This means that you can't just access a property of an instance of some
other page, as that instance does not exist.
An other "solution" that might occur to you is to use a singleton.
DO NOT DO THAT. The web application is a single application that serves
a number of users. If you use a singleton to store information, then
EVERY user sees the same information. This might or might not be what
you want.
That is the reason that the Session is available in web applications:
here you can store user-specific information (or rather *session*
specific information). This session usually depends on a temporary
cookie.
Hans Kesting
sloan - 28 Mar 2008 15:06 GMT
I really like this approach:
http://aspalliance.com/810_Implementing_a_Singleton_Pattern_in_C
I'm looking to extending it (one day) and be able to swap out which "store"
is being used based on key.
So I could decide to configuration wise....change whether or not I use
Session or ViewState .(as one permutation example) based on a simple
string/key.
..
But what he has is good as is.
>I am new to ASP.NET and most of my time spending on windows application. In
> my Windows application, I used to create a class called MySession and and
[quoted text clipped - 9 lines]
> Regards,
> Chow
Patrice - 28 Mar 2008 15:38 GMT
You could start by using the built in session mechanism this way :
http://www.codeproject.com/KB/aspnet/typedsessionstate.aspx
From this starting point point you'll have the flexibility to change the
underlying store and have the benefit of strongly typed access with
intellisense...
--
Patrice
>I am new to ASP.NET and most of my time spending on windows application. In
> my Windows application, I used to create a class called MySession and and
[quoted text clipped - 9 lines]
> Regards,
> Chow