Introducción a .NET

.NET es una plataforma para desarrolladores de código abierto, multiplataforma y gratuita diseñada para compilar muchos tipos de aplicaciones diferentes. Puede ejecutar programas escritos en varios lenguajes, siendo C# el más popular. Se basa en un entorno de ejecución de alto rendimiento que muchas aplicaciones a gran escala usan en producción.

Para obtener información sobre cómo descargar .NET y empezar a escribir su primera aplicación, consulte Introducción.

La plataforma .NET se ha diseñado para ofrecer productividad, rendimiento, seguridad y confiabilidad. Proporciona administración automática de memoria a través de un recolector de elementos no utilizados (GC). Posee seguridad de tipos y tiene protección de la memoria al usar un GC y compiladores de lenguaje estrictos. Ofrece simultaneidad a través de los elementos primitivos async/await y Task. Incluye un gran conjunto de bibliotecas que tienen una amplia funcionalidad y se han optimizado para el rendimiento en varios sistemas operativos y arquitecturas de chip.

.NET tiene los siguientes puntos de diseño:

  • La productividad es de pila completa y el entorno de ejecución, las bibliotecas, el lenguaje y las herramientas contribuyen a la experiencia de los usuarios desarrolladores.
  • El código seguro es el modelo de proceso principal, mientras que el código no seguro permite optimizaciones manuales adicionales.
  • Se admiten el código estático y dinámico, lo que permite un amplio conjunto de escenarios distintos.
  • Los objetos intrínsecos de hardware e interoperabilidad de código nativo son de bajo costo y alta fidelidad (acceso a instrucciones y API sin procesar).
  • El código es portable en distintas plataformas (arquitectura de chip y sistema operativo), mientras que los destinatarios de la plataforma permiten la especialización y optimización.
  • La adaptabilidad entre dominios de programación (nube, cliente, juegos) está habilitada con implementaciones especializadas del modelo de programación de uso general.
  • Se prefieren estándares del sector como OpenTelemetry y gRPC a soluciones a medida.

Microsoft y la comunidad mantienen .NET. Se actualiza periódicamente para garantizar que los usuarios implementen aplicaciones seguras y confiables en producción.

Componentes

. NET incluye ahora los componentes siguientes:

  • Entorno de ejecución: ejecuta código de aplicación.
  • Bibliotecas: proporciona funcionalidad de la utilidad como análisis de JSON.
  • Compilador: compila código fuente de C# (y otros lenguajes) en código ejecutable (entorno de ejecución).
  • SDK y otras herramientas: permiten la creación y supervisión de aplicaciones con flujos de trabajo modernos.
  • Pilas de aplicaciones: como ASP.NET Core y Windows Forms, que permiten escribir aplicaciones.

El entorno de ejecución, las bibliotecas y los lenguajes son los pilares de la pila de .NET. Componentes de nivel superior, como herramientas de .NET y pilas de aplicaciones, como ASP.NET Core, se basan en estos pilares. C# es el lenguaje de programación principal para .NET y gran parte de .NET está escrito en C#.

C# está orientado a objetos y el entorno de ejecución admite la orientación a objetos. C# requiere la recolección de elementos no utilizados y el entorno de ejecución proporciona un recolector de elementos no utilizados con seguimiento. Las bibliotecas (y también las pilas de aplicaciones) dan forma a esas funcionalidades en conceptos y modelos de objetos que permiten a los desarrolladores escribir algoritmos de forma productiva en flujos de trabajo intuitivos.

Las bibliotecas principales exponen miles de tipos, muchos de los cuales se integran con el lenguaje C# y lo impulsan. Por ejemplo, la instrucción foreach de C# permite enumerar colecciones arbitrarias. Las optimizaciones basadas en patrones permiten procesar colecciones como List<T> de forma sencilla y eficaz. Puede dejar que la recolección de elementos no utilizados se ocupe de la administración de recursos, pero la limpieza rápida es posible a través de IDisposable y la compatibilidad directa con lenguajes en la instrucción using.

La compatibilidad para hacer varias cosas al mismo tiempo es fundamental para prácticamente todas las cargas de trabajo. Podría tratarse de aplicaciones cliente que realizan un procesamiento en segundo plano al mismo tiempo que mantienen la capacidad de respuesta de la interfaz de usuario, servicios que administran miles de solicitudes simultáneas, dispositivos que responden a una gran variedad de estímulos simultáneos o máquinas de alta potencia que paralelizan el procesamiento de operaciones con muchos procesos. La compatibilidad con la programación asincrónica es una característica de primera clase del lenguaje de programación C#, que proporciona las palabras clave async y await que facilitan la escritura y creación de operaciones asincrónicas, al tiempo que se disfruta de los beneficios al completo de todas las construcciones de flujo de control que el lenguaje tiene que ofrecer.

El sistema de tipos ofrece una amplitud significativa, destinada de forma similar a la seguridad, la capacidad descriptiva, el dinamismo y la interoperabilidad nativa. Ante todo, el sistema de tipos permite un modelo de programación orientado a objetos. Incluye tipos, herencia (clase base única), interfaces (incluidas implementaciones de método predeterminadas) y envío del método virtual para proporcionar un comportamiento razonable para todas las capas de tipo que permite la orientación a objetos. Los tipos genéricos son una característica generalizada que permiten especializar las clases en uno o varios tipos.

El entorno de ejecución de .NET proporciona administración automática de memoria a través de un recolector de elementos no utilizados. Para cualquier lenguaje, es probable que su modelo de administración de memoria sea la característica que más le define. Esto es válido para los lenguajes .NET. .NET tiene un GC con seguimiento y autoajustable. Tiene como objetivo ofrecer una operación de "entrega" en general, así como opciones de configuración para cargas de trabajo más extremas. El GC actual es el resultado de muchos años de inversión y aprendizajes de una gran cantidad de cargas de trabajo.

Los tipos de valor y los bloques de memoria asignados a una pila ofrecen un control de bajo nivel más directo sobre los datos y la interoperabilidad de la plataforma nativa, en contraste con los tipos administrados por GC de .NET. La mayoría de los tipos primitivos de .NET, como los tipos enteros, son tipos de valor y los usuarios pueden definir sus propios tipos con una semántica similar. Los tipos de valor se admiten por completo a través del sistema de elementos genéricos de .NET, lo que significa que tipos genéricos como List<T> pueden proporcionar representaciones de memoria planas y sin sobrecarga de colecciones de tipos de valor.

La reflexión es un paradigma de "programas como datos" que permite que una parte de un programa consulte e invoque otra dinámicamente, en términos de ensamblados, tipos y miembros. Resulta especialmente útil para las herramientas y modelos de programación enlazados en tiempo de ejecución.

Las excepciones son el principal modelo de control de errores de .NET. Las excepciones tienen la ventaja de que no es necesario representar la información del error en firmas de método ni tampoco que todos los métodos la controlen. Un control de excepciones adecuado es fundamental para la confiabilidad de las aplicaciones. Para evitar que la aplicación se bloquee, puede controlar intencionadamente las excepciones esperadas en el código. Una aplicación bloqueada es más confiable y diagnosticable que una aplicación con un comportamiento indefinido.

Pilas de aplicaciones como ASP.NET Core y Windows Forms, se basan en bibliotecas de bajo nivel, el lenguaje y el entorno de ejecución, y los aprovechan. Las pilas de aplicaciones definen la forma en que se construyen las aplicaciones y su ciclo de vida de ejecución.

El SDK y otras herramientas permiten una experiencia para desarrolladores moderna, tanto en un escritorio para desarrolladores como para la integración continua (CI). La experiencia para desarrolladores moderna incluye la capacidad de compilar, analizar y probar código. A menudo, los proyectos de .NET se pueden compilar mediante un único comando dotnet build, que organiza la restauración de paquetes NuGet y dependencias de compilación.

NuGet es el administrador de paquetes para .NET. Contiene cientos de miles de paquetes que implementan la funcionalidad en muchos escenarios. La mayoría de las aplicaciones dependen de paquetes NuGet en alguna funcionalidad. Microsoft mantiene la galería de NuGet.

Gratuito y de código abierto

.NET es gratuito, de código abierto y es un proyecto de .NET Foundation. Microsoft y la comunidad de GitHub mantienen .NET en varios repositorios.

El código fuente y los archivos binarios de .NET tienen licencia del MIT. Se aplican licencias adicionales en Windows.

Soporte técnico

.NET es compatible con varias organizaciones que trabajan para asegurarse de que .NET se puede ejecutar en varios sistemas operativos y se mantiene actualizado. Se puede usar en arquitecturas ARM64, x64 y x86.

Las nuevas versiones de .NET se publican anualmente en noviembre, según nuestras directivas de versiones y soporte técnico. Se actualiza mensualmente en la revisión de los martes (segundo martes), normalmente a las 10:00 Hora del Pacífico.

Ecosistema .NET

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

Implementaciones de .NET:

  • .NET Framework: .NET original. Proporciona acceso a las amplias funcionalidades de Windows y Windows Server. Se admite activamente, en mantenimiento.
  • Mono: la comunidad original y .NET de código abierto. Una implementación multiplataforma de .NET Framework. Compatible activamente con Android, iOS y WebAssembly.
  • .NET (Core): .NET moderno. Una implementación multiplataforma y de código abierto de .NET, reformulada para la era de la nube sin dejar de ser significativamente compatible con .NET Framework. Compatible activamente con Linux, macOS y Windows.

Pasos siguientes