Beruflich Dokumente
Kultur Dokumente
El funcionamiento del CLR no es trivial, trabaja encima del sistema operativo para
aislar a la plataforma de éste. Su funcionamiento es muy parecido, para entendernos,
al hipervisor de una máquina virtual. Esto le permite ejecutar aplicaciones .NET
multiplataforma. Hoy en día es posible desarrollar aplicaciones .NET para diversas
plataformas, como por ejemplo Windows, iOS, Android o Linux.
El CLR nos garantiza también la seguridad de los tipos de datos, avalando que no se
producen errores en la conversión de tipos en la ejecución de una aplicación .NET. Este
aspecto y algunos otros vienen regulados por lo que se conoce el Common Type System
(CTS) o Sistema Común de Tipos de datos.
El CTS define los tipos de datos de .NET y las construcciones de programación de los
lenguajes que el CLR puede utilizar de forma adecuada y correcta. En otras palabras,
el CTS es lo más parecido a las reglas de juego que permiten el correcto entendimiento
entre diferentes lenguajes de programación y el propio entorno de ejecución de .NET.
Otra característica del CLR es la posibilidad de reutilizar porciones de código escritos
en diferentes lenguajes. Esto es posible gracias a que todo el código, esté escrito en el
lenguaje que esté escrito, debe utilizar las mismas "reglas de juego" de las que
hablábamos antes, marcadas por el CLR.
Adicionalmente, el CLR se encarga también de gestionar la vida de los objetos,
declaraciones y recursos a lo largo de la ejecución de una aplicación .NET. Esto se lleva
a cabo a través de lo que se conoce como recolector de basura o garbage collector. Por
lo tanto, a la hora de programar no debemos preocuparnos de reservar espacio de
memoria para ejecutar nuestra aplicación .NET. Ni tampoco de liberar los recursos del
sistema una vez finaliza la ejecución de la aplicación. El CLR se encarga de ello y nos
exime de esta responsabilidad, facilitando el desarrollo enormemente frente a otros
lenguajes "tradicionales" como C/C++.
Hoy día es indispensable hablar de ejecución de aplicaciones multihilo y multi-
subproceso. La posibilidad de ejecutar varios procesos simultáneos dentro de una
aplicación .NET es una tarea de la que se encarga también el CLR.
Por último, comentar que el CLR es también el responsable de garantizar la seguridad
de ejecución de nuestras aplicaciones .NET.
En definitiva, el CLR es el encargado de gestionar la ejecución de una aplicación .NET.
Debido a esta responsabilidad, a las aplicaciones de .NET se las conoce como
aplicaciones "manejadas" o aplicaciones de código gestionado.
Si alguna vez has programado la API de Windows o has tratado de llamar a una DLL
escrita en C++ desde Visual Basic 6 por ejemplo, habrás comprobado lo diferentes que
son los tipos de datos de VB6 y de C++.
Para evitar este tipo de problemas y poder gestionar de forma eficiente y segura el
acceso a la memoria, el CLS define un conjunto de tipos de datos comunes (Common
Type System o CTS) que indica qué tipos de datos se pueden manejar, cómo se declaran
y se utilizan éstos y de qué forma se deben gestionar durante la ejecución.
BCL - Base Class Library
La BCL está formada por bibliotecas o APIs especializadas que pueden ser utilizadas
por todos los lenguajes de programación de la plataforma .NET.
Cada una de estas bibliotecas puede contener a su vez numerosas clases que aglutinan
varios métodos y funciones con características concretas.
De esta manera, podemos encontrar bibliotecas con funcionalidades para casi
cualquier cosa que necesitemos: enviar correos electrónicos, escribir archivos de
texto, acceder a fuentes de datos, manejar información, criptografía, etc...
De hecho, lo más complicado al empezar con la plataforma .NET es navegar entre el
mar de funcionalidad escondido en la BCL y aprender dónde se encuentran las
principales utilidades.
En el esquema simplificado de la plataforma que hemos utilizado hasta ahora, estaría
situado en la zona marcada en rojo a continuación:
En este diagrama tan simple solo vemos una parte mínima de la BCL. En un esquema
un poco más amplio, podemos ver cómo, sobre la BCL, se han ido añadiendo nuevos
grupos de funcionalidades en las diferentes versiones de .NET:
En resumen
La plataforma .NET está formada por una serie de componentes que, en conjunto,
permiten la creación de todo tipo de aplicaciones en todo tipo de sistemas operativos
y utilizando todo tipo de lenguajes de programación.
Una de las principales dificultades a la hora de aprender .NET es saber por dónde
empezar: ofrece tantas cosas que es complicado discernir qué es importante y qué no
lo es tanto. Es muy tentador arrancar con unas cuantas "recetas" que te enseñan a
hacer cuatro cosas. Pero eso es una receta para el desastre pues no se comprenderá
bien qué se está haciendo ni qué hay por debajo.
Aprender .NET bien supone conocer primero una serie de fundamentos, comunes a
toda la plataforma, y que te servirán para cualquier lenguaje que uses en el futuro. La
curva de aprendizaje se parece a algo así: