¿Qué es .NET? Introducción e información general

.NET es una plataforma gratuita multiplataforma código abierto para desarrolladores para compilar muchos tipos de aplicaciones. .NET se basa en un entorno de ejecución de alto rendimiento que se usa en producción por muchas aplicaciones a gran escala.

Aplicaciones en la nube

Aplicaciones cliente multiplataforma

Aplicaciones de Windows

Otros tipos de aplicación

Características

Las características de .NET permiten a los desarrolladores escribir código confiable y eficaz de forma productiva.

Uso de .NET

Las aplicaciones y bibliotecas de .NET se compilan a partir del código fuente y un archivo de proyecto, mediante . CLI de NET o un entorno de desarrollo integrado (IDE) como Visual Studio.

El ejemplo siguiente es una aplicación de .NET mínima:

Archivo del proyecto:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>

Código fuente:

Console.WriteLine("Hello, World!");

La aplicación se puede compilar y ejecutar con la CLI de .NET:

% dotnet run
Hello, World!

También se puede compilar y ejecutar como dos pasos independientes. El ejemplo siguiente es para una aplicación con nombre app:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

Distribuciones binarias

  • SDK de .NET : conjunto de herramientas, bibliotecas y entornos de ejecución para desarrollo, compilación y pruebas de aplicaciones.
  • Runtimes de .NET : conjunto de entornos de ejecución y bibliotecas para ejecutar aplicaciones.

Puede descargar .NET desde:

Gratis y código abierto

.NET es gratuito, código abierto y es un proyectode .NET Foundation. Microsoft mantiene .NET y la comunidad en GitHub en varios repositorios.

El origen y los archivos binarios de .NET tienen licencia con la licencia MIT. Se aplican licencias adicionales en Windows para distribuciones binarias.

Soporte técnico

Microsoft admite .NET en sistemas operativos Android, Apple, Linux y Windows. Se puede usar en arquitecturas Arm64, x64 y x86. También se admite en entornos emulados, como macOS Rosetta 2.

Las nuevas versiones de .NET se publican anualmente en noviembre. Las versiones de .NET en años impares son versiones de soporte técnico a largo plazo (LTS) y se admiten durante tres años. Las versiones en años pares son versiones de soporte técnico a corto plazo (STS) y se admiten durante 18 meses. El nivel de calidad, las directivas de cambio importante y todos los demás aspectos de las versiones son los mismos. Para obtener más información, consulte Versiones y soporte técnico.

El equipo de .NET de Microsoft trabaja en colaboración con otras organizaciones para distribuir y admitir .NET de varias maneras.

Red Hat admite .NET en Red Hat Enterprise Linux (RHEL).

Samsung admite .NET en plataformas Tizen.

Tiempo de ejecución

Common Language Runtime (CLR) es la base en la que se basan todas las aplicaciones .NET. Las características fundamentales del entorno de ejecución son:

  • Recolección de elementos no utilizados.
  • Seguridad de memoria y seguridad de tipos.
  • Compatibilidad de alto nivel con lenguajes de programación.
  • Diseño multiplataforma.

.NET se denomina a veces un entorno de ejecución de "código administrado". Se denomina administrado principalmente porque usa un recolector de elementos no utilizados para la administración de memoria y porque exige la seguridad de tipo y memoria. CLR virtualiza (o abstrae) una variedad de conceptos de hardware y sistema operativo, como memoria, subprocesos y excepciones.

CLR se diseñó para ser un entorno de ejecución multiplataforma a partir de su creación. Se ha migrado a varios sistemas operativos y arquitecturas. Normalmente, no es necesario volver a compilar el código .NET multiplataforma para ejecutarse en nuevos entornos. En su lugar, solo tiene que instalar un entorno de ejecución diferente para ejecutar la aplicación.

El tiempo de ejecución expone varios servicios de diagnóstico y API para depuradores, volcados y herramientas de seguimiento , y observabilidad. La implementación de observabilidad se basa principalmente en OpenTelemetry, lo que permite la supervisión flexible de aplicaciones y la ingeniería de confiabilidad del sitio (SRE).

El tiempo de ejecución ofrece funcionalidad de interoperabilidad de estilo C de bajo nivel, mediante una combinación de P/Invoke, tipos de valor y la capacidad de dividir valores a través del límite de código nativo o administrado.

Idiomas

El entorno de ejecución está diseñado para admitir varios lenguajes de programación. Los lenguajes de C#, F# y Visual Basic son compatibles con Microsoft y están diseñados en colaboración con la comunidad.

  • C# es un lenguaje de programación moderno, orientado a objetos y con seguridad de tipos. Tiene sus raíces en la familia de lenguajes C y estará inmediatamente familiarizado con los programadores de C, C++, Java y JavaScript.

  • F# es un lenguaje de programación interoperable para escribir código concisa, sólido y eficaz. La programación de F# está orientada a datos, donde el código implica la transformación de datos con funciones.

  • Visual Basic usa una sintaxis más detallada que está más cerca del lenguaje humano normal. Puede ser un lenguaje más fácil aprender para las personas que no están familiarizados con la programación.

Compilación

Las aplicaciones .NET (como se escriben en un lenguaje de alto nivel, como C#) se compilan en un lenguaje intermedio (IL). IL es un formato de código compacto que se puede admitir en cualquier sistema operativo o arquitectura. La mayoría de las aplicaciones .NET usan API que se admiten en varios entornos, lo que requiere que solo se ejecute el entorno de ejecución de .NET.

Il debe compilarse en código nativo para ejecutarse en una CPU, por ejemplo Arm64 o x64. .NET admite modelos de compilación Just-In-Time (AOT) y Just-In-Time (JIT).

  • En Android, Linux, macOS y Linux, la compilación JIT es la predeterminada y AOT es opcional (por ejemplo, con ReadyToRun).
  • En iOS, AOT es obligatorio (excepto cuando se ejecuta en el simulador).
  • En entornos de WebAssembly (Wasm), AOT es obligatorio.

La ventaja de JIT es que puede compilar una aplicación (sin modificar) en las instrucciones de CPU y las convenciones de llamada en un entorno determinado, según el sistema operativo y el hardware subyacentes. También puede compilar código en niveles de calidad superiores o inferiores para permitir un mejor rendimiento de rendimiento de inicio y estado estable.

La ventaja de AOT es que proporciona el mejor inicio de la aplicación y puede (en algunos casos) dar lugar a implementaciones más pequeñas. La principal desventaja es que los archivos binarios deben compilarse para cada destino de implementación independiente (igual que cualquier otro código nativo). El código AOT no es compatible con algunos patrones de reflexión.

Bibliotecas en tiempo de ejecución

.NET tiene un conjunto estándar completo de bibliotecas de clases. Estas bibliotecas proporcionan implementaciones para muchos tipos de propósito general y específicos de la carga de trabajo, y funcionalidad de la utilidad.

Estos son algunos ejemplos de los tipos definidos en las bibliotecas en tiempo de ejecución de .NET:

Para obtener más información, vea Introducción a las bibliotecas en tiempo de ejecución.

Administrador de paquetes de NuGet

NuGet es el administrador de paquetes para .NET. Permite a los desarrolladores compartir archivos binarios compilados entre sí. NuGet.org ofrece muchos paquetes populares de la comunidad.

Herramientas

El SDK de .NET es un conjunto de bibliotecas y herramientas para desarrollar y ejecutar aplicaciones .NET. Incluye el motor de compilación de MSBuild , el compilador Roslyn (C# y Visual Basic) y el compilador de F# . La mayoría de los comandos se ejecutan mediante el dotnet comando . Las herramientas de la CLI se pueden usar para el desarrollo local y la integración continua.

La familia de IDE de Visual Studio ofrece una excelente compatibilidad con .NET y los lenguajes C#, F# y Visual Basic.

Las características de seguridad de GitHub Codespaces y GitHub admiten .NET.

Cuaderno

.NET Interactive es un grupo de API y herramientas de la CLI que permiten a los usuarios crear experiencias interactivas en la web, markdown y cuadernos.

Para obtener más información, vea los siguientes recursos:

CI/CD

MSBuild y la CLI de .NET se pueden usar con diversas herramientas y entornos de integración continua, como:

Para obtener más información, vea Uso del SDK de .NET y herramientas de integración continua (CI)

Modelos de implementación

Las aplicaciones .NET se pueden publicar en dos modos diferentes:

  • Las aplicaciones independientes incluyen el entorno de ejecución de .NET y las bibliotecas dependientes. Pueden ser de un solo archivo o varios archivos. Los usuarios de la aplicación pueden ejecutarla en un equipo que no tenga instalado el entorno de ejecución de .NET. Las aplicaciones independientes siempre tienen como destino una única configuración de arquitectura y sistema operativo.
  • Las aplicaciones dependientes del marco requieren una versión compatible del entorno de ejecución de .NET, normalmente instalada globalmente. Las aplicaciones dependientes del marco de trabajo se pueden publicar para una única configuración de arquitectura y sistema operativo o como "portable", que tiene como destino todas las configuraciones admitidas.

Las aplicaciones .NET se inician con un ejecutable nativo, de forma predeterminada. El archivo ejecutable es específico del sistema operativo y de la arquitectura. Las aplicaciones también se pueden iniciar con el dotnet comando .

Las aplicaciones se pueden implementar en contenedores. Microsoft proporciona imágenes de contenedor para diversos entornos de destino.

Historial de .NET

En 2002, Microsoft publicó .NET Framework, una plataforma de desarrollo para la creación de aplicaciones Windows. En la actualidad, .NET Framework está en la versión 4.8 y sigue siendo totalmente compatible con Microsoft.

En 2014, Microsoft presentó .NET Core como sucesor multiplataforma y de código abierto para .NET Framework. Esta nueva implementación de .NET mantiene el nombre .NET Core hasta la versión 3.1. La siguiente versión después de .NET Core 3.1 se denominaba .NET 5.

Las nuevas versiones de .NET siguen siendo publicadas anualmente, cada una con un número de versión principal superior. Incluyen características nuevas importantes y, a menudo, permiten nuevos escenarios.

Ecosistema de .NET

Hay varias variantes de .NET, cada una de las cuales admite un tipo diferente de aplicación. La razón de varias variantes es parte histórica, parte técnica.

Implementaciones de .NET (orden histórico):

  • .NET Framework : proporciona acceso a las amplias funcionalidades de Windows y Windows Server. También se usa ampliamente para la informática en la nube basada en Windows. .NET original.
  • Mono : implementación multiplataforma de .NET Framework. La comunidad original y código abierto .NET. Se usa para aplicaciones Android, iOS y Wasm.
  • .NET (Core): una implementación multiplataforma y código abierto de .NET, que se ha vuelto a crear para la antigüedad de la nube y que sigue siendo significativamente compatible con .NET Framework. Se usa para aplicaciones linux, macOS y Windows.

Pasos siguientes