.NET

Atributos en .NET

.NET incorpora el concepto de Atributo qué, junto con lo mecanismos de .NET Reflection como iremos viendo en esta serie de artículos nos va a permitir añadir una enorme flexibilidad a nuestros programas.

Los atributos nos permiten la definición de metadatos asociados al código y su posterior lectura y uso para dar forma a nuestros programas. En la siguiente serie de artículos vamos a ver como podemos crearlos y utilizarlos así como los patrones de diseño que podemos utilizar con ellos.

El primer artículo va a consistir en una introducción a los atributos y a la forma de crearlos y declararlos.

En el segundo artículo veremos como leer dichos atributos usando .NET reflection y como obtener la informacion relevante de ellos, adaptando el comportamiento de nuestro código a lo que esté definido.

En un tercer artículo veremos en detalle algunos de los atributos que proporciona el propio framework de .NET, como funcionan y para que podemos utilizarlos.

Por último daremos una introducción a la programación orientada a aspectos y su implementación mediante .NET así como a algunos conceptos de uso de atributos algo más avanzados.

Introducción a Parallel Extensions. Parte I

Introducción

Parallel Extensions es un framework de Microsoft, aún en desarrollo para facilitar el desarrollo de aplicaciones concurrentes. Recientemente acaban de sacar la primera CTP (comunity tecnology preview) que está disponible para descarga y han solicitado feedback y comentarios en sus foros.

El funcionamiento es el común de una biblioteca, pero la implementación incorpora optimizaciones para mejorar el rendimiento de las aplicaciones multihilo liberando al programador de la tarea. Internamente se encarga de "decidir" si un trabajo debe ser ejecutado en un hilo separado o si se debe ejecutar en el propio hilo que invoca la llamada. Internamente está organizado en una serie de hilos, parecido al thread pool de .NET pero con ciertas optimizaciones, ya que existen una serie de colas internas en las que se insertan los trabajos (es algo más complicado que eso pero baste la simplificación), permitiendo que determinados hilos se "roben" las tareas entre ellos para mejorar la ocupación general de la CPU y por tanto el rendimiento del programa.

La base

Parallel.For

La base de funcionamiento de la librería está centrada en la existencia de una clase estática llamada Parallel que aglutina toda la funcionalidad de la librería, mediante funciones como Parallel.For, Parallel.ForEach o Parallel.Do. Básicamente trata de abordar el cálculo en paralelo de las estructuras For o ForEach. En cuanto a la orden Do, en un momento veremos lo que hace.

Atributos en .NET. Atributos del framework (I)

ObsoleteAttribute

El atributo "Obsolete" nos permite marcar un elemento de código como obsoleto y asignar un comentario o mensaje de aviso en caso de que se utilice dicho elemento de código. Adicionalmente permite pasar un valor booleano que indique si el atributo se comportará como un error o como un warning.

El uso del atributo resulta útil conforme nuestro código va evolucionado. Quizá una función o una clase que diseñamos hace tiempo para una biblioteca ya no sea la forma más eficiente de hacer las cosas, de forma que queremos sustituir la función o la clase con otra nueva. En este caso el uso del atributo obsolete nos permite mantener la clase o función de forma que un desarrollador que estuviera utilizando la función no se encuentre con que ha desaparecido sin saber por qué sino con un warning (o un error en caso de que así lo hallamos definido) avisándole de que cambie y, preferiblemente, indicándole los pasos a realizar. Vamos a ver un ejemplo muy típico:

[Obsolete("Esta clase esta obsoleta, utilice NuevaFoo en su lugar")]
void Foo(int x)

Atributos en .NET. Leyendo los atributos con Reflection

Table of Contents [hide]

¿Qué es .NET reflection?

La librería reflection de .NET nos va a permitir acceder a la información de los atributos que hemos definido en el artículo anterior.

Reflection es el nombre dado por microsoft al conjunto de utilidades que permite leer la información y metainformación de las dll y ejecutables de .NET en tiempo de ejecución.

Atributos en .NET. Definición de atributos

Introducción

Una de las posibilidades que incluye .NET es el uso de atributos para proporcionar metainformación añadida a las distintas partes del código que creamos.

Los atributos de .NET nos proporcionan una poderosa herramienta para añadir información a nuestras clases, métodos, propiedades etc.

Un atributo puede aplicarse puede aplicarse sobre cualquier elemento básico de .NET es decir, clases, eventos, propiedades, métodos, etc y añadirá información a dicho elemento que posteriormente podremos consultar en tiempo de diseño, compilación o ejecución.

Aspect Oriented Programming (Programación orientada a aspectos)

El uso de atributos nos permite acercar la programación en .NET al concepto de AOP, que son las siglas inglesas de Aspect Oriented Programing o Programación arientada a aspectos.

Para comprender correctamente en que consiste el paradigma de programación orientada a aspectos debemos partir de la base de las limitaciones de la programación orientada a objetos. En el paradigma orientado a objetos, el concepto de herencia describe las relaciones jerárquicas entre los distintos objetos que a su vez modelan el mundo real (o conceptos de este).

Introducción a .NET

Prólogo

Este artículo es tan solo una somera introducción a la tecnología .NET dando un repaso a sus principales características y explicando de forma breve el funcionamiento del CLR y de los assemblies de .NET de forma que, cuando trabajemos con referencias a ensamblados o bien usemos el System.Reflection tengamos una idea de que estamos haciendo. Buena parte de lo que yo se de este tema viene de dos libros que recomiendo a todo aquel que quiera tener una visión más detallada de .NET (ambos en inglés aunque no se si existen también en español)

  • Professional .NET Framework. Joe Duffy. Yo recomendaría este libro para [b]empezar a conocer los entresijos de .NET[/b], es decir, como funciona el CLR, que es el CIL, las librerías del framework... (aunque es muy recomendable por lo menos conocer c#, que es el lenguaje en el que están la mayoría de los ejemplos, y haber hecho algún programilla aunque sea pequeño)
  • Essential .NET, Volume 1. Don Box. Es un libro bastante exhaustivo que describe los fundamentos de .NET y del CLR con mucha eficacia aunque, como el mismo Don Box advierte en el prefacio, de forma bastante ardua, "poco para principiantes".

Managed DirectX. Introducción y Tutorial I.

Introducción

DirectX. Si has llegado a este artículo por que quieres programar tu propio Quake 4 en tus ratos libres deja que te saque de tu error, jamás vas a poder hacerlo. Antiguamente los juegos los programaban uno o dos programadores que trabajaban unos meses y conseguían crear un juego (mejor o peor). Actualmente los juegos los programan equipos relativamente grandes de personas con diversas especialidades (no hace falta solo programar sino también diseño gráfico, composiciones musicales, efectos de sonido, etc).

¿Entonces que voy a poder hacer? Bueno, quizá no consigas programar un juego de última generación pero quizá si puedas programar algún pequeño juego, conseguir un simulador físico convincente o sencillamente impresionar a las visitas (y de paso mejorar tu curriculum). Además programar gráficos en 3D es bastante gratificante (una vez las cosas van funcionando) puesto que el resultado es más "gráfico".

Managed DirectX se traduce como DirectX "Asistido" que me parece un termino muy feo en español así que simpre utilizaré el termino ingles que me suena mucho más apropiado.