public RespuestaMetodoTop10Gifs SelectTop10GifsDB()
        {
            Log             objLog    = new Log();
            string          Codigo    = "000";
            string          Mensaje   = "OK";
            List <GifImage> Imagenes  = new List <GifImage>();
            MySQLData       oDataBase = new MySQLData();

            try
            {
                oDataBase.Open();
                DataSet dsDatos = Data.SelectTop10Gifs(ref oDataBase);
                if (dsDatos.Tables.Count > 0)
                {
                    DataTable tbl = dsDatos.Tables[0];
                    foreach (DataRow Registro in tbl.Rows)
                    {
                        int      Id            = int.Parse(Registro["Id"].ToString());
                        int      num_accesos   = int.Parse(Registro["num_accesos"].ToString());
                        string   nombrearchivo = Registro["nombrearchivo"].ToString();
                        byte[]   archivo       = (byte[])Registro["archivo"];
                        GifImage Imagen        = new GifImage();
                        Imagen.Id         = Id;
                        Imagen.NumAccesos = num_accesos;
                        Imagen.Nombre     = nombrearchivo;
                        Imagen.Imagen     = archivo;
                        Imagenes.Add(Imagen);
                    }
                }
            }
            catch (Exception exc)
            {
                Codigo  = "999";
                Mensaje = String.Format("Error.  Detalles: {0}", exc.Message);
            }

            oDataBase.Close();

            RespuestaMetodoTop10Gifs Respuesta = new RespuestaMetodoTop10Gifs();

            Respuesta.CodigoRetorno  = Codigo;
            Respuesta.MensajeRetorno = Mensaje;
            Respuesta.Imagenes       = Imagenes;

            LogSelectTop10Gifs(objLog, Respuesta);

            return(Respuesta);
        }
        private void LogSelectTop10GifsId(Log objLog, RespuestaMetodoTop10Gifs Respuesta)
        {
            string Metodo = "SelectTop10GifsId";
            string Titulo = String.Format("Método {0} - Respuesta del Método", Metodo);

            objLog.WriteTitulo(Titulo);
            objLog.WriteLogLine(String.Format("Codigo                   : {0}", Respuesta.CodigoRetorno));
            objLog.WriteLogLine(String.Format("Mensaje                  : {0}", Respuesta.MensajeRetorno));

            int i = 0;

            foreach (GifImage imgn in Respuesta.Imagenes)
            {
                i++;
                objLog.WriteLogLine(String.Format("{0:00}.- Archivo GIF Id {1:0000} : {2:0000} acceso(s).", i, imgn.Id, imgn.NumAccesos));
            }
        }
        // Base de Datos -> Carpeta
        public string[] ImportGifs()
        {
            string Codigo     = "000";
            string Mensaje    = "OK";
            int    n          = 0;
            int    IndiceRead = 0;

            try
            {
                RespuestaMetodoTop10Gifs RespuestaSelect = SelectTop10GifsDB();
                if (RespuestaSelect.CodigoRetorno == "000")
                {
                    n = RespuestaSelect.Imagenes.Count;
                    int i = 0;
                    foreach (GifImage imgn in RespuestaSelect.Imagenes)
                    {
                        object img           = imgn.Imagen;
                        string nombrearchivo = imgn.Nombre;
                        Image  imagen        = StreamToImage(img, nombrearchivo);
                        if (imagen != null)
                        {
                            IndiceRead++;
                        }
                        i++;
                    }
                }
                else
                {
                    Codigo  = RespuestaSelect.CodigoRetorno;
                    Mensaje = RespuestaSelect.MensajeRetorno;
                }
            }
            catch (Exception exc)
            {
                Codigo  = "999";
                Mensaje = String.Format("Error.  Detalles: {0}", exc.Message);
            }

            string[] Respuesta = new string[] { Codigo, Mensaje, n.ToString(), IndiceRead.ToString() };
            return(Respuesta);
        }
        public RespuestaMetodoTop10Gifs SelectTop10GifsCache()
        {
            Log             objLog   = new Log();
            string          Codigo   = "000";
            string          Mensaje  = "OK";
            List <GifImage> Imagenes = new List <GifImage>();

            String  fqdnSILO1 = ConfigurationManager.AppSettings["fqdnSILO"];
            int     tcpSILO1  = int.Parse(ConfigurationManager.AppSettings["tcpSILO"]);
            DataSet oDS       = new DataSet();

            try
            {
                //Se define la configuración y se instancia el FrontEnd (Cliente del SILO)
                ClientConfiguration clientConfig = new ClientConfiguration {
                    GatewayProvider = ClientConfiguration.GatewayProviderType.Config
                };

                //Para ello usaremos la dirección IPv4 que nos resuelva el DNS
                IPHostEntry ipHostInfo = Dns.GetHostEntry(fqdnSILO1);
                IPAddress   ipSILO1    = ipHostInfo.AddressList.FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
                clientConfig.Gateways.Add(new IPEndPoint(ipSILO1, tcpSILO1));
                IClusterClient client = new ClientBuilder().UseConfiguration(clientConfig).Build();

                //Se realiza la conexión al SILO
                client.Connect().Wait();

                //Se define el objeto objRemoto para referenciar el grain de la interfaz IGIFSGrain del SILO
                IGIFSGrain objRemoto = client.GetGrain <IGIFSGrain>(0);

                //Definimos el DataSet oDS y registramos en el mismo, el DataSet de noticias de la cache, que se
                //obtiene del método "LeerNoticias", declarado en el SILO

                objRemoto.CargarGIFSALaCache().Wait();
                oDS = objRemoto.LeerGIFSDesdeLaCache().Result;

                //Se cierra la conexión con el SILO
                client.Close();

                if (oDS.Tables.Count > 0)
                {
                    DataTable tbl = oDS.Tables[0];
                    foreach (DataRow Registro in tbl.Rows)
                    {
                        int      Id            = int.Parse(Registro["Id"].ToString());
                        int      num_accesos   = int.Parse(Registro["num_accesos"].ToString());
                        string   nombrearchivo = Registro["nombrearchivo"].ToString();
                        byte[]   archivo       = (byte[])Registro["archivo"];
                        GifImage Imagen        = new GifImage();
                        Imagen.Id         = Id;
                        Imagen.NumAccesos = num_accesos;
                        Imagen.Nombre     = nombrearchivo;
                        Imagen.Imagen     = archivo;
                        Imagenes.Add(Imagen);
                    }
                }
            }
            catch (Exception exc)
            {
                Codigo  = "999";
                Mensaje = String.Format("Error.  Detalles: {0}", exc.Message);
            }

            RespuestaMetodoTop10Gifs Respuesta = new RespuestaMetodoTop10Gifs();

            Respuesta.CodigoRetorno  = Codigo;
            Respuesta.MensajeRetorno = Mensaje;
            Respuesta.Imagenes       = Imagenes;

            LogSelectTop10Gifs(objLog, Respuesta);

            return(Respuesta);
        }