Custom Http Handler Factory and Possible Concurrency Issues on Application Start

J

Jordan S.

Using .NET 3.5...

1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP
handler factory (class implementing IHttpHandlerFactory) is ever created in
an ASP.NET application?

2. Assuming the answer to #1 is "yes - never more than one instance" (I hope
that's true), then does ASP.NET automatically take care of concurrency with
respect to accessing that one instance?

My situation is that I have written a custom handler factory. In it's
constructor, I initialize a couple of class-scoped collections that are
subsequently used by logic called by the factory's GetHandler() method.

I am concerned that when the app is restarted (for whatever reason), and if
the site is really busy, multiple requests could arrive simultaneously (or
close enough to cause concurrency problems) while my custom factory is
initializing itself. Is there anything I can or should do to avoid race
conditions or other such concurrency problems - or will ASP.NET queue the
requests until the factory is ready to serve all of the queued requests?

I have observed that my custom factory is not instantiated until the first
request arrives (after an IIS or application restart)... thus my concern -
what if 100 requests arrive all at once and the factory isn't yet
instantiated and initialized?

Thanks.
 
J

Juan T. Llibre

re:
!> what if 100 requests arrive all at once

You mean if 100 requests arrive within the same 10,000th of one second ?
I'd find it very difficult to see that happening.
 
J

Jordan S.

The factory, upon startup (it being instantiated) hits the database. That's
a quick hit, but still it could be a full 1 second for the factory to fully
initialize itself.
It's reasonable to expect multiple requests to arrive within that one
second. Will those requests queue up nicely and wait for the factory to
initialize? Or would multiple instances of the factory be created?

-Jordan
 
B

bruce barker

1. no. there is one instance per httpapplication instance. the actually
loading of the code is serialized. httpapplication are keep in pool

-- bruce (sqlwork.com)
 
J

Juan T. Llibre

re:
!> It's reasonable to expect multiple requests to arrive within that one second.

Sure, but the requests for code-loading are serialized.
 
J

Jordan S.

Thanks Juan.


Juan T. Llibre said:
re:
!> It's reasonable to expect multiple requests to arrive within that one
second.

Sure, but the requests for code-loading are serialized.
 
J

Jordan S.

Thanks Bruce.


bruce barker said:
1. no. there is one instance per httpapplication instance. the actually
loading of the code is serialized. httpapplication are keep in pool

-- bruce (sqlwork.com)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top