July 15, 2015

No Comments

¿Qué es SPOON?

 

Muchas de las veces como desarrollador web tienes la necesidad de probar el diseño de tu página en distintos navegadores a diferentes resoluciones para evitar que algo no se vea de la manera en que estabas pensando.

SPOON es una herramienta que ayuda a ese tipo de problemas es una aplicación que emula los distintos navegadores que existen para que se puedan realizar las pruebas necesarias, no solo páginas web si no también probar videojuegos, IDE y herramientas de desarrollo.

El servicio de SPOON funciona de la siguiente manera.

  • Registro de cuenta en la página oficial Spoon.net
  • Descargar la aplicación
  • Seleccionar el tipo de plataforma que queremos probar FireFox, Chrome, …..

Este tipo de servicio tiene como objetivo principal el centrar todos los navegadores y sus herramientas en una sola aplicación dejando atrás el tener que estar instalando los distintos navegadores en nuestros PC, una de las ventajas es que también nos permite tener a la mano los navegadores que son para mobile para que podamos interactuar con nuestra aplicación en la que estamos trabajando de manera rápida sin tener que pasar nuestra SDK a la aplicación y probarla desde la misma.

SPOON tiene dos servicios en el cual el gratuito nos permite navegar en las últimas versiones de los navegadores con sus características incluidas, y esta la versión de paga esta versión nos permite emular las versiones más antiguas de los navegadores teniendo como ventaja el si un cliente maneja una versión en específico poder realizar las pruebas necesarias en esa versión

NAVEGADORES MOBILE

Realmente un navegador mobile dentro de SPOON es idéntico al de un Android o IOS la forma en que se interactúa es muy similar a la que se descarga en la google play o en el app store , para poder obtener esta plataforma solo tenemos que tener la aplicación y estar registrados dentro de SPOON y listo

Opera mobile nos permite elegir la configuración de distintos dispositivos o elegir la resolución de la pantalla como la densidad del pixel y el tipo de entrada táctil o del teclado la forma de ejecutarlo es igual a la anterior

Ventajas

  • Permite la emulación de navegadores como lo son
    • Chome
    • FireFox
    • Opera
    • Opera Mobile
    • Safari
    • FireFox
    • Internet Explorer
  • Cada navegador tiene sus configuraciones
  • Permite tener distintas resoluciones
  • La versión de paga permite tener distintas versiones del navegador
  • Todo está centralizado en una misma aplicación
  • La versión gratuita nos permite tener todos los navegadores (Solo ultima versiones)
  • El registro es gratuito

Desventajas

  • La velocidad en que abre el navegador es lenta

     

July 15, 2015

No Comments

¿Que son las directivas de compilación condicional?

 

Con esta funcionalidad podemos determinar cómo se comportará el compilador con el código que acabamos de generar, para así tomar diferentes rutas de compilación.

 

En ocasiones requerimos que nuestro sistema tenga un comportamiento en ambiente de desarrollo y otro comportamiento diferente en producción, esto con el objetivo de facilitar la depuración y el mantenimiento en tiempo de desarrollo y es por eso que existen las directivas de compilación condicional.

 

Estas consisten en una serie de constantes que proveen la infraestructura para diferenciar si estamos compilando en modo DEBUG y RELEASE.

 

En el código la forma de representarlo es mediante 2 constantes predefinidas las cuales son:

 

  • DEBUG: Esta constante nos indica que estamos compilando nuestro código en modo Debug.
  • RELEASE: Esta constante nos indica que estamos compilando nuestro código en modo Release.

 

La manera de utilizar estas directivas para ejecutar o no ejecutar código dependiendo si estamos en tiempo de desarrollo, es la siguiente:

 

public bool DebugMethod()

{

#if DEBUG

    return true;

#else

    return false;

}

 

Este método verifica si estamos compilando en modo DEBUG y si es así nos regresa un true.

Algunas de las ventajas que tenemos al utilizar esta funcionalidad son:

 

  • Código centralizado
  • No se repite el código
  • El mantenimiento es más eficiente
  • Ahorro en tiempo de programación
  • Útil para desarrollos que tengan acceso restringido a los módulos

 

July 15, 2015

No Comments

¿Cómo usar los métodos de forma asíncrona?

 

Tras la versión del Framework 4.0 se mejoraron muchas de las características en las librerías una de ellas es la ejecución de los procesos asíncronos más simplificados, antes de esta versión para poder utilizar un proceso de manera asíncrona como por ejemplo estar ejecutando un método que invoca un servicio se daba el uso de los delegados en cuanto sl uso de los controles se utiliza de this invoke para realizar la comunicación con los controles de ASP.

En la versión 4.0 se agregó una característica más simple que tiene por nombre la librería Task Parallel Library que contiene la clase Task para el manejo de los objetos que suelen ser llamados de manera asíncrona.

 

Características

  • ASYNC, se utiliza en aquellos métodos que van a realizar acciones de manera asíncrona , es uno de los requisitos para un método que va llevar a cabo una acción asíncrona
  • AWAIT , esta es la instrucción que se da para que se realice una acción de manera asíncrona, no se bloquean las demás acciones solo se ejecutaran una vez que se termine con la tarea asignada.
  • CANCELLATION TOKEN, este realiza la cancelación de la tarea.
  • WHENALL, se utiliza para esperar a las tareas asíncronas teniendo como valor de regreso un array de tipo anónimo T
  • WHENANY, este permitiendo tener la primera tarea que se encuentre disponible teniendo una serie de tareas por ejecutar este regresara un valor de tipo TASK.

 

var whenAnyEjemplo = await Task.WhenAny();

 

  • FROMRESULT, regresa un objeto TASK teniendo como parámetro un anonimo T
  • DELAY, utilizado para asignar retrasos o pausa en los métodos asíncronos
  • YIELD, procesa otros mensajes

     

Ejemplo

Este es un ejemplo de método asíncrono con el evento Click de un botón

protected
async
void btnAsincrono_Click(object sender, EventArgs e)

{


var cancel =
new
CancellationTokenSource();


var task =
new
List<Task<string>> {


Task<string>.Run( delegate {


return Simple();}),


Task<string>.Factory.StartNew(() => GetText.GetBuilder(cancel.Token),cancel.Token),


Task<string>.Factory.StartNew(() => GetText.GetConcat(cancel.Token),cancel.Token)

};

 


try

{


string a =
await
await
Task.WhenAny(tasks);

}


catch (Exception)

{

 


throw;

}

}

July 15, 2015

No Comments

Que son los métodos de extensión (C#)

 

Dentro de la programación nos encontramos muchas veces con reglas en el negocio que se aplican casi todo el tiempo por ejemplo la suma del IVA en distintas partes del código se puede estar utilizando esta regla, se tienen dos formas de atacar este ejercicio uno es el crear un método que reciba el numero en el cual queramos aplicarle el IVA y que este método sea heredado o sea aplicado en cada página las veces que sean necesarias o crear una extensión que reciba un valor de la misma manera como lo veremos a continuación

 

Lo que vamos a hacer es añadir un metodo nuevo en este caso uno que nos calcule cuales el IVA que se va aplicar. Los metodos de extencion tienen el mismo aspecto que los metodos que son estaticos aun que tienen la diferencia que el primer parametro debe de llevar la palabra this.

 

public
static
class
Extensores

{


public
static
double CalculaIVA(this
double monto)

{


return monto *
16;

}

}

 

El método se trata de un método que es estático y está dentro de una clase que se llama extensores una de las reglas para que funcione la extensión es que el método sea static

Para llamar el método de CalcularIVA se puede llamar desde cualquier parte del código sin tener que heredar la clase Extensores aquí el ejemplo:

 

 

Podemos notar que al crear una variable del tipo doublé y asignarle un valor el Intellinsense nos muestra las acciones que se pueden realizar con ese tipo de objeto y entre una de esas se encuentra el método que nosotros acabamos de extenderle a ese tipo doublé

 

Ventajas

  • Se pueden generar extensiones sobre una interfaz donde todas las clases que estén heredando de esa clase o implementen la interfaz tendrán el método de la extensión
  • Los métodos de la extensión también pueden ser genéricos.

July 15, 2015

No Comments

SOA (Arquitectura Orientada a Servicios)

 

La Arquitectura Orientada a Servicios es un concepto de arquitectura de software que define la utilización de servicios para dar mantenimiento a las necesidades del negocio para lo cual fue realizado.

Esta arquitectura permite crear sistemas altamente escalables, que pueden ayudar a las organizaciones a impulsar el rendimiento y al mismo tiempo, reducir costos en las implementaciones que se requieran en cuestión tecnológica y mejora la flexibilidad en los procesos del negocio.

SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de negocio y da soporte a las actividades de integración y consolidación de los datos de cualquier organización mediante servicios.

Cada servicio provee funcionalidades para poder ser adecuado a las necesidades de la empresa y facilita la complejidad, inflexibilidad y debilidades de los enfoques existentes en los diseños de procesos, flujos de trabajo e integración de aplicaciones, es por eso que es adaptable para casi todos los requerimientos tecnológicos.

 


 

Un beneficio adicional del SOA es que provee la habilidad de modernizar los procesos de negocios, que a su vez promueve una administración de procesos de negocios ágil.

SOA provee una forma de hacer que los procesos de negocios sean más fáciles de comprender para los cliente o usuario que no tienen alguna preparación tecnológica, de forma que puedan ser personalizados y optimizados para cubrir mejor las crecientes exigencias de los clientes sobre tiempos de respuesta reducidos, mientras se mantiene alta calidad y rentabilidad.

Para aplicar SOA es necesario disminuir la complejidad de los procesos de negocio mediante un análisis lo que facilita la integración entre la aplicación y el negocio, reduciendo costos significativamente y haciendo más eficientes cada uno de los procesos

Entre las diferentes características las que definen a SOA, se encuentran las siguientes:

 

  • Servicios de infraestructura para autenticación y acceso a la información

 

  • Servicios CRUD para leer y actualizar datos

 

  • Servicios de integración para la transformación y la calidad de la información que será entregada una vez procesada por el servicio

 

  • Ofrece y garantiza la validación y calidad de la información

 

  • Proporciona herramientas basadas en funciones con metadatos que permiten analizar y solucionar problemas de manera rápida

 

July 15, 2015

No Comments

Interfaces Implícitas y Explicitas

 

La interfaces es una manera de construir un tipo de contrato entre las clases que tenemos dentro de nuestro proyecto, pero tenemos que tener en cuenta que para poder realizar ese tipo de contrato tenemos que implementar los distintos métodos que sabemos que ya están definidos en una clase y pueden estar ya disponibles dentro de la interface.

 


 

 

Interfaces Implícitas

Al tener solo una interfaz heredando en una clase es común que se utilice este tipo de implementación ya que es la manera más común de invocar a un método dentro de una clase ejemplo:

public
class
Implicita : IImplicita

{


public
void Metodo()

{


Console.WriteLine(“Esto es la manera implicita”);

}

}

 

Interfaces Explicitas

Al tener más de una interfaz lo más común es la implementación de las interfaces explicitas ¿Que diferencia tiene sobre la implícita?, pues solamente que en la explicita al tener más de dos herencias se está definiendo de donde se está utilizando dichos métodos como lo vemos a continuación

 

public
class
Explicita : IExplicita , IExplicita2

{


void IExplicita.MiMetodo()

{


Console.WriteLine(“Hola esto e sla interface 1″);

}

 


void IExplicita2.MiMetodo()

{


Console.WriteLine(“Hola esto es la interface 2″);

}

 

}

 

Para ser utilizado dentro de una página por ejemplo se invocaría de esta manera

Explicita e =
new
Explicita();

((IExplicita)e).MiMetodo();

 


 

July 15, 2015

No Comments

Expresiones Lambda

 

Las Expresiones Lambda aportan una sintaxis más concisa y funcional para escribir métodos anónimos.

Un método anónimo es una instrucción o expresión insertada que puede utilizarse en cualquier lugar donde se espere un tipo delegado. Puede utilizarla para inicializar un delegado con nombre o pasarla en lugar de un tipo delegado con nombre como un parámetro de método.

Es por eso que son las más utilizadas para escribir peticiones LINQ y para optimización de código ya que permiten una forma muy compacta de escribir funciones que puedan ser pasadas como argumentos para un tratamiento posterior.

El siguiente ejemplo es una expresión lambda de manera sencilla:

X=> x+1

En donde podemos observar que tenemos un argumento “x” que retorna un valor “x+1“.

Los métodos anónimos permiten omitir la lista de parámetros, esto significa que los métodos anónimos pueden convertirse en delegados con diversas firmas.

A continuación se muestra una expresión Lambda para especificar un filtro, en este caso del nombre de una persona y poder identificarla:


 

List<Persona> personas = new List<Persona> (

{

new Persona {Nombre = “Angel”, Apellido =”Valdez”}

new Persona {Nombre =”Carlos”, Apellido =”Chavez”}

new Persona {Nombre = “Eduardo”, Apellido = “Sanchez”}

new Persona {Nombre = “Giovanni”, Apellido = “Torres”}

}

);

Persona persona1 = personas.Where (p=>p.nombre == “Angel”);

 

En el ejemplo:

 

personas.Where (p=>p.Nombre == “Angel”);

Es la expresión Lambda, y la función que realiza es verificar que la clase que queremos obtener sea la que en su atributo “Nombre” sea igual a “Angel”.

p

Es el argumento de la función.

Las expresiones lambda infieren el tipo de dato automáticamente de la firma de la función padre, en este caso el WHERE requiere un argumento de tipo “Persona”, con lo cual p es de tipo “Persona”.

 

=>

Este operador indica que estamos utilizando una expresión Lambda, posicionando los argumentos del lado izquierdo del operador y las instrucciones de la función del lado derecho.

 

Personas.Where

Es el cuerpo de la función que devuelve la clase que cumpla la condición.

 

Como podemos observar las expresiones Lambda nos permiten abreviar el método en el mismo lugar que se usará, esto nos ahorra tiempo, espacio y optimiza nuestro código de tal manera que sea entendible y eficiente.