Introducción a la plataforma .NET y Mono
.NET Framework
Cuando se habla del .NET Framework, normalmente se hace referencia al conjunto de clases Framework Class Library (FCL). Estás librerías ofrecen un gran número de posibilidades y funcionalidades en el desarrollo de aplicaciones modernas. Para ello dispone de librerías orientadas al manejo de colecciones, XML, comunicaciones, IO, threading, bases de datos…
La FCL se sustenta sobre la pieza fundamental del .NET Framework, el entorno de ejecución, o Common Language Runtime (CLR). Éste es el encargado de realizar la ejecución de las aplicaciones desarrolladas para .NET. En la siguiente ilustración se muestran los componentes que forman la arquitectura del .NET Framework.
Common Language Runtime
El CLR es el encargado de gestionar la ejecución de las aplicaciones, proveyendo de servicios como compilación JIT, gestión de memoria, gestión de excepciones, depuración, seguridad o gestión de permisos.
Para entender cómo funciona el CLR conviene entender como funcionan los compiladores que generan código para el .NET framework, a diferencia de los compiladores tradicionales. Los compiladores tradicionales, partiendo de los fuentes de una aplicación en un lenguaje concreto, producen archivos binarios que contienen las instrucciones correspondientes a la plataforma en la que se quiera utilizar el programa compilado. Sin embargo, los compiladores para la plataforma .NET, partiendo de los fuentes de la aplicación generan archivos binarios que contienen una representación intermedia del código compilado, formada por metadatos e instrucciones escritas en Common Intermediate Language CIL. Para que estos archivos binarios se puedan ejecutar es necesaria la presencia del CLR en la máquina en la que se quiera ejecutar la aplicación. Cuando estos binarios se ejecutan se carga el CLR y toma el control de la ejecución.
Desde un punto de vista de eficiencia se podría considerar que el tener la aplicación en código intermedio y ejecutarlo dentro de un entorno de ejecución virtual es una desventaja, sin embargo, esto nos permite poder utilizar las aplicaciones en diversas plataformas para las cuales se disponga del CLR. Así mismo, a la hora de la ejecución el CLR tiene la opción de realizar optimizaciones específicas para la plataforma en la que se está ejecutando, por lo que las aplicaciones se podrían aprovechar automáticamente de determinados avances en materia de procesadores.
La representación de los metadatos y el código en un lenguaje intermedio posibilita el que se puedan desarrollar módulos de una aplicación en diferentes lenguajes y que estos módulos se puedan comunicar entre sí transparentemente.
Para que esto sea posible el CLR necesita conocer bien el código gestionado que está ejecutando, para ello el CLR define un sistema compartido de tipos denominado Common Type System (CTS). El CTS está diseñado para ser suficientemente flexible y potente como para permitir la integración de un amplio número de lenguajes de programación. Para que esta integración sea posible es necesario también que todos los lenguajes que generen código para el CLR dispongan del mismo conjunto de construcciones. Imaginémonos la situación en la que tenemos un lenguaje A que soporta tipos sin signo y otro lenguaje B que no lo hace. ¿Cómo haríamos para llamar desde un método escrito en el lenguaje B a otro escrito en el lenguaje A, el cual necesita un parámetro unsigned?
La solución a este problema la trae el Common Language Specification (CLS). El CLS define un subconjunto del CTS que debería ser suficiente para soportar la integración entre lenguajes y el cual evita áreas conflictivas como sobrecarga de operadores, unsigneds, y otros. De esta forma, cada lenguaje que quiera generar código para la plataforma .NET decide qué parte del CTS acepta.
Framework Class Library (FCL)
Las necesidades de los desarrolladores han evolucionado mucho en los últimos tiempos debido al continuo incremento en la complejidad de las aplicaciones, esto hace necesario la utilización de marcos de trabajo o frameworks, que permitan a los desarrolladores simplificar el desarrollo de las aplicaciones. La Framework Class Library es un enorme conjunto de clases y estructuras, muy bien estructuradas, que ofrecen a los desarrolladores una API muy diversa y completa.
ECMA
En Noviembre de 2000, Microsoft junto a Intel y HP, enviaron a la European Computer Manufacturers Association (ECMA) la especificación del lenguaje C#, junto a un subconjunto del FCL (297 clases de las más de 3.500 existentes) y el entorno de ejecución. En el proceso de estandarización participaron otras empresas incluidas HP, IBM, Fujitsu, Sun, Netscape, entre otras. Se crearon dos grupos de trabajo, uno orientado a la estandarización del lenguaje C# y otro a la estandarización del Common Language Infraestructure (CLI), que incluye el CLR y las FCL. Tras un año de trabajo se presentó el trabajo en la asamblea general de ECMA, y el 13 de diciembre de 2001, se ratificaron como estándares internacionales con los números ECMA-334 (C#) y ECMA-335 (CLI).
Pueden obtenerse copiar de los estándares en: http://www.ecma-international.org/
hola Patxi sabes me piden que haga un trabajo todos sobre mono ventajas, y modos de intalarse en diversas plataformas kisiera saber si tienes algunos documentos ke me puedan ayudar a realizarlo poara poder hacer un tutorial te lo agradeceria muchisimo saludos desde tabasco.
Hola:
me parece muy interesante el articulo. Yo tambien estoy iniciandome en este mundo y como deben saber tengo muchas dudas, por el momento quisiera que trataran de ayudarme con esta:
si voy a migrar un sitio donde los .aspx estan en una carpeta y los .ascx estan en otra y asi, como resolver los problemas que da mod_mono con los caminos ?
les agradeceria mucho que alguien me ayudara o me diera alguna idea.Cualquier comentario es valido.
Si no es mucha molestia quisiera que me escribieran a bricelno@gmail.com
Muchas gracias a todos
Hola.. to2
Muy interesante articulo ademas de completo.. me acabo de solucionar dudas de concepto que tenia..
Una pregunta: La plataforma .net es solo para redes ?.. es decir soy programador y estoy buscando alternativas a VisualBasic, Vfox, las tipicas de siempre.. me encontre son SharpDevelop. que dice que permite programa en C# pero quiero hacer aplicativos normales ,, esta herramienta de programacion me sirve o la orientacion es diferente…
Hola Jose, en efecto, con .NET puedes desarrollar cualquier tipo de aplicativo, desde aplicaciones de escritorio hasta aplicaciones web empresariales. Para ello puedes utilizar multitud de entornos de desarrollo, como Visual Studio, SharpDevelop, o incluso simplemente el editor de notas y el compilador del SDK. Además también puedes programar en diferentes lenguajes, como C#, Visual Basic, Delphi, etc…
Hola Mi Nombre es Rafael.
He leido algo sobre el proyecto mono y pienso que el proyecto es muy interesante, y precisamente por esto quiero ver si puedo migrar una aplicacion web desarrollada en VB .net a CENTOS 5, mi aplicacion consta con web services y conexiones a bases de datos SQL Server 2005, ya baje los programas de instalacion de MONO para Windows y tambien para CENTOS 5, pero el problema esque no se como instalar la parte de CENTOS 5, si alguien me puediese decir que tan bueno es el proyecto en este momento para intenetar migrar mi aplicacion para que funcione sobre Linux se los agradeceria.
Aparte no se si alguien tenga documentacion acerca de como instalar mono sobre CENTOS 5 paso a paso y como probar mi aplicacion, se los agradeceria infinitamente.
Saludos y felicidades por esta pagina.
Disculpa, pero podrias ayudarme para instalar mono sobre fedra core 8?, recien estoy empezando con el desarrollo sobre linux, porque antes utilice SharpDevelop pero para windows y ahora quiero intentarlo con linux, porfaa
Hola compañeros de eslomas.com:
Quisiera saber dentro de la plataforma .net, refiriéndome no solo a .net Framework sino también a el paquete de Visual Studio.net y todo lo que compone la tecnología .net.,por donde inicio mi capacitación para comprenderla mejor y poder aplicarla adecuadamente.
Gracias
ay no c que es eso ocupo q me digan es d tarea tengo examen porfas alludenme plis jejje bye
hola quisiera saber si MONO es un framewor o es una plataforma