sábado, 31 de enero de 2015

!Apunte semanal - Configurando el pool de conexiones de Entity Framework.


Sin lugar a dudas uno de los aspectos más importantes y que pueden afectar favorablemente o desfavorablemente el rendimiento de nuestras aplicaciones, es el acceso a fuentes de datos, ya que implica un costo considerable establecer conexión con dichas fuentes. Es por eso que una técnica muy utilizada para lidiar con este problema es el connection pooling o pool de conexiones, el cual permite mantener un número definido de conexiones abiertas  y disponibles para que la aplicación o aplicaciones puedan usarlas sin tener que esperar a abrir una conexión, y es el pool quien se encarga de mantener estas conexiones y distribuirlas según se requiera.


Entity Framework a diferencia de otros ORM's no maneja directamente el pool de sesiones, sino que lo hace a través de ADO.Net, quien se encarga de manejar los pool para los diferentes Data Providers.

¿Y cómo puedo configurar este pool de Ado.Net?

ADO.Net maneja un pool de conexiones por cada cadena de conexión que tengamos en nuestra aplicación, quiere decir que si nos conectamos a dos bases de datos diferentes habrá un pool para cada una de ellas, o si generamos cadenas de conexión dinámicamente en tiempo de ejecución tendremos N pools de conexiones dependiendo de las que generemos (Esto de generar cadenas de conexión en tiempo de ejecución, es muy contraproducente para el manejo del pool), es por esto que si queremos configurar el pool de conexiones debemos hacerlo modificando los siguientes parámetros:

Parámetros a modificar en la cadena de conexión:

<add name="ConnectioName" connectionString="data source=TAVOPC;initial catalog=PoolDemo;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;
Connection Lifetime=120; Max Pool Size=20; Min Pool Size = 1; Pooling=True;" providerName="System.Data.SqlClient" />

Como podemos ver hacemos uso de cuatro parámetros en la cadena de conexión que corresponden a la configuración del pool, aunque sus nombres son muy dicientes veamos de que se trata cada uno:

Connection LifeTime: Define el tiempo de duración de las conexiones abiertas, se compara la hora en que se creó la conexión con el tiempo actual, para determinar según esta variable si se destruye la conexión o si permanece en pool, su valor esta dado en segundos y su valor por defecto es 0 que indica configurar el mayor tiempo de duración permitido.

Max Pool Size: Define el número máximo de conexiones gestionadas por el pool.

Min Pool Size: Define el número mínimo de conexiones gestionadas por el pool.

Pooling: Define si se va a utilizar el pool para gestionar las conexiones o no.

Bueno y eso es todo de este apunte semanal, espero sea de utilidad.

Saludos y buena suerte!

viernes, 16 de enero de 2015

!Apunte semanal - Utilizar nombres de variables con palabras reservadas de C#

Hola amigos, en este apunte semanal les quiero compartir un truco bastante sencillo, que si bien no es una buena práctica puede servir en algún caso extremo que tengamos y que por motivos de fuerza mayor necesitemos utilizar, sin embargo solo lo recomiendo en un caso extremo que tengamos.

Sabemos que en C# y en los diferentes lenguajes no podemos usar las palabras reservadas del lenguaje para el nombramiento de variables como por ejemplo, using, namespace, int, string y un lago etcétera, ya que obtendremos un error como el siguiente:



Como en este caso se quiere utilizar el nombre de variable int, se debe anteponer el carácter @ al nombre de la variable, como se muestra a continuación:


Como podemos apreciar no es una buena práctica ni muy cómodo para escribir, leer o mantener el código, sin embargo como digo puede servir en un caso de fuerza mayor, o por ejemplo si queremos interactuar con código escrito en otro lenguaje, es decir si por ejemplo tenemos una librería de clases escrita en VisualBasic .net y en esta librería tenemos escrita alguna palabra reservada de C# pero que no es reservada en Vb, nos compilaría perfectamente la librería, pero al momento de invocarla desde C# tendríamos un error de compilación, en este caso podemos resolver el problema usando el carácter @ para referirnos a la palabra reservada.

Bueno y eso es todo de este apunte semanal, espero sea de utilidad.

Saludos y buena suerte!

jueves, 15 de enero de 2015

Microsoft MVP .Net 2015


Hola amigos, al inicio de este año recibí una gran noticia por parte de Microsoft, más específicamente del programa Microsoft MVP, que es un programa en el cual se reconocen a líderes excepcionales de la comunidad por sus aportes en ella y por su especialidad en algún producto de Microsoft. Pues bien, esa gran noticia es que he sido reconocido este año como Microsoft MVP en la especialidad de .NET.


Es para mí un orgullo pertenecer a este selecto grupo y no quería dejar pasar la oportunidad para
agradecerles a ustedes, Comunidad, quienes hacen esto posible, gracias a ti, que lees mis post y aportas a ellos, pues ustedes son quienes fortalecen la labor de apasionados por la tecnología como yo y como muchos otros, que buscan aportar su granito de arena para que la comunidad tecnológica siga creciendo y cambiando el mundo.

Aprovecho también para felicitar a los nuevos MVP`s de mi país Colombia, y a todos los nuevos MVP`s de todo el mundo, y a los demás MVP`s antiguos quienes aportan a la comunidad en su especialidad.

Muchas gracias a todos! y espero poder seguir escribiendo, aportando en los foros, dictando charlas y demás cosas que me apasionan y contribuyen y ayudan a las demás personas.

Saludos y buena suerte!