.NET Cap 1/ ¿Qué es Microsoft .NET? Introducción completa

Al empezar en el mundo de la programación o la informática, en alguna ocasión nos surgen muchas preguntas y dudas que nos mata de inquietud; por ejemplo: ¿Qué es? ¿Para qué sirve? ¿Cómo funciona? ¿Cómo se hace? ¿Que porque esto?… Son tantas interrogantes que nos gustaría aliviar esa ansiedad de dudas en un santiamén. Hoy responderemos una de las preguntas clásicas; ¿Qué es punto Net (.NET)? Quizá sepas que está relacionado con la programación o desarrollo de software; sin embargo, aún muchos no saben que es en realidad, o muchas personas se refieren a .NET que es lo mismo a .NET Framework, esto es un error muy común; en términos simples, .NET Framework es una implementación de .NET; para entender mejor, imagina que .NET es un reino y .NET Framework es un territorio, un conjunto de territorios forma un reino, es decir, .NET Framework es solamente una parte del reino .NET; entonces ¿Qué es realmente .NET?.

Se podría definir como un conjunto de tecnologías, herramientas y servicios que nos ayuda a crear todo tipo de aplicaciones en múltiples lenguajes, editores y bibliotecas para compilar en web, móvil, escritorio, juegos e IoT. Siendo sincero .NET es todo un mundo y nos tomaría años en aprenderla a nivel profesional y de forma completa, así que en este artículo explicaré de forma rápida, sencilla y comprensiva, y tu como programador .NET deberías saberlo.

¿Qué es .NET?

Microsoft .NET es una plataforma, ambiente o entorno de desarrollo de software, conformado por un conjunto de tecnologías y herramientas, con en ello podemos crear diferentes tipos de aplicaciones mediante Frameworks, lenguajes de programación, APIs, IDEs, Editores de código y la programación.

Para entender mejor, supongamos que la plataforma .NET es igual a una mesa de costura, pero con tener la mesa de costura no se puede hacer vestidos, para ello se necesita una máquina de coser, hilos, tijeras, cinta de medida, etc., al tener los componentes o herramientas necesarios, podemos construir vestidos; en la plataforma de desarrollo de .NET sucede lo mismo; tenemos una multitud de lenguajes, implementaciones, bibliotecas y herramientas, que son los componentes necesarios para poder construir aplicaciones, tanto web, programas de escritorio o aplicaciones móviles. Además  favorece el desarrollo multiplataforma, es decir, que una misma aplicación pueda correr indistintamente en diferentes sistemas operativos, por ejemplo en los sistemas operativos de dispositivos móviles como IOS, Android o Windows Phone. Representando gráficamente el reino de .NET tendríamos de esta manera:

Mundo .NET

¿Qué Modelos de aplicación puedo realizar con .NET?

Con .NET podemos crear muchos tipos de aplicación, algunos son multiplataforma, y ​​algunos para un sistema operativo en específico, entre ellos tenemos:

¿Cuáles son los Componentes de la arquitectura de .NET?

Tenemos los siguientes componentes que conforman .NET:

  • Las implementaciones.
  • La API .NET Standard.
  • Los Lenguajes de programación y sus compiladores (Tiempo de Compilación).
  • Los entornos de tiempo de ejecución.
  • Las herramientas.

¿Cuáles son los Lenguajes de programación de .NET?

Microsoft .NET desarrolla activamente tres lenguajes de programación: C#, F# y Visual Basic (VB), adicionalmente está el lenguaje J# (J Sharp), que es un lenguaje transicional para programadores de java y J++, sin embargo dejó de producirse en el año 2008, por otra parte, es un error muy común, decir que C++ está dentro de .NET, tampoco existe C++ .NET. El lenguaje C++ cuenta con su propio compilador, en la que C++ no puede entrar directamente a la plataforma .NET, ya que hay cosas que .NET no soporta. Por lo tanto Microsoft creo C++/CLI, que es básicamente C ++ con extensiones de Microsoft que le permiten escribir código dirigido a .NET Framework, pero C++ no se incluye en .NET. En conclusión, los únicos lenguajes de .NET son C#, F# y VB, que os explicaré un poco de cada uno:

C Sharp es un lenguaje de programación simple, eficaz, moderno, orientado a objetos, seguridad de tipos, además incluye soporte para programación orientado a componentes, mantiene sus raíces en la familia de lenguajes estilo C, por lo tanto, si estas familiarizado con C y lenguajes similares como C++, Java y JavaScript, tendrás muy pocos problemas para adaptarte a C#.

F Sharp es un lenguaje de programación funcional, consiste principalmente en definir tipos y funciones que son de tipo inferido y generalizadas automáticamente. Esto permite que su enfoque permanezca en el dominio del problema y manipule sus datos, en lugar de los detalles de la programación, ofrece interoperabilidad limpia con C # y bases de código existentes. También admite la programación tradicional imperativa y orientada a objetos.

Visual Basic es un lenguaje accesible con una sintaxis simple para crear aplicaciones de tipo seguro y orientadas a objetos. Entré los lenguajes .NET, la sintaxis de VB es la más cercana al idioma normal, lo que a menudo facilita el trabajo a las personas sin experiencia en desarrollo de software.

Estos 3 lenguajes son interoperables entre sí, es decir, puedes crear una aplicación con los 3 lenguajes al mismo tiempo, pero normalmente para crear una aplicación robusta, suelen usar C# (programación orientada a objetos) y F# (programación funcional).

¿Cuáles son las Implementaciones de .NET?

En .NET hay cuatro implementaciones principales: .NET Framework, .NET Core, Mono y UWP. A continuación explico brevemente los conceptos de cada uno de ellos.

.NET Framework

Es la implementación original y más popular de .NET, existe desde el año 2002, con .NET Framework podemos desarrollar aplicaciones web con Asp.Net, aplicaciones de escritorio con Windows Forms y WPF, servicios y móviles, .Net Framework solamente es para la plataforma Windows. Es decir, solo se puede compilar en un sistema operativo Windows, por lo tanto contiene API específicas de Windows y la biblioteca de clases base.

UWP (Plataforma universal de Windows)

Se usa para crear aplicaciones modernas y táctiles de Windows y software para Internet de las cosas (IoT). Se ha diseñado para unificar los diferentes tipos de dispositivos de destino, como PC, tabletas, phablets, teléfonos inteligentes e incluso la consola Xbox. Las aplicaciones se pueden escribir en C ++, C #, VB.NET y JavaScript. Microsoft toma UWP como una implementación independiente pero usa una pequeña parte de la biblioteca base core de .NETCore por el cual muchos lo consideran a UWP dentro de la implementación de .NETCore.

.NET Core

Es una implementación multiplataforma de .NET, se ejecuta en Windows, macOS, Linux, y puede usarse para compilar aplicaciones móviles, nube e IoT (Internet de las cosas), .NET Core fue diseñada para controlar cargas de trabajo de servidor y en la nube a gran escala. Implementa su propia biblioteca de clases base CoreFX.

Mono

Esta implementación se usa principalmente cuando se requiere un entorno de ejecución pequeño, puede crear aplicaciones móvilesmultiplataforma como Android, Mac, iOS, tvOS y watchOS, utilizando Xamarin, C# y .NET, y se centra principalmente en una superficie pequeña. Mono también proporciona juegos creados con el motor de Unity. Admite todas las versiones de .NET Standard publicadas actualmente. Además, todas las aplicaciones de Xamarin pueden compartir código entre sí y con otras plataformas .NET. De igual manera que .NET Framework y .NET Core, Mono también implementa su biblioteca de clases base Mono.

.NET Standard

Antes de dar una definición de ¿Qué es .NET Standar? Tenemos que saber ¿Qué es una biblioteca de clases portable? O también conocida como PCL, con la biblioteca de clases portable podemos compartir el código entre varios proyectos específicos de la plataforma tanto para IOS, android, windows, windows phone. Sin embargo, las PCL presentaban muchas desventajas, si nuestra clase usa una API que es netamente de la biblioteca de clases base de .Net Framework este no podrá ser usado en .Net Core, tendríamos que reemplazar con uno equivalente en .Net Core; para solucionar eso, la fundación Microsoft .Net creó .Net standard, que es una fusión de las bibliotecas de clases base y las bibliotecas de clases portable, eso quiere decir que es común con todas las implementaciones de .NET, por ejemplo, la clase DataSet (API Ado.NET) puede ser usado por .Net Core, Mono o .Net Framework, pero eso depende de la versión de .Net standard y las implementaciones.

Desde Visual Studio 2017, la PCL quedó obsoleta, .Net standard también reemplazó las bibliotecas base de cada implementación, pero de hecho no es así, porque aún hay API adicionales que son específicas de los sistemas operativos en los que se ejecuta, por ejemplo,  .Net Framework es sólo para Windows que incluye una API para acceder al registro de Windows y así sucede en cada plataforma, existe API específicas para cada plataforma que no puede ser usado por otros.

Entornos en tiempo de ejecución .NET

Un tiempo de ejecución es el entorno de ejecución para un programa administrado, existen los siguientes tiempos de ejecución de .NET:

  • Common Language Runtime (CLR) para .NET Framework.
  • Core Common Language Runtime (CoreCLR) para .NET Core.
  • .NET Native para Universal Windows Platform (UWP).
  • El tiempo de ejecución de Mono para Xamarin.iOS, Xamarin.Android, Xamarin.Mac y la plataforma de escritorio Mono.

Herramientas y Editores .NET

  • NuGet, es un administrador de paquetes de Microsoft .Net donde podemos descargar diferentes bibliotecas que contienen código compilado como archivos dll, por ejemplo, Entity Framework o Informes de Microsoft, se puede descargar desde un navegador o el propio visual estudio.
  • Entornos de desarrollo interactivo (IDE), como Visual Studio, Xamarin estudio, Visual Studio para Mac, JetBrains Rider.
  • Editores de código, como Visual Studio Code y el Plugin OmniSharp

Aqui os dejo un pequeño video: