¿Qué es .NET? Guía definitiva para entender la plataforma de Microsoft

.NET es la plataforma estrella de Microsoft pero términos como .NET Framework, .NET Core, .NET 5, .NET Standard, entre otros, pueden confundirte. En este blog te daré la guía definitiva para entender .NET.

Diseño web
8 minutos
Hace 2 años
¿Qué es .NET? Guía definitiva para entender la plataforma de Microsoft

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

En los años 90, en el mundo del software, Java era el amo del universo: compartía muchas cosas de C y C++ pero sin ser de bajo nivel, ayudaba en la creación de aplicaciones web y los programas escritos en Java se podían ejecutar en cualquier sistema operativo. Su lema era: Escribe una vez, ejecútalo en todas partes. (Windows, Mac, Linux, Solaris, etc) lo cual era una delicia para cualquier programador. Tal era su fama en la época, que un lenguaje recién llegado tomó su nombre para aprovecharse de su popularidad y se bautizó como JavaScript.

Microsoft estaba preocupada porque el crecimiento de Java les empujaba a desarrollar una alternativa para no verse desplazados. Así que, aprovechando que la licencia de Java permitía crear implementaciones del lenguaje y su máquina virtual, crearon el lenguaje J# y el IDE Visual J++ para que los desarrolladores Java escriban aplicaciones para Windows. Sin embargo, las aplicaciones escritas con J# a pesar de ser apps Java en el fondo, solo podía ejecutarse en Windows, rompiendo el lema básico de Java de escribir una vez y ejecutar en todas partes. Por esto, Sun demandó a Microsoft por mil millones de dólares.

Qué-es-.NET-sun-microsystems.png

Para evitarse problemas, Microsoft descontinuó ambos productos y creó dos nuevos escritos desde cero pero conservando mucho de la filosofía, sintaxis y funcionamiento de Java: C# y .NET

.NET es al día de hoy la plataforma estrella de Microsoft sobre la cual puede desarrollarse de todo (web, móvil, videojuegos, inteligencia artificial, escritorio, cloud, etc). Pero quizás hayas escuchado términos como .NET Framework, .NET Core, .NET 5, .NET Standard, ASP.NET, ASP.NET Core, VisualBasic.NET, etc. ¿Quién es quién en este laberinto de nombres?

Qué-es-.NET-Guía-definitiva.png

En este blog te daré la guía definitiva para que entiendas porque .NET es una de las plataformas más importantes del mundo del desarrollo de software y para que jamás vuelvas a enredarte con los nombres. Porque en español, nadie explica tan bien como EDteam.

1. Un poco de historia

Para entender como llegamos a este enredo de nombres y tecnologías, tenemos que retroceder a los lejanos años 80, para conocer a uno de los mejores programadores de la historia, un genio que no terminó la universidad pero creó varios de los mejores productos que haya visto el software: Anders Hejlsberg, un programador danés nacido en 1960.

En los años 80, Pascal era uno de los lenguajes de programación más populares del mundo porque había muchos software para Apple y MS-DOS escritos en él. Además, Pascal no tiene la complejidad de lenguajes como C++ porque fue creado para enseñar programación (su creador no imaginó lo mucho que crecería). En 1981, Anders Hejlsberg escribió un compilador para Pascal, al que llamó Blue Label Pascal, que solucionaba varios problemas conocidos al compilar Pascal (como la gestión de la memoria y el tiempo de compilación). En 1981 fue contratado por Borland para reescribir su compilador, al que llamaron Turbo Pascal y que tuvo un enorme éxito.

que-es-net-turbo-pascal.png

En los años 90, como ya mencioné anteriormente, Java se convirtió en el lenguaje preferido para aplicaciones de escritorio, por encima de Pascal, que estaba más orientado a las aplicaciones de terminal. Incluso Borland creó su propia máquina virtual para Java porque no podía hacer competir a Pascal contra Java. Y Microsoft, que necesitaba también competir con Sun y Java, se puso como objetivo fichar a Anders Hejlsberg, que además de Turbo Pascal, había creado Delphi (una alternativa a Visual Basic) y era considerado uno de los mejores diseñadores de lenguajes del mundo.

Microsoft ofreció 1.5M a Hejslberg para que se fuera con ellos. Borland igualó la oferta, así que Microsoft la duplicó: 3 millones de dólares para llevarse al genio que creó .NET, C# y TypeScript. Borland luego demandó a Microsoft por competencia desleal al llevarse sus principales talentos pero su demanda no prosperó.

2. .NET Y C# (2002)

Como te dije al inicio, el primer trabajo de Hejlsberg en Microsoft fue crear una alternativa a Java, cuyo nombre fue J#, junto el IDE Visual J++. Sun demandó a Microsoft por violación de patentes y Microsoft decidió abandonar estos productos y pivotear a una tecnología diferente (aunque muy inspirada en Java): el lenguaje C# y el framework .NET.

Aunque hoy por hoy, C# es uno de los lenguajes más usados en el mundo y sirve para casi todo tipo de proyectos, en su primera versión era casi una copia descarada de Java por lo que recibió muchas críticas. El nombre C hacía referencia a que estaba inspirado en C y C++ mientras que el símbolo # significa que es mejor que C++ (como un doble ++). Además, puedes aprender C# en EDteam y crear tus primeras apps con este lenguaje. Toma nuestro curso C# desde cero y no te detengas.

Por su lado, .NET era un framework exclusivo para el desarrollo de aplicaciones para Windows, que permitía trabajar con varios lenguajes (no solo C#) gracias a un código intermedio conocido como MSIL (MicroSoft Intermediate Language) que luego se convierte a código máquina en tiempo de ejecución. Es decir, prácticamente el mismo funcionamiento que Java, que se compila a un bytecode que luego es convertido a código máquina en tiempo real gracias a la Java Virtual Machine. Solo que, en .NET, no existe Java Virtual Machine (JVM), sino el CLR (Common Language Runtime), que viene a ser el núcleo de .NET gracias al cual se pueden escribir aplicaciones y sitios web para Windows con diferentes lenguajes.

que-es-.net-edteam.png

Seguro te preguntes: ¿Cómo que sitios web para Windows? Si la web no depende de un sistema operativo. Sucede que Microsoft tenía su propia tecnología para desarrollo web llamada Active Server Pages (ASP), que solo puede desplegarse en servidores Windows. Con la llegada de .NET, se lanzó una nueva versión de esta tecnología llamada ASP.NET, un framework para el desarrollo web, pero que nuevamente solo podía desplegarse en Windows.

C# era la respuesta de Microsoft al lenguaje Java, mientras que .NET, era la alternativa a Java Enterprise Edition.

Importante: este .NET original, lanzado en 2002, se le conoce como .NET framework, y de esta forma me voy a referir a él en el resto del blog. Eso es algo que debes recordar para que no te confundas, porque luego vienen otras versiones y nombres.

2.1 Componentes de .NET Framework

Como vimos, la gran ventaja de .NET framework es poder trabajar con diferentes lenguajes usando un código intermedio. Algunos de los componentes principales son:

  • MSIL (CIL) El lenguaje intermedio al que compilan los lenguajes .NET. Gracias a este lenguaje intermedio, no estamos atados a un solo lenguaje de programación.
  • CLR (Common Language Runtime) Es el tiempo de ejecución de .NET (similar a la JVM de Java) que convierte el MSIL (o CIL) a código nativo.
  • LINQ Un lenguaje de consulta de datos similar a SQL pero que sirve no solo para bases de datos relacionales, sino para otros tipos de documentos.
  • Winforms Una API para utilizar interfaces nativas de Windows en los programas de escritorio.
  • C# El lenguaje estrella de Microsoft y es prácticamente el único que se usa con .NET hoy en día.
  • VisualBasic.NET Una implementación del viejo VisualBasic para funcionar dentro de .NET Framework. Tiene un uso muy reducido actualmente.
  • ASP.NET Un framework para desarrollo web en .NET que es la implementación del viejo ASP.
  • F# Un lenguaje funcional para .NET (tiene muy poco uso en la actualidad).

Qué-es-.NET-Guía-definitiva-para-entender-la-plataforma-de-Microsoft.png

3. Mono (2001) y Xamarin (2011)

.NET Framework era una gran opción a Java tanto para escritorio como para web, pero tenía un problemita (el mismo de las primeras décadas de Microsoft): solo funcionaba en Windows. No podías llevarte tus aplicaciones a otra plataforma. Es por eso que el programador mexicano Miguel de Icaza, un gran defensor del Open Source que había fundado el proyecto GNOME (un famoso entorno de escritorio para sistemas UNIX que es usado por ejemplo en Ubuntu) crea el proyecto Mono, una forma de llevar los proyectos .NET a otras plataformas gracias a que implementa su propio compilador y su versión de la CLR para funcionar con cualquier lenguaje intermedio de .NET.

En otras palabras, Mono es .NET Open Source para Linux (también Mac y cualquier otro sistema). Icaza había creado Monto bajo el nombre de su empresa Ximian. Ximian fue comprada por Novell en 2003 y en 2011, Attachmate compra Novell y despide a varios trabajadores del proyecto Mono, por lo que este proyecto peligraba y Miguel de Icaza funda una nueva compañía: Xamarin, con el objetivo de mantener el proyecto Mono y evitar que muriera y se llevó a varios trabajadores despedidos.

El proyecto más importante de esta compañía tuvo el mismo nombre: Xamarin, una tecnología para crear aplicaciones móviles multiplataforma con una sola base de código, utilizando Mono para compilar a Android y iOS. ¿Y adivina qué? la puedes comenzar a dominar en EDteam con nuestro curso Xamarin desde cero.

En 2016, Microsoft, que para ese entonces no tenía soluciones móviles (lo había intentado con Windows Mobile pero fue un fracaso), compró Xamarin y pasó a ser parte del ecosistema de .NET (de paso que el proyecto Mono perdió relevancia).

Como ves, el mundo de la tecnología no es solo la programación, sino que también es saber jugar el juego de tronos (ganas o mueres).

Además, si estás en Lima, no te pierdas el EDcamp este 13, 14 y 15 de octubre. Aprenderás frontend y backend avanzado mientras creas una aplicación completa de Ecommerce con pasarela de pagos incluida. Te llevarás todo el código listo para subirlo a producción para que tengas tu ecommerce funcional y empieces a ganar dinero. Compra tus entradas antes que se agoten en ed.team/edcamp porque los cupos son limitados.

edcamp-campaña-edteam-bootcamp-presencial-lima-peru.png

4. .NET Core (2016) y .NET Standard (2017)

Para finales de los años 2000, la web tiene su segundo momento de explosión gracias a HTML5, Node.js, el crecimiento de JavaScript y la llegada del cloud computing (AWS se lanza en 2006). En este escenario, los servicios web (o API) que pueden consumirse desde cualquier sistema operativo o con cualquier lenguaje era la norma. Si no sabes qué es una API y porque son tan importantes, tenemos la mejor explicación en español en nuestro canal de YouTube: ¿Qué son las APIs y para qué sirven?

En esta nueva época, el desarrollo de APIs, ser multiplataforma y el despliegue a la nube eran necesidades que .NET Framework no podía cumplir, así que Microsoft creó un framework para la creación de APIs y servicios web, y la llamó .NET Core. Y aunque este es un gran momento para la programación, porque .NET Core en los tests se mostraba como más veloz que Node.js o Java, también es el momento en que se da inicio al enredo de nombres de .NET. Aprende la construcción de servicios REST para tus Apps utilizando .NET Core con nuestro curso: Creación de APIs REST con .NET Core.

Y es que ahora teníamos dos .NET: .NET Framework y .NET Core (sin contar a Xamarin, que es otro cuento). Ambas tecnologías tenían usos diferentes .NET Framework para desarrollo de escritorio y .NET Core para APIs. Sin embargo, ambas coincidían en web y empieza el enredo de nombres porque ASP.NET se parte en dos, una versión para .NET Framework y otra para .NET Core.

.net-framework-escritorio-core-apis.png

4.1 .NET Standard

Durante años, .NET Core y .NET Framework vivieron en paralelo, creando confusión no solo en los nombres sino también en la implementación, porque si desarrollabas para .NET Framework, tu aplicación no funcionaba en .NET Core y viceversa. Así que Microsoft intentó solucionarlo metiendo un nombre más a la mazamorra: .NET Standard, que es una especificación sobre las APIs de ambos frameworks que garantiza que si sigues estas reglas cuando desarrollas, tus aplicaciones serán interoperables entre .NET Framework y .NET Core.

.NET Framework dejó de desarrollarse en la versión 4.8 en abril de 2019. Y aunque sigue siendo parte del sistema operativo Windows (que es famoso por su retro compatibilidad) la duplicidad con .NET Core ya no es un problema y .NET Standard deja de ser necesario.

En esta infografía puedes ver más diferencias entre .NET Core y .NET Framework.

Net-Core-vs-NET-Framework.jpg

5. .NET la unificación de los 7 reinos (2020)

Para el 2020, Microsoft quiso resolver el problemón de nombres y versiones, puesto que .NET Framework estaba en la versión 4.8 y .NET Core en la 3, así que el enredo era mayor. Por lo tanto, tomó una sabia decisión, unificando todo en una sola plataforma (no un framework) llamada .NET a secas. Y para no tener líos con los nombres empezaron en la versión 5.

Pero, aun así, seguíamos con ASP.NET, ASP.NET Core y Entity Framework y Entity Framework Core. Además, ¿sabias que puedes aprender a desarrollar servicios REST y conectarlos con una base de datos con Entity Framework Core? tenemos un curso, ve y comienza a estudiar ya: .NET 5, Core Entity Framework.

La nueva plataforma .NET se lanzó en noviembre de 2020 con un roadmap de una nueva versión cada año y en este 2022, se cumplieron los 20 años de .NET como lo mostró Microsoft en su web. ¿Pero como 20 años si .NET se lanzó en 2020? Bueno, 20 años del primer .NET, el .NET Framework de 2002 (a cualquiera se le hace un lío la cabeza con tanto .NET).

Actualmente, .NET es una plataforma base para desarrollo de todo tipo de aplicaciones con C# (también existen F# y VisualBasic.NET pero su uso es muy pequeño, como si no existieran). Sobre .NET se agregan módulos para extenderlo y crear frameworks y soluciones específicas.

Por ejemplo, en web tenemos a ASP.NET (ya sin el lío de nombres) para el full stack y Blazor para Single Page Application usando Web Assembly para tener a C# en el frontend.

Para escritorio y móviles, tenemos a .NET MAUI (Multiplatform APP UI) que es la evolución de Xamarin y que comparte varias cosas con él. Para videojuegos está Unity y Unreal Engine, además que hay soluciones para IoT, Cloud computing e inteligencia artificial.

herramientas-.net-2020-infraestructura-edteam.png

Por el lado de las herramientas, tenemos al IDE de Microsoft, Visual Studio, que es de pago, pero también tiene su versión gratis que es Visual Studio Community. Aunque también puedes desarrollar con Visual Studio Code o Rider (de JetBrains). .NET tiene Nuget como gestor de paquetes y Github como repositorio de código (que también es de Microsoft). Con lo cual, podríamos decir que luego de 20 años, Microsoft logró el sueño de Java write once, run anywherecon .NET y C#, poniéndolos literalmente en todas partes.

Aunque quizás el sueño de Microsoft no era escribe una vez y ejecuta en cualquier parte sino escribe una vez y domina el mundo. Sea como sea, lo logró: .NET es Open Source y multiplataforma y no está atado a Microsoft sino que se creó la .NET Foundation para mantener esta plataforma. Así que puedes desarrollar sin miedos y sin pagar licencias en .NET

Además, ahora todo es .NET y ya no tenemos el enredo de nombres de hace unos años.

Por su parte, Anders Hejlsberg, el genio que creó C#, años después creó TypeScript para arreglar el enredo de JavaScript. Pero esa es otra historia para otro blog, ¿te gustaría un blog contando esa historia? deja un comentario.

Y si no sabías que es .NET, hoy lo aprendiste en EDteam.

Comentarios de los usuarios