473,385 Members | 1,606 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Architecure Question

Lets say i had two classes, user and customer that represented tables in the
database with 7 or 8 fields max. Lets say that instead of passing an id
around hitting my database any time i needed information from those 2
tables, i just made those two classes serializable and passed them around in
a session object.

Is this a good idea? Is it scalable if the app were to host 1000000's of
users at once? Will it perform well?

thanks
Aug 11 '06 #1
1 829
Hello M.

I'll try to answer your question, but there's not a lot of detail there
about the business problem you are trying to solve.

"Muckeypuck" <Bl**********@blah.blahwrote in message
news:aq%Cg.129$xk3.52@dukeread07...
Lets say i had two classes, user and customer that represented tables in
the database with 7 or 8 fields max. Lets say that instead of passing an
id around hitting my database any time i needed information from those 2
tables, i just made those two classes serializable and passed them around
in a session object.

Is this a good idea? Is it scalable if the app were to host 1000000's of
users at once? Will it perform well?
There is nothing wrong with using the Data Transfer Object pattern to move
data around. Keeping a bit of data in the session is essentially the same
as placing it in a cache object that you can access later.

Normally, you want to place things in the cache that ALL of your customers
can use. For example, let's say that you have a set of canned reports that
you can make available to your customers. Keeping the names of the reports
in the cache is useful because you may need to fill a navigation list or
drop-down box in 100 page requests in the same second and making a bunch of
database requests may not be terribly efficient.

On the other hand, if you place things in the cache that are likely to be
specific to the user on your site, you run the risk of blowing your cache up
to a very large size. That will CERTAINLY affect throughput. Realize that
the session object tends to hang around a while after the user has actually
left, so if you have 60,000 users per hour, you need to be able to hold data
for 20,000 of them at a time.

You also have the problem of making your session objects available across a
web farm. (at the rate of 60K users per hour, you will have a LOT of web
servers). Realize what this means... the web server servicing the request
does not actually have the session object. It has to contact another server
to get it. That other server has to use an ID to look it up. If there is a
lot of data in the cache, it will store things on a hard drive in a system
known for fast lookup (like, for example, SQL Server). The data will be
found and transmitted across your internal network back to the web server.
Sounds like a db lookup, doesn't it? Not really a good tradeoff to try to
avoid hitting a database by putting things into a cache that is backed up by
a database.

In a normally stateless environment, it is rare to see the need for placing
a customer or user object in the session. I'd leave the data in the
database between requests. No harm in bringing the data into a singleton
during the request processing, so that multiple classes can access it.
Wouldn't use the session for that, though.

I hope this helps,

--
--- Nick Malik [Microsoft]
MCSD, CFPS, Certified Scrummaster
http://blogs.msdn.com/nickmalik

Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
I do not answer questions on behalf of my employer. I'm just a
programmer helping programmers.
--
Aug 11 '06 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Stevey | last post by:
I have the following XML file... <?xml version="1.0"?> <animals> <animal> <name>Tiger</name> <questions> <question index="0">true</question> <question index="1">true</question> </questions>
7
by: nospam | last post by:
Ok, 3rd or is it the 4th time I have asked this question on Partial Types, so, since it seems to me that Partial Types is still in the design or development stages at Microsoft, I am going to ask...
3
by: Ekqvist Marko | last post by:
Hi, I have one Access database table including questions and answers. Now I need to give answer id automatically to questionID column. But I don't know how it is best (fastest) to do? table...
10
by: glenn | last post by:
I am use to programming in php and the way session and post vars are past from fields on one page through to the post page automatically where I can get to their values easily to write to a...
10
by: Rider | last post by:
Hi, simple(?) question about asp.net configuration.. I've installed ASP.NET 2.0 QuickStart Sample successfully. But, When I'm first start application the follow message shown. ========= Server...
53
by: Jeff | last post by:
In the function below, can size ever be 0 (zero)? char *clc_strdup(const char * CLC_RESTRICT s) { size_t size; char *p; clc_assert_not_null(clc_strdup, s); size = strlen(s) + 1;
56
by: spibou | last post by:
In the statement "a *= expression" is expression assumed to be parenthesized ? For example if I write "a *= b+c" is this the same as "a = a * (b+c)" or "a = a * b+c" ?
2
by: Allan Ebdrup | last post by:
Hi, I'm trying to render a Matrix question in my ASP.Net 2.0 page, A matrix question is a question where you have several options that can all be rated according to several possible ratings (from...
3
by: Zhang Weiwu | last post by:
Hello! I wrote this: ..required-question p:after { content: "*"; } Corresponding HTML: <div class="required-question"><p>Question Text</p><input /></div> <div...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.