Foros del Web » Programación para mayores de 30 ;) » .NET »

Duda con Singleton

Estas en el tema de Duda con Singleton en el foro de .NET en Foros del Web. Hola a todos, estoy desarrollando un juego web del tipo Ogame. El caso es que para reducir la carga que se le da a la ...
  #1 (permalink)  
Antiguo 06/08/2009, 12:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 16 años, 4 meses
Puntos: 0
Duda con Singleton

Hola a todos, estoy desarrollando un juego web del tipo Ogame.

El caso es que para reducir la carga que se le da a la BBDD me han recomendado utilizar Singleton.

Una vez que tengo creada la Clase Singleton crearía la instancia de singleton con

Código:
Singleton sl;
sl= Singleton.Instance;
aunque aquí me dice sl no existe

Una vez que ya tengo la instancia de singleton si quiero realizar la inserción en la BBDD desde un formulario a través de singleton como debo hacerlo ? ¿con

sl=NewUser(campos a insertar)?

Gracias por adelantado
  #2 (permalink)  
Antiguo 07/08/2009, 00:24
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Duda con Singleton

Código:
    public class DataAccess
    {

        private static DataAccess _Instancia = null;
        private DbProviderFactory _objFactoriaBD = null;

        [MethodImpl(MethodImplOptions.Synchronized)]
        private static void CreateInstance()
        {

            if (_Instancia == null)
            {

                _Instancia = new DataAccess();
                _Instancia._objFactoriaBD = DbProviderFactories.GetFactory(_Instancia.ProveedorConexion);
            }
        }

        public int ExecuteSql(string sentenciaSql){ }
    }
Eso por ejemplo sería un ejemplo de una clase Singelton. Luego, para usarla:

Código:
int numFilasAfectadas = DataAccess.Instancia.ExecuteSql("insert into ....");
Espero te sirva. Para entender como es la filosofía.

Saludos.
__________________
Charlie.
  #3 (permalink)  
Antiguo 10/08/2009, 10:08
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: Duda con Singleton

Debes entender bien el concepto de Singleton para que no te confundas, ahy 2 formas en mi punto de vista para hacer uso de esta técnica que es siempre tener 1 instancia de un objeto.

1- Clase que se instancie a ella misma una sola vez
Esta técnica se basa en poner el constructor como private y crear una Propiedad static de la misma clase dentro de ella:

using System;

public class Singleton
{
private static Singleton instance;

private Singleton() {}

public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}

2- Clase que hace 1 sola instancias static de otras clases
Esta técnica se basa en anidar en una sola clase otras clases que son instanciadas una sola vez y pueden ser accesadas desde cualquier punto de un programa.

using System;

public class Global
{
private static DataBaseClass instance;

public static DataBaseClass DataBase
{
get
{
if (instance == null)
{
instance = new DataBaseClass();
}
return instance;
}
}
}

De esta forma desde cualquier parte se usaría: Global.DataBase.Execute(query) ó cualquier método que tengan definido en la clase DataBase.

Dejo más referencia aquí:
http://es.wikipedia.org/wiki/Singleton

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:25.