Compartir por


Introducción a .NET

.NET es una plataforma para desarrolladores de código abierto gratuita y multiplataforma para compilar muchos tipos de aplicaciones. Puede ejecutar programas escritos en varios lenguajes, con C# como 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 código estático y dinámico, lo que permite un amplio conjunto de escenarios distintos.
  • La interoperabilidad de código nativo y los intrínsecos de hardware son de bajo costo y alta fidelidad (API sin procesar y acceso a instrucciones).
  • El código es portátil entre plataformas (arquitectura de sistema operativo y chip), mientras que el destino de la plataforma permite la especialización y la optimización.
  • La adaptación entre dominios de programación (nube, cliente, juegos) está habilitada con implementaciones especializadas del modelo de programación de uso general.
  • Los estándares del sector como OpenTelemetry y gRPC se prefieren a las soluciones a medida.

Microsoft y una comunidad global mantienen .NET de forma colaborativa. Las actualizaciones periódicas garantizan que los usuarios implementen aplicaciones seguras y confiables en entornos de producción.

Componentes

.NET incluye los siguientes componentes:

  • Runtime: ejecuta el código de la aplicación.
  • Bibliotecas: proporciona funcionalidad de utilidad como el análisis de JSON.
  • Compilador: compila código fuente de C# (y otros lenguajes) en código ejecutable (runtime).
  • SDK y otras herramientas: habilita 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. Los componentes de nivel superior, como las herramientas de .NET y las 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 se escribe en C#.

C# está orientado a objetos y el entorno de ejecución admite la orientación del objeto. C# requiere recolección de basura y el tiempo de ejecución proporciona un recolector de basura de 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 y impulsan el lenguaje C#. Por ejemplo, la instrucción de foreach 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 con hacer varias cosas al mismo tiempo es fundamental para prácticamente todas las cargas de trabajo. Esto podrían ser aplicaciones cliente que realizan un procesamiento en segundo plano al tiempo que mantienen la capacidad de respuesta de la interfaz de usuario, servicios que manejan muchos miles de solicitudes simultáneas, dispositivos que responden a una multitud de estímulos simultáneos, o máquinas de alta potencia que paralelizan el procesamiento de operaciones de procesamiento intensivo. El soporte para programación asincrónica es una característica de primera clase del lenguaje de programación C#, que proporciona las async y await palabras clave que facilitan la escritura y composición de operaciones asincrónicas, a la vez que se disfrutan de las ventajas completas de todos los flujos de control que el lenguaje tiene que ofrecer.

El sistema de tipos ofrece una amplitud significativa, atendiendo de forma similar a la seguridad, la descriptividad, el dinamismo y la interoperabilidad nativa. En primer lugar, el sistema de tipos permite un modelo de programación orientado a objetos. Incluye tipos, herencia de una única clase base, interfaces (incluidas las implementaciones de métodos predeterminadas) y envío de métodos virtuales para proporcionar un comportamiento adecuado para todas las capas de tipos que permite la orientación a objetos. Los tipos genéricos son omnipresentes y permiten especializar 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 su característica más definitoria. Esto es cierto para los lenguajes .NET. .NET tiene un GC con seguimiento y autoajustable. Tiene como objetivo ofrecer un uso "sin intervención" en el caso general, al tiempo que ofrece 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 lecciones aprendidas de una variedad 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 semántica similar. Los tipos de valor son totalmente compatibles a través del sistema de genéricos de .NET, lo que significa que los tipos genéricos como List<T> pueden proporcionar representaciones planas de memoria sin sobrecarga de colecciones de tipos de valor.

La reflexión es un paradigma de "programas como datos", lo que permite que una parte de un programa realice consultas dinámicas e invoque otra, 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 modelo de control de errores principal en .NET. Las excepciones tienen la ventaja de que no es necesario que la información de error esté representada en las firmas de métodos ni que sea manejada por cada método. El control de excepciones adecuado es esencial para la confiabilidad de las aplicaciones. Para evitar que la aplicación se bloquee, puedes 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.

Las pilas de aplicaciones, como ASP.NET Core y Windows Forms, se basan en y aprovechan las bibliotecas de bajo nivel, el lenguaje y el entorno de ejecución. 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 de desarrollador moderna, tanto en un escritorio para desarrolladores como para la integración continua (CI). La experiencia moderna para desarrolladores incluye la capacidad de compilar, analizar y probar código. A menudo, los proyectos de .NET se pueden compilar mediante un único dotnet build comando, que organiza la restauración de paquetes NuGet y la creación de dependencias.

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

Código abierto y gratuito

.NET es gratuito, de código abierto y es un proyecto de .NET Foundation . .NET es mantenido por Microsoft 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.

Apoyo

.NET es compatible con varias organizaciones que funcionan 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 versiones y directivas de soporte técnico. Se actualiza mensualmente el martes de parches (segundo martes), normalmente a las 10 a. m. hora del Pacífico.

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:

  • .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