Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Qué es la plataforma .NET y cuáles son sus principales partes

Simplificando mucho las cosas para poder dar una definición corta y comprensible, podríamos decir que la plataforma .NET es un amplio conjunto de bibliotecas de desarrollo que pueden ser utilizadas con el objetivo principal de acelerar el desarrollo de software y obtener de manera automática características avanzadas de seguridad, rendimiento, etc...

En realidad, .NET es mucho más que eso, ya que ofrece un entorno gestionado de ejecución de aplicaciones, lenguajes de programación y compiladores, y permite el desarrollo de todo tipo de funcionalidades: desde programas de consola o servicios Windows, hasta aplicaciones para dispositivos móviles pasando por desarrollos de escritorio o para Internet.

El diagrama siguiente muestra los bloques conceptuales en los que se divide la plataforma .NET:

Esquema básico plataforma .NET

Aunque se trata de un esquema muy simplificado, ya que hay muchos otros componentes que se construyen por encima de esta base y forman también parte de la plataforma, es un esquema igualmente útil para entender qué es la plataforma y en qué "piezas" se basa.

CLR - Common Language Runtime

El CLR o Common Language Runtime es la parte de .NET encargada de ejecutar las aplicaciones desarrolladas para la plataforma:

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 multi-hilo 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.

CLS - Common Language Specification

Al contrario que otros entornos, la plataforma .NET no está atada a un determinado lenguaje de programación. Ni tampoco favorece a uno determinado frente a otros. En la actualidad existen implementaciones para gran cantidad de lenguajes de programación que permiten escribir aplicaciones para esta plataforma.

Entre estos lenguajes de programación destacan Visual Basic ó C#, pero existen implementaciones muy variadas, como por ejemplo Cobol (¡Guau!).

Lo mejor de todo es que, como decíamos en el apartado anterior, cualquier componente creado con uno de estos lenguajes puede ser utilizado de forma transparente desde cualquier otro lenguaje .NET. Además, como ya se ha comentado también, es posible ejecutar el código .NET en diferentes plataformas y sistemas operativos.

La especificación del lenguaje común o CLS está formada por un conjunto de reglas que deben ser seguidas por las definiciones de tipos de datos. Así, dichos datos pueden interactuar desde una aplicación escrita en un lenguaje determinado con otra aplicación escrita en otro lenguaje diferente.

Entre estas reglas se encuentran: la definición de nomenclatura, la forma de definir los miembros de los objetos, los metadatos de las aplicaciones, etc... Una de las partes más importantes del CLS es la que se refiere a los tipos de datos.

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:

Dentro de la BCL, como se desprende de las imágenes anteriores, es posible encontrar numerosas clases diferentes, agrupadas organizativamente en lo que se denomina espacios de nombres o namespaces.

Un espacio de nombres no es más que un identificador que permite organizar, de modo estanco, las clases que estén contenidas en él, así como a su vez otros espacios de nombres.

Una (muy) pequeña muestra de éstos sería la siguiente:

Toda la funcionalidad que ofrece la plataforma .NET de serie, sin necesidad de instalar nada de terceras partes, es lo que se conoce como BCL. La BCL es el corazón funcional de .NET. Es lo que nos facilita enormemente el desarrollo puesto que ofrece miles de funcionalidades listas para ser utilizadas: ¿Quieres escribir un archivo a disco? Hecho. ¿Enviar un correo electrónico? Deseo concedido. ¿Acceder a una base de datos remota o a un servicio web? También puedes hacerlo sin dejar la base de la plataforma. Hay literalmente miles de funcionalidades disponibles.

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í:

Es decir, al principio se va lento, pero luego, de repente, se avanza muy rápido. El motivo es que son muchos conceptos y técnicas de base que es necesario dominar, pero una vez lo consigas, especializarse y aprender cualquiera de las múltiples bibliotecas especializadas (desarrollo web, para móviles, etc...) es mucho más fácil. Es tentador empezar la casa por el tejado y aprender antes alguna de éstas, pero a medio plazo es un error. Sin comprender bien antes los fundamentos, construiremos una casa sin cimientos, y ante la primera dificultad se puede caer.

¿Quieres empezar una casa bien cimentada? Y ¿qué tal ir un paso más allá?

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (3) -

jkdrama.top
jkdrama.top

Hola, me ha encantado el post pero ahora tengo unas preguntas:
Qué ventajas tiene usar .NET frente a otras plataformas de desarrollo?
Qué lenguajes de programación se pueden usar con .NET y cuál es el más recomendable?
Qué tipo de aplicaciones se pueden crear con .NET y qué ejemplos conoces?
Si pudieras responderme  será de mucha ayuda.
Gracias.

Responder

campusMVP.es
campusMVP.es

Hola, gracias. Es estupendo que te haya gustado nuestro contenido.

En cuanto a lo que preguntas, hay tantos motivos para elegirla que es difícil elegir solo unas pocas razones:

- Es fácil de aprender y utilizar.
- .NET es multiplataforma, por lo que podrás usarla para crear aplicaciones para Windows, macOS, Linux, iOs, Android, el cloud, plataformas de videjojuegos... Y puedes compartir código y componentes entre ellas.
- Admite varios lenguajes de programación, lo que te brinda la flexibilidad para elegir el lenguaje con el que te sientas más cómodo. Los lenguajes principales incluyen C#, VB.NET y F#, pero hay otros.
- Microsoft ofrece un conjunto de herramientas de desarrollo muy potentes, como Visual Studio pero hay otras, que ayudan mucho a la hora de desarrollar, depurar y desplegar las aplicaciones .NET.
- Tiene detrás una gran comunidad de desarrolladores, lo que significa que hay mucha ayuda disponible en línea y en persona.
- Dispone de una gran variedad de componentes y herramientas de terceros, gratuitas y Open Source, lo que puede ahorrarte mucho tiempo y esfuerzo.
- Es una plataforma muy segura, lo que significa que es menos probable que las aplicaciones desarrolladas con .NET sean vulnerables a los ataques.
- Es escalable, lo que significa que puede utilizarse para crear aplicaciones que pueden manejar grandes cantidades de tráfico.
- Es Open Source, lo que significa que es gratuita de usar y que el código está siempre ahí, para ser examinado y modificado por cualquiera, por lo que tampoco puedes llegar a quedarte tirado nunca.

El lenguaje más recomendable sería C# sin duda. En este post de nuestro blog ( www.campusmvp.es/.../...enguaje-debo-aprender.aspx ) te contamos el motivo, pero desde entonces todavía hay más (por ejemplo: www.campusmvp.es/.../...ic-net-ya-ha-empezado.aspx )

Saludos.

Responder

jkdramatop
jkdramatop

Hola, gracias campusmvp.es me ha parecido muy interesante y útil tu contenido.

Gracias por compartir tantas razones para elegir .NET como plataforma de desarrollo. Me has convencido de que es una opción muy versátil, potente y segura. También me ha gustado saber que es multiplataforma y que admite varios lenguajes de programación.

He leído los posts que me has enviado y me han parecido muy claros . Entiendo que C# es el lenguaje más popular y completo para trabajar con .NET. Has sido muy amable y generoso al compartir tu conocimiento. ;PPPPPP

Qué recursos me recomendarías para iniciarme en C# y .NET?
Qué tipo de aplicaciones has creado o estás creando con .NET y qué desafíos has encontrado?
(Qué consejos me darías para mejorar mis habilidades como desarrollador .NET ****)

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.