I'm currently developing a C# MVC REST web api, and am trying to choose between one of two possibilities for our design.
Without getting too deep into our design, we intend to have a class for data access, which we'll call DataSource
. Each DataSource
will need to execute small, contained blocks of logic to correctly build an appropriate response. Due to a desire to be able to hot-load code in the future, we don't want to simply have these be functions on DataSource
, instead we'd like them to be provided by other assemblies. We have a proof of concept of this implemented, and so far, so good.
What I'm trying to decide between is writing a static class with a single static ExecuteQuery
function, or writing a factory method to create instances of these classes, which have an instance method called ExecuteQuery
.
What are the performance considerations between creating multiple, short-lived objects every request, vs calling static methods?
Intuitively, static methods would be faster, but I'm already expecting that I'll run into a bit of a headache calling them through reflection (to support the hot-loaded code requirement).
If there's not a huge penalty for short-lived objects, then they might win out on simplicity alone.
Relevant information about our expect loads:
- Response times in the 300ms - 800ms range
- Average load of about 2000 web clients
- Peak load of about 4000 clients
- Clients doing queries every 2 - 5 seconds
- Client peak rate of 1 query every second
Also, each DataSource
would create a maximum of 8, average of 3 of these instances.