sorry but i had to weigh in on the issue of Database connections.
Most of the database providers implement a connection pooling mechanism, with typical settings of max 30 connections.
Which means that if 50 users are accessing the site, 30 connections are open to the database. This is normal and expected. All 50 users will be vying for time on one of the 30 connections each time a query is executed. So in theory, the last 20 queries will have to wait for the first 30 to finish before executing.
Since most queries are simple and can be fetched in milleseconds, the perceived wait time is nil.
However, as you scale up, contention for the 30 connections grows. At which point it is simply recommended to scale up the connection pool size. However, you typically would not see any major impact until you began to hit 1000 simulatenous users. And by simultaneous, I mean clicking at the exact same time, and not 1000 users accessing the site, because all 1000 most likely would not be hitting at exactly the same time.
Anyhow, cf has a convient query caching mechanism that will store results from previous queries if the query parameters are the same, thereby futher reducing a connection attempt.
CF's queries are all closed at the end of the page request.
ASP.Net's manual queries are controlled more by the developer, and hence are subject to the knowledge level of the developer, ie, if he doesnt close the query, it'll have to wait for the GC to collect it and dispose it.
I have seen many many many instances of people incorrectly increasing connection pool size because of poor connection management in ASP.Net.
Of note, in Asp.Net, I am designing some CF-similar controls, especially the CFQuery and CFMail, that are Asp.Net controls, and give the ease of use and quick-to-show type of presentation that Asp.Net is seriously lacking.
Stay tuned to my site, www.ensoft-software.com
----
E.Newton
ASP.Net/C# Solutions Developer and Consultant
Ensoft Software
http://www.ensoft-software.com/
eric@ensoft-software.com.cc (Remove the CC)