lunes, 4 de junio de 2007

Introducción a .NET

Krlo [blackhat4all@gmail.com]

.NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software. Microsoft intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el sistema operativo hasta las herramientas de mercado. Esta tecnología es una respuesta a la tecnología Java de Sun Microsystems, para acaparar el creciente mercado de los negocios en el mundo Web. Microsoft anunció la iniciativa de .NET en Julio del 2000. Ya en Abril del 2003, la versión 1.1 de .NET Framework estaba en nuestras vidas, y para siempre.

Bases

Para aprovechar al máximo las ventajas de .NET, es imprescindible conocer cómo funciona y qué brinda.
El Framework es la base de toda la plataforma, es la infraestructura que reúne un conjunto de lenguajes, herramientas y servicios que simplifican el desarrollo de aplicaciones. Algunas biografías incluyen el ASP.NET.

1. El conjunto de lenguajes de programación: C# (nació con .NET, sin duda el paradigma de esta tecnología), Visual Basic, Delphi (Object Pascal), C++, J#, Perl, Python, Fortran y Cobol.NET.

2. La Biblioteca de Clases Base o BCL: Se clasifica en tres grupos claves: ASP.NET y Servicios Web XML, Windows Forms y ADO.NET. Su función es brindar los servicios necesarios para realizar las operaciones básicas involucradas en el desarrollo de aplicaciones, entre otras la interacción con los dispositivos periféricos, manejo de datos (ADO.NET), administración de componentes web (aquí es donde entra ASP.NET), herramientas de gráficos (GDI+), operaciones aritméticas, interacción con el API Win32,... Prácticamente todo lo necesario para trabajar lo brinda la BCL.

3. El Common Language Runtime (CLR): El componente más importante del framework es el CLR (motor común de ejecución). Si eres programador de Java, piensa en el CLR de .NET como el equivalente del Java Virtual Machine (JVM). Si no conoces Java piensa en el CLR como el corazón y el alma de la arquitectura .NET. A un alto nivel, el CLR activa los objetos, realiza chequeos de seguridad sobre ellos, los coloca fuera de la memoria y destruye los no referenciados (Garbage Collection).

Cómo se crean aplicaciones.

1. Elegir un compilador: .NET ya soporta más de 20 lenguajes, cada uno con un compilador particular, aunque todos con un fin común como veremos después. Elegir un lenguaje no es tan difícil, el mayor peso lo da nuestros gustos y la experiencia que tengamos con alguno de ellos. Se recomienda utilizar uno o dos para obtener mayores beneficios del CLR.

2. Compilar el código a Lenguaje Intermedio de Microsoft (MSIL): Toda aplicación en .NET está compuesta por ensamblados, toda DLL o EXE es un ensamblado. Los mismos, además de un manifiesto, metadatos y recursos, contienen código intermedio (IL). El IL es común a todos los lenguajes, y todos los lenguajes se convierten a IL. ¿Cómo se logra esto?
El Common Type System (CTS) es un conjunto de reglas para declarar, usar y administrar tipos. Establece una plataforma que permite integración de lenguajes, seguridad en los tipos y un alto rendimiento de ejecución de código. Los tipos creados en .NET deben cumplir las reglas del CTS.
El Common Languague Specification (CLS) es un convenio entre los diseñadores de lenguajes y los diseñadores de .NET Framework. Está formado por un subconjunto del CTS y un conjunto de reglas y restricciones que posibilitan a un compilador, agregar un lenguaje a la plataforma .NET. Todos los lenguajes no tienen reglas iguales. Por ejemplo, C++ es case-sensitive, y VB.NET no. Con el objetivo de que todos vayan por la misma línea, Microsoft publicó el CLS.
Todo esto posibilita crear una clase Vehículo en Visual C++, implementar un auto en C# y un avión en VB, ambos herederos de Vehículo. Para completar podemos crear el ConductorDeVehículo en Java #. Polimorfismo entre lenguajes!!!.

3. Compilar MSIL en código nativo: En tiempo de ejecución, un compilador Just-In-Time (JIT), componente del CLR, convierte MSIL en código nativo. Durante esta compilación, el código debe pasar un proceso de comprobación que examina el MSIL y los metadatos para averiguar si el código garantiza la seguridad de tipos. El JIT es muy interesante, sólo compila a código nativo cada parte del IL una sola vez. La primera vez que se necesita un método se compila y se guarda, la próxima sólo se busca lo anteriormente compilado y se ejecuta este. En parte, por eso se denomina Justo a Tiempo, en el momento preciso compila lo únicamente necesario, si un método de la aplicación nunca se requiere en ejecución, nunca se compila, y se hace sólo una vez.

4. Ejecutar el código: El CLR proporciona la infraestructura que permite que la ejecución tenga lugar, así como una amplia gama de servicios que se pueden utilizar durante la ejecución. El CLR tiene los siguientes componentes:

El Execution Engine es el componte encargado de dirigir toda la ejecución de los programas, usa los demás componentes del CLR para cargar y descargar código, verificar el IL, manejar la memoria, mantener la seguridad de tipos, manejo de excepciones y la colocación y liberación de objetos. El último paso es realizado por el Garbage Collector, sin duda una herramienta vital, pues nos aísla de tener que pensar en liberar memoria como en C++.

Las ventajas más importantes que proporciona .Net Framework son:

  • Código administrado: El CLR realiza un control automático del código para que éste sea seguro, es decir, controla los recursos del sistema para que la aplicación se ejecute correctamente.
  • Interoperabilidad multilenguaje: El código puede ser escrito en cualquier lenguaje compatible con .NET, ya que siempre se compila en código intermedio (MSIL).
  • Compilación just-in-time: El JIT compila el código intermedio (MSIL) generando el código máquina propio de la plataforma, sea Windows o Mac. Se aumenta así el rendimiento de la aplicación al ser específico para cada plataforma.
  • Garbage collector: El CLR proporciona un sistema automático de administración de memoria denominado recolector de basura. El CLR es el encargado de detectar cuándo el programa deja de utilizar la memoria y la libera automáticamente.
  • Seguridad de acceso al código: Se puede especificar que una pieza de código tenga permisos de lectura de archivos pero no de escritura. Es posible aplicar distintos niveles de seguridad al código, de forma que se puede ejecutar código procedente del Web sin tener que preocuparse si esto va a estropear el sistema escribiendo o cambiando donde no debe.

Futuro de la tecnología:

El .NET Framework 3.0 es el nuevo modelo de programación para Windows. Combina la funcionalidad de sus anteriores con cuatro nuevas tecnologías, que empezaremos a oír cuando tengamos en Cuba una mayor proliferación del Vista. En la figura podemos apreciarlas en azul oscuro:

  • Windows Presentation Foundation (WPF o Avalon): Provee a los desarrolladores y diseñadores de un modelo de programación unificado para crear aplicaciones Windows que mezclan la UI con contenido multimedia. Podemos dividir el proceso en el diseño y las funcionalidades, para unirlos en el resultado final.
  • Windows Communication Foundation (WCF o Indigo): Es el modelo de programación unificado de Microsoft para la construcción de aplicaciones orientadas a servicios en código manejado. Extiende el .NET Framework, permitiendo a los desarrolladores construir Web Services seguros y fiables.
  • Windows Workflow Foundation (WF o WinOE): Windows Workflow Foundation es el modelo de programación unificado de Microsoft para un desarrollo rápido de aplicación orientadas a procesos empresariales.
  • Windows CardSpace (WCS, antes "InfoCard"): Windows CardSpace permite a los usuarios identificarse digitalmente de una manera sencilla y familiar.

Conclusiones

En .NET el programador se puede concentrar en resolver el problema, no tiene que complicarse en cuestiones como manejo de memoria o integridad de sus objetos. Para ello existe el Garbage Collector y un fuerte sistema de tipos. Por cuestiones de espacio no puedo abordar el sistema de tipos de .Net, o en los ensamblados y sus metadatos. Mi idea era definir muchas cuestiones de esta tecnología sin profundizar en detalles. Pretendo hacer otro artículo sobre ensamblados, metadatos y Reflection, para no dejar el tema aquí.

Para saber más...



Artículos relacionados


No hay comentarios: