Introducción a .NET.

¿Que es .NET?

    .Net es la nueva plataforma de desarrollo que ha lanzado al mercado MicroSoft, y en la que ha estado trabajado durante los últimos años. Sin duda alguna va a ser uno de los entornos de desarrollo que reinen durante los proximos años.

    ¿Entonces .NET es un lenguaje de programación?, No. Es mucho más que eso, Microsoft .NET es un conjunto de tecnologías de software , compuesto de varios lenguajes de programación que se ejecutan bajo el .NET Framework. Es además un entorno completamente orientado a objetos y que es capaz de ejecutarse bajo cualquier plataforma.

    Vamos por partes. Podriamos dividir el entorno .NET en las siguientes partes:

  • .NET Framework, que es el entorno de trabajo de la plataforma .NET y que la engloba completamente. Toda la plataforma .NET forma parte de .NET framework.
  • Lenguajes .NET. Destacan C# y VB.NET,y recientemente J#, aunque existen más lenguajes y con toda seguridad surgirán nuevos.
  • El Common Runtime Language CRL, que es el motor de ejecución común a todos los lenguajes .NET.
  • MSIL, Microsoft Intermedial language, es el lenguaje intermedio al que compilan las apliaciones (Asemmblies) .NET. Este lenguaje intermedio es interpretado por el CRL en tiempo de ejecución.
  • CLS, common Language Specification, que engloban las pautas que deben cumplir los lenguajes .NET. Es está característica la que va a permitir a otras compañias producir lenguajes compatibles con .NET.
  • ADO.NET, es  la nueva interfaz de bases de datos. No se trata de una evolución de ADO, sino que se trata de una interfaz completamente nueva.
  • ASP.NET, es la nueva tecnología para páginas web dinámicas completamente integrada dentro del entorno .NET. Representa una autentica revolución en el desarrollo Web (Internet e Intranet).
  • Biblioteca de clases .NET, es el conjunto de clases que componen el .NET framework y que nos permiten realizar casi cualquier tarea de una manera facil y rápida.

[arriba]


.NET FrameWork

    .NET FrameWork es el corazón de la tecnología .NET. Es el marco de trabajo y ejecución común a toda la tecnologia .NET. Es por lo tanto un elemento indispensable dentro de la tecnología .NET.

    Dentro del .NET framework están integrados los lenguajes .NET, el CRL, el CLS, ADO.NET, ASP.NET ...

    En el momento de escribir esta página .NET soporta los siguientes lenguajes de programación:

  • C#
  • C++ controlado
  • VB.NET
  • J#
  • Delphi (sí, Delphi de Borland).

    Todos ellos trabajan perfectamente integrados con un motor común, el .NET framework, siendo C# el lenguaje principal, ya que es el único que ha sido desarrollado especificamente para .NET. Gran parte de la biclioteca de clases que componen el framework están escritas en C#.

    .Net FrameWork es el conjunto de espacios de trabajo y clases que sirven de base a los lenguajes .NET. Es la evolución de las API de Windows y de la fundación de clases de Microsoft MFC hacia la completa encapsulación. Cualquier programa que desarrollemos utilizando la tecnología .Net, independientemente del lenguaje utilizado, estará basado en .Net FrameWork.

    La mejor forma de entender esto es un ejemplo. Imaginemos los menús de cualquier aplicación Windows que nos permiten acceder a las distintas opciones del programa, pues bién, en el mundo de la tecnología .Net dichos menús son una clase perteneciente al .Net FrameWork. Esta clase es siempre la misma independientemente del lenguaje y entorno en el que nos encontremos, y la forma de trabajar con ella es la misma desde C#, VB.net o cualquier lenguaje .Net. Lo mismo ocurre con los botones, las imágenes, la forma de leer los archivos ... todo, absolutamente todo lo que hagamos en un lenguaje .NET está basado en el .Net FrameWork.

[arriba]


 MSIL, CRL y el código controlado.

    Cuando escribimos un programa los hacemos en un determinado lenguaje que podriamos llamar "humano"(aunque algunos se empeñen en decir que los programadores no somos humanos). Es decir, podemos leer y entender un programa (o al menos intentarlo) a través de un editor de texto, ya que este programa esta escrito en lenguaje "humano" (utilizando nuestra letras y esas cosas). El único problema es que un ordenador no es capaz de enterder nuestro programa, así que hay que traducirlo a su idioma. A este proceso se le conoce como compilación. Como resultado del proceso de compilación obtenemos el programa ejecutable en código máquina, que entiende el ordenador pero no el "humano"(si alguien lo entiende no es humano, aquí sí). Según la arquitectura del procesador, el sistema operativo, etc ... este código es diferente y un programa que se ejecuta correctamente en un entorno Windows no funciona en Macintosh o UNIX. Es decir el programa sólo funciona para la plataforma para la que fue diseñado. Este no es el proceso que ocurre en .NET. Cuando compilamos un programa escrito en cualquiera de los lenguajes .Net no se compila hacia código máquina nativo, sino que se hace hacia MSIL (Microsoft Intermediate Language), este MSIL es un lenguaje intermedio y universal. Cuando compilo un programa escrito en C# o en VB.Net ambos generan MSIL, con ciertas diferencias pero MSIL. Este código será interpretado posteriormente por un interprete ,el CRL. De este modo conseguimos que un programa escrito en .NET funcione en cualquier plataforma existente, incluso en plataformas futuras, sólo necesitamos construir el interprete apropiado. 

    El MSIL es independiente del procesador, de la plataforma de desarrollo y de la plataforma de ejecución. El MSIL es parte del .Net FrameWork.

    Llegados a este punto tenemos nuestro programa compilado a MSIL, pero el programa no funciona, ya que el procesador sólo entiende su propio código máquina nativo, y MSIL no lo es. Es entonces cuando aparece el CRL (Common Language Runtime), o motor de ejecución común, que lo que hace es servir de traductor entre el MSIL y el codigo máquina nativo. Cuando ejecutamos un programa el CRL se encarga de compilar a código nativo dicho programa y ejecutarlo. A este tipo de compiladores se les conoce como compiladores JIT(Just In Time). Si alguno de vosotros conoce Java abra gritado ¡plagio, esto es el ByteCode!. No exactamente ... cambian ... los nombres. Teoricamente el CRL interpreta MSIL mucho mejor de lo que lo hace Java con el ByteCode y existen ciertas diferencias en la architectura interna, el CRL únicamente compila a código nativo la parte necesaria en cada momento durante la ejecución mientra que Java compila el programa completo, pero ....

    De este modo podemos ejecutar nuestro programa sobre cualquier máquina, siempre y cuando exista una versión del .Net FrameWork y del CRL apropiada. Al código que se ejecuta bajo la batuta del CRL se le conoce como código contralado.

Nota técnica. Los lenguajes .Net no son compilados , ya que no generan codigo nativo, ni interpretados, ya que compilan código MSIL, son lenguajes evaluados.

[arriba]


 Tipos comunes entre lenguajes .NET. CLS y CTS.

    Para que todo esto sea posible MicroSoft ha introducido ciertas reestricciones a la hora de diseñar los lenguajes de programación y en la forma de programar.

    La especificación común de lenguajes CLS hace posible que cualquier fabricante de software genere herramientas compatibles con .NET. De esta forma existen versiones .NET de Delphi y otros lenguajes ajenos a MicroSoft.

    Dentro del CLS destaca especialmente el CTS (Common Type System), que es una especificación que define como el CRL utiliza y administra los tipos de datos. Básicamente es una relación entre los distintos tipos de datos que proporciona cada lenguaje. La consecuencia inmediata del CTS es que dentro de un mismo proyeto .NET podemos utilizar varios lenguajes .NET.

 

[arriba]


 Assemblies

    Un proyecto .NET no genera un ejecutable tal y como lo conocemos. Un proyecto .NET genera Assemblies. Un assemblie es la unidad ejecutable de cualquier programa .NET, pero no se limita al código compilado sino que tambien inluye lo que se ha dado en llamar el manifiesto

    El manifiesto es un listado de las librerias (dll) y los controles  (ocx) que son necesarios para que la apliciación funcione. Este listado contiene el número de versión necesario para que la aplicación funcione correctamente, impidiendo que la instalación posterior de un porgrama afecte a nuetro ejecutable.

    Con esta técnica MicroSoft pretende poner fin al ya maldito infierno de las dll. El tiempo dira si lo consiguen.

[arriba]


Pedro  Herrarte  Sánchez
Introducción a .NET
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:21/02/2006
Última actualizacion:21/02/2006
Visitas totales:158080
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com