G
Guest
I am currently developing a statistics system in ASP.NET, and need to share
information about the customers websites, in this application.
(I have simplified my code, to make my project easier to explain.)
The simple version of the system is like this : A customer inserts HTML code
on his webpage, which contacts my statistics server each time the customers
website recieves a hit - like a classic "register website traffic" system.
When the customers hit reaches my web application, I need to maintain info
and state about the customers website - therefore I have a "website" class,
which hold information about the customer website (raw hits, unique hits,
website name, hit today ect).
So the first time a customer hits my servers, I need to instantiate an
instance of the website class, and update the information in this class. Next
time I recieve a request for the same customer, I only need to update the
websites information in the instance of that class.
So, here is a picture of how it works today, when the first hit comes in :
1. Customer #100 sends a request to my statistics application.
2. I have no information about customer #100, so I instantiate a new
instance of the "website" class.
3. I update information, and sets the "unique hits" variable to 1 (as this
is the first hit).
After this, all hits coming after the first hit, only updates information in
the "website" class (ie. adds 1 to the "unique hits" variabel) - like in step
3.
I think (and hope) all the above is readable and understandable.
My problem now, is how I share these website classes in the global
application ????
Today I have a shared collection, which hold each instance of the website
class - like this :
public shared websites as new sortedlist
This shared collection can be accessed from all classes in my application,
and actually this works fine.
But, when my collection of websites reaches a certain limit (about 2500
"website" classes), the application starts to become VERY slow, and after
10-15 minutes it totally slows down and becomes useless.
And listen to me - we are talking VERY SLOW here - it runs on dual xeon HP
server, so hardware is enough for testcase ...
My question is now, if I am doing this the right way ??? How are you guys
shared objects among pages in an ASP.NET application ???
Is there are correct way to share objects globally in an ASP.NET application ?
-
Regards,
Tony Fonager, Denmark
information about the customers websites, in this application.
(I have simplified my code, to make my project easier to explain.)
The simple version of the system is like this : A customer inserts HTML code
on his webpage, which contacts my statistics server each time the customers
website recieves a hit - like a classic "register website traffic" system.
When the customers hit reaches my web application, I need to maintain info
and state about the customers website - therefore I have a "website" class,
which hold information about the customer website (raw hits, unique hits,
website name, hit today ect).
So the first time a customer hits my servers, I need to instantiate an
instance of the website class, and update the information in this class. Next
time I recieve a request for the same customer, I only need to update the
websites information in the instance of that class.
So, here is a picture of how it works today, when the first hit comes in :
1. Customer #100 sends a request to my statistics application.
2. I have no information about customer #100, so I instantiate a new
instance of the "website" class.
3. I update information, and sets the "unique hits" variable to 1 (as this
is the first hit).
After this, all hits coming after the first hit, only updates information in
the "website" class (ie. adds 1 to the "unique hits" variabel) - like in step
3.
I think (and hope) all the above is readable and understandable.
My problem now, is how I share these website classes in the global
application ????
Today I have a shared collection, which hold each instance of the website
class - like this :
public shared websites as new sortedlist
This shared collection can be accessed from all classes in my application,
and actually this works fine.
But, when my collection of websites reaches a certain limit (about 2500
"website" classes), the application starts to become VERY slow, and after
10-15 minutes it totally slows down and becomes useless.
And listen to me - we are talking VERY SLOW here - it runs on dual xeon HP
server, so hardware is enough for testcase ...
My question is now, if I am doing this the right way ??? How are you guys
shared objects among pages in an ASP.NET application ???
Is there are correct way to share objects globally in an ASP.NET application ?
-
Regards,
Tony Fonager, Denmark