I'm more of a WinForms developer but I would think that a singleton for your
database connection in a Web Application would be a bad idea.... my
understanding is that by default IIS will service 10 threads at a time so
now you have 10 threads fighting over that database connection.. assuming
it's even thread safe. Am I missing something here?
On 10/16/07, Abhijit Gadkari <[EMAIL PROTECTED]> wrote:
>
> We are writing an ASP.NET application. We have used singleton for
> instantiating a database connection as explained in the following code
> sample.
>
>
>
> Design thought was to use only one instance of MyDb across all the pages
> in
> this web application. Is this a correct singleton implementation for
> Asp.NETweb application for managing database connection? In fact, this
> code got C –
> or D in our internal code review. Don't know why? Any idea on how to
> improve
> this code to A level.
>
>
>
> public sealed class AppDbProvider : IDisposable
>
> {
>
> public static readonly AppDbProvider instance = new
> AppDbProvider();
>
>
>
> private readonly MyDb _d = new MyDb(ConfigurationManager
> .ConnectionStrings["my_connection"].ConnectionString,
>
> ConfigurationManager.ConnectionStrings[
> "my_connection"].ProviderName);
>
>
>
> public MyDb GetDbConnection()
>
> {
>
> if (_d != null)
>
> return _d;
>
> else
>
> throw new Exception("Problem with Database Connection in
> AppDbProvider.");
>
> }
>
>
>
> #region IDisposable Members
>
>
>
> public void Dispose()
>
> {
>
> if (_d != null)
>
> _d.Dispose();
>
>
>
> Dispose();
>
>
>
> }
>
>
>
> #endregion
>
> }
>
>
>
> Now in code behind file, we have following code
>
>
>
>
>
> public partial class CreatePage
>
> {
>
> private AmgDb _d;
>
>
>
> try
>
> {
>
> _d = AppDbProvider.instance.GetDbConnection();
>
> }
>
> Catch (Exception exce)
>
> {
>
> Response.write(exce.message);
>
> }
>
>
>
> }
>
>
>
> And in the end, in the page unload event we have following cleanup code
>
>
>
> protected void Page_Unload(object sender, EventArgs e)
>
> {
>
> if (_d != null)
>
> {
>
> _d = null;
>
> }
>
> }
>
> ===================================
> This list is hosted by DevelopMentor(r) http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
>
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com