Spring.Net how does WebApplicationContext.GetObject handle concurrent requests?
Apologies if I have missed something obvious here but having gone through the documentation, forums and googled for a number of hours, I just can't find a definitive answer to the following questions:
How does the WebApplicationContext.GetObject() method handle concurrent requests? Are the requests serialized or executed in parallel? Is there any performance data available to demonstrate how it behaves under load?
Thanks in advance for your help,
I received the response from Mark Pollack on the Spring.Net forum which gives a pretty definitive answer (Mark is Co Lead on the Spring.Net project):
There is a lock around retrieving/creating singleton objects and non singleton objects, prototypes, are effecdtively 'newed' within the calling thread. I've revived some tests around this area, ConcurrentObjectFactoryTests, which had a config file for ages but no test impl using it, as well as in DefaultListableObjectFactoryPerfTests.
There were some microbench marks that I did a while ago when there was attention on this in the Java world between Spring and Guice. (The cutely named "Semi Useless Benchmark").
The ".NET ported" classes from the benchmark are inside DefaultListableObjectFactoryPerfTests. I don't have any performance data for Spring.NET. The community has reported issues with concurrency in the past (quite a while ago) which were fixed and I'm unaware of any specific issues in this area.