Conociendo un poco .NET Framwork y que había antes de el lenguaje de programación C#

Historia C#

Al principio solo se podía programar en Windows con un compilador de C o C++ y desde las API de Windows. Un API de Windows es una gran colección de funciones que se relacionan y nos comunican con el sistema operativo. Pero era complejo… porque eran muchas funciones, pocos las conocían y también era compleja su sintaxis.

Luego surgió MFC que envolvía muchas funciones de Win32 por medio de distintas clases que eran más fáciles de usar y entender. También la creación del lenguaje visual BASIC facilito mucho las cosas. Ya  que trabajaba por encima de Win32 disminuyendo su complejidad,  este era fácil de usar tanto para crear interfaces visuales como conexiones a bases de datos pero tenía limitantes como que antes que existiera .NET no soportaba programación orientada a objetos.

También surge JAVA, el cual era multiplataforma gracias a que no corría la aplicación directamente en el micro procesador sino que lo hacía en un programa llamado runtime.

Cuando deseamos utilizar un programa era necesario compilarlo, esto hacia que compartir código fuera algo complejo ya que traducir cosas de un lenguaje a otro es difícil. Para solucionar esto surge algo llamado como modelo COM que permite al programador emplear y crear componentes binarios, esto es útil ya que no es necesario utilizar el código fuente de C++ o visual BASIC sino que se usa el ya compilado.

Llego .NET

El framework de .NET nos da soluciones a todos esos problemas que pueden tener el desarrollador o el proceso de desarrollo de software. También nos permite:

  • Nos permite usar código ya existente.
  • Podemos usar componentes COM
  • Hay compatibilidad con el API de Windows
  • Es mucho más fácil de instalar aplicaciones en los equipos clientes porque su integración entre lenguajes es más fuerte.

Se sabe que un programador de C# puede entender fácilmente el código de otro en visual BASIC o C++ y pueden programar en el lenguaje que se sientan más cómodos. Esto se debe a que todos los lenguajes que hacen uso de .NET comparten las librerías de .NET así que no importa donde programamos siempre reconoceremos ciertos patrones.

Componentes de .NET

CLR (common Language RunTime) es un programa de ejecución en común entre los lenguajes. Este lee código generado por el compilador y empieza su ejecución, esto sin importar si fue hecho en visual BASIC, C#, F#, visual C++ o cualquier otro lenguaje .NET. El CLR lee y ejecuta.

Assembly Cuando tenemos el programa escrito en el lenguaje .NET y lo compilamos se genera el assembly. Este contiene el programa compilado en lo que conocemos como CIL y también información sobre todo los tipos que se utilizan en el programa.

CIL un programa en .NET no se compila en código ensamblado del compilador sino que primero compila en un lenguaje intermedio conocido como CIL. Esto es leído y ejecutado por el runtime. El CIL y el runtime le otorgan flexibilidad a .NET y sus cualidades multiplataforma.

El framework de .NET tiene las especificaciones comunes de lenguaje o CLS. Esto da una estructura para que cualquier lenguaje de programación que desee usar el .NET cumpla con ciertos parámetros y así pueda usar el runtime. La ventaja que da los lenguajes de .NET que cumplan con los CLS es que ganan la interoperabilidad que da paso a que si creamos una librería en C# esta se pueda usar en C++ o visual BASIC sin problema.

De los puntos más importantes de las CLS son los llamados CTS o sistemas de tipos comunes. Y es que cuando deseamos guardar información en nuestros programas empleamos las variables que almacenan distintos tipos… como lo son enteros, boléanos, decimales pero el problema es que cada lenguaje guarda sus tipos de forma distinta. Hay lenguajes que los enteros son de 32 bits otros de 16 bits incluso en C++ no hay un tipo para guardar las cadenas o frases. Es por esto que el framework de .NET define el uso de los CTS y así delimita como se usaran estos tipos de datos en su entorno, todo lenguaje de .NET emplea los CTS.

Como se crea una aplicación .NET

Para hacer una aplicación .NET en este caso usaremos el lenguaje de programación C# y así con el creamos el código fuente del programa o también conocido como las instrucciones del programa.

Ya teniendo nuestro código fuente listo por medio de un compilador de nuestra preferencia este procederá a crear un assembly para nosotros el cual será un equivalente de nuestro código pero escrito en CIL. Esto nos da muchas ventajas porque ese código puede ser optimizado por el compilador para la plataforma hacia la cual vamos a usar nuestro programa, ya sea si se orienta a un dispositivo móvil, una PC o un servidor y todo esto sin tener que hacerle cambios al código fuente.

Cuando queremos invocar nuestro programa entonces el runtime entra en acción y este lee el assembly y crea para nosotros todo el entono necesario. El runtime lee las instrucciones CIL del assembly y a medida que está leyendo va compilando para el micro procesador de la computadora que lee el programa, a esto se le llama JIT o compilación justo a tiempo. A medida que se va ejecutando el programa este va compilando, todo esto de forma transparente para el usuario.

El runtime provee de algunos servicios para los programas en ejecución los cuales son el administrador de memoria y el recolector de basura. En lenguajes no administrados como lo son C y C++ el programador debe encargarse de administrar la memoria, pero en programas muy grandes esto puede ser una tarea titánica y que puede llevar a errores durante la ejecución.  Pero en C# no es necesario hacer esto ya que como es un lenguaje administrado el programador no se responsabiliza por esta tarea.

El recolector de basura tiene la tarea de eliminar todos los objetos que no son necesarios, cando deja de ser útil este lo toma y lo elimina y así se libera memoria y recursos. El recolecto de basura trabaja de forma automática y ayuda en la administración de recursos y memoria. Existen casos puntuales en los que las conexiones a bases de datos, archivos, o una red se manejan como recursos no administrados y aquí si se debe de manera explícita indicar su finalización.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *