Glosario de .NET

El objetivo principal de este glosario es aclarar los significados de algunos de los términos y acrónimos que aparecen frecuentemente en la documentación de .NET.

AOT

Compilador Ahead Of Time.

Similar a JIT, este compilador también convierte IL en código de máquina. A diferencia de la compilación JIT, la compilación AOT ocurre antes de que la aplicación se ejecute y, normalmente, se realiza en un equipo diferente. Dado que las cadenas de la herramienta de AOT no se compilan en tiempo de ejecución, no tienen que minimizar el tiempo dedicado a compilar. Esto significa que pueden dedicar más tiempo a la optimización. Puesto que el contexto de AOT es toda la aplicación, el compilador AOT también realiza vinculación entre módulos y el análisis de todo el programa, lo que significa que se siguen todas las referencias y se genera un archivo ejecutable único.

Vea CoreRT y .NET Native.

Modelo de aplicación

Una API específica de la carga de trabajo. A continuación se muestran algunos ejemplos:

  • ASP.NET
  • ASP.NET Web API
  • Entity Framework (EF)
  • Windows Presentation Foundation (WPF)
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Windows Forms (WinForms)

ASP.NET

Implementación original de ASP.NET que se incluye con .NET Framework, también conocido como ASP.NET 4.x.

A veces, ASP.NET es un término genérico que hace referencia tanto a la implementación original de ASP.NET como a ASP.NET Core. El significado que lleva el término en una instancia específica se determina según el contexto. Haga referencia a ASP.NET 4.x cuando desee dejar claro que no usa ASP.NET para indicar ambas implementaciones.

Vea la documentación de ASP.NET.

ASP.NET Core

Implementación multiplataforma, de alto rendimiento y de código abierto de ASP.NET.

Vea la documentación de ASP.NET Core.

ensamblado

Un archivo .dll o .exe que puede contener una colección de API a la que puede llamarse mediante aplicaciones u otros ensamblados.

Un ensamblado puede incluir tipos como interfaces, clases, estructuras, enumeraciones y delegados. A veces, se hace referencia a los ensamblados de la carpeta bin de un proyecto como archivos binarios. Vea también biblioteca.

BCL

Biblioteca de clases base.

Un conjunto de bibliotecas que conforman los espacios de nombres de System.* (y hasta cierto punto los de Microsoft.*). BCL es un marco de nivel inferior de uso general donde se compilan marcos de trabajo de la aplicación de nivel superior, como ASP.NET Core.

El código fuente de la BCL para .NET 5 (y .NET Core) y versiones posteriores se encuentra en el repositorio del entorno de ejecución de .NET. La mayoría de estas API de BCL también están disponibles en .NET Framework, por lo que puede considerar este código fuente como una bifurcación del de la BCL de .NET Framework.

Los siguientes términos a menudo hacen referencia a la misma colección de API a las que se refiere BCL:

CLR

Common Language Runtime.

El significado exacto depende del contexto. Common Language Runtime normalmente hace referencia al entorno de ejecución de .NET Framework o de .NET 5 (y .NET Core) y versiones posteriores.

CLR controla la asignación y administración de memoria. CLR es también una máquina virtual que no solo ejecuta aplicaciones, sino que también genera y compila código sobre la marcha mediante un compilador JIT.

La implementación de CLR para .NET Framework es solo para Windows.

La implementación de CLR para .NET 5 y versiones posteriores (también conocida como CoreCLR) se crea a partir del mismo código base que el CLR de .NET Framework. Originalmente, CoreCLR era el entorno de ejecución de Silverlight y estaba diseñado para ejecutarse en varias plataformas, concretamente Windows y OS X. Sigue siendo un entorno de ejecución multiplataforma y ahora incluye compatibilidad con muchas distribuciones de Linux.

Vea también entorno de ejecución.

CoreCLR

Common Language Runtime para .NET 5 (y .NET Core) y versiones posteriores.

Vea CLR.

CoreRT

A diferencia de CLR, CoreRT no es una máquina virtual, lo que significa que no incluye las funciones para generar y ejecutar código sobre la marcha porque no incluye un compilador JIT. En cambio, incluye GC, reflexión y capacidad de identificación del tipo en tiempo de ejecución (RTTI). Con todo, su sistema de tipos está diseñado para que no sean necesarios los metadatos para la reflexión. No requerir los metadatos permite tener una cadena de herramientas de AOT que puede vincular metadatos superfluos y (más importante) identificar código que no usa la aplicación. CoreRT está en desarrollo.

Vea Introducción a CoreRT y Laboratorio del entorno de ejecución de .NET.

multiplataforma

La capacidad para desarrollar y ejecutar una aplicación que se puede usar en varios sistemas operativos diferentes, como Linux, Windows e iOS, sin tener que volver a escribir específicamente para cada uno de ellos. Esto permite reutilizar el código y posibilita la coherencia entre aplicaciones en distintas plataformas.

Vea la plataforma.

ecosistema

Todo el software en tiempo de ejecución, las herramientas de desarrollo y los recursos de la comunidad que se usan para compilar y ejecutar aplicaciones de una tecnología determinada.

El término "ecosistema de .NET" se diferencia de términos parecidos como "pila de .NET" en que incluye bibliotecas y aplicaciones de terceros. Aquí se muestra un ejemplo en una frase:

  • "La finalidad de .NET Standard ha sido establecer una mayor uniformidad en el ecosistema de .NET".

marco de trabajo

En general, una colección completa de API que facilita el desarrollo y la implementación de aplicaciones que se basan en una tecnología concreta. En este sentido general, ASP.NET Core y Windows Forms son ejemplos de marcos de trabajo de la aplicación. Las palabras marco y biblioteca se usan a menudo como sinónimos.

Los siguientes términos tienen un significado diferente:

En ocasiones, "marco" hace referencia a una implementación de .NET. Por ejemplo, un artículo puede llamar plataforma a .NET 5.

Bibliotecas de marco

El significado depende del contexto. Puede hacer referencia a las bibliotecas de marco para .NET 5 (y .NET Core) y versiones posteriores, en cuyo caso hace referencia a las mismas bibliotecas a las que hace referencia BCL. También puede hacer referencia a las bibliotecas de marco de ASP.NET Core, que se basan en la BCL y proporcionan API adicionales para las aplicaciones web.

GC

Recolector de elementos no utilizados.

El recolector de elementos no utilizados es una implementación de administración de memoria automática. GC libera la memoria ocupada por objetos que ya no se usan.

Vea Recolección de elementos no utilizados.

IL

Lenguaje intermedio.

Los lenguajes .NET de nivel alto, como C#, compilan en un conjunto de instrucciones independiente del hardware, lo que se denomina lenguaje intermedio (IL). A veces, se hace referencia al IL como MSIL (IL de Microsoft) o CIL (Common IL).

JIT

Compilador Just-In-Time.

Similar a AOT, este compilador convierte el IL en código de máquina que entienda el procesador. A diferencia de AOT, la compilación JIT se produce a petición y se lleva a cabo en el mismo equipo en que debe ejecutarse el código. Puesto que la compilación JIT tiene lugar durante la ejecución de la aplicación, el tiempo de compilación es parte del tiempo de ejecución. Por tanto, los compiladores JIT tienen que compensar el tiempo invertido en optimizar el código con el ahorro que puede generar el código resultante. Pero un JIT conoce el hardware real y puede liberar a los desarrolladores de tener que enviar diferentes implementaciones.

implementación de .NET

Una implementación de .NET incluye lo siguiente:

  • Uno o varios entornos de ejecución. Ejemplos: CLR y CoreRT.
  • Biblioteca de clases que implementa una versión de .NET Standard y puede incluir API adicionales. Ejemplos: BCL para .NET Framework y para .NET 5 (y .NET Core) y versiones posteriores.
  • Opcionalmente, uno o varios marcos de trabajo de la aplicación. Ejemplos: ASP.NET, Windows Forms y WPF se incluyen en .NET Framework y .NET 5+.
  • Opcionalmente, herramientas de desarrollo. Algunas herramientas de desarrollo se comparten entre varias implementaciones.

Ejemplos de implementaciones de .NET:

Para más información, consulte Implementaciones de .NET.

biblioteca

Una colección de API que pueden llamarse mediante aplicaciones u otras bibliotecas. Una biblioteca de .NET se compone de uno o varios ensamblados.

Las palabras biblioteca y marco de trabajo se usan a menudo como sinónimos.

Mono

Mono es una implementación de .NETmultiplataforma y de código abierto que se usa principalmente cuando se necesita un entorno de ejecución pequeño. Es el entorno de ejecución que activa las aplicaciones de Xamarin en Android, Mac, iOS, tvOS y watchOS, y se centra principalmente en aplicaciones que requieren una superficie pequeña.

Admite todas las versiones de .NET Standard publicadas actualmente.

Históricamente, Mono implementaba la API de .NET Framework más grande y emulaba algunas de las funciones más populares en Unix. A veces, se usa para ejecutar aplicaciones de .NET que se basan en estas capacidades en Unix.

Mono se suele usar con un compilador Just-In-Time, pero también incluye un compilador estático completo (compilación Ahead Of Time) que se usa en plataformas como iOS.

Consulte la documentación de Mono.

.NET

Por ejemplo, el primer significado es el que se pretende en frases como "implementaciones de .NET" o "la plataforma de desarrollo de .NET". El segundo significado es el que se pretende en nombres como el SDK de .NET y la CLI de .NET.

.NET siempre se escribe todo en mayúsculas, nunca ".Net".

Vea Documentación de .NET.

.NET 5 y versiones posteriores

El signo más después de un número de versión significa "y versiones posteriores". Consulte .NET 5 y versiones posteriores.

.NET 5 y versiones posteriores

Una implementación multiplataforma, de alto rendimiento y de código abierto de .NET. También se conoce como .NET 5+. Incluye Common Language Runtime (CLR), un entorno de ejecución AOT (CoreRT, en desarrollo), una biblioteca de clases base (BCL) y el SDK de .NET.

Las versiones anteriores de esta implementación de .NET se conocen como .NET Core. .NET 5 es la siguiente versión después de .NET Core 3.1. La versión 4 se ha omitido para no confundir esta nueva implementación de .NET con la implementación anterior conocida como .NET Framework. La versión actual de .NET Framework es 4.8.

Vea Documentación de .NET.

CLI de .NET

Una cadena de herramientas multiplataforma para desarrollar aplicaciones y bibliotecas para .NET 5 (y .NET Core) y versiones posteriores. También conocida como la CLI de .NET Core.

Vea CLI de .NET.

.NET Core

Vea .NET 5 y versiones posteriores.

.NET Framework

Una implementación de .NET que se ejecuta solo en Windows. Incluye Common Language Runtime (CLR), la biblioteca de clases base (BCL) y las bibliotecas de marco de trabajo de la aplicación, como ASP.NET, Windows Forms y WPF.

Vea Guía de .NET Framework.

.NET Native

Cadena de herramientas del compilador que genera código nativo Ahead Of Time (AOT), en lugar de Just-In-Time (JIT).

La compilación se produce en el equipo del desarrollador, de forma similar a cómo funcionan el compilador y el enlazador de C++. Quita el código que no se usa y emplea más tiempo en optimizarlo. Extrae código de bibliotecas y lo combina en el archivo ejecutable. El resultado es un módulo único que representa toda la aplicación.

UWP es el marco de trabajo de la aplicación compatible con .NET Native.

Vea Documentación de .NET Native.

.NET SDK

Conjunto de bibliotecas y herramientas que permiten a los desarrolladores crear aplicaciones y bibliotecas de .NET para .NET 5 (y .NET Core) y versiones posteriores. También se conoce como el SDK de .NET Core.

Incluye la CLI de .NET para compilar aplicaciones, el entorno de ejecución, y las bibliotecas de .NET para compilar y ejecutar aplicaciones, y el ejecutable dotnet (dotnet.exe) que ejecuta comandos de la CLI y ejecuta aplicaciones.

Vea Información general sobre el SDK de .NET.

.NET Standard

Una especificación formal de las API de .NET que están disponibles en cada implementación de .NET.

La especificación de .NET Standard a veces se denomina biblioteca. Dado que una biblioteca incluye implementaciones de API, no solo especificaciones (interfaces), es confuso denominar "biblioteca" a .NET Standard.

Vea .NET Standard.

NGEN

Generación (de imágenes) nativas.

Esta tecnología se puede considerar como un compilador JIT persistente. Normalmente, compila código en el equipo en que se ejecuta el código, pero la compilación se suele producir durante la instalación.

paquete

Un paquete de NuGet, o un paquete sin más, es un archivo .zip con uno o varios ensamblados del mismo nombre junto con metadatos adicionales, como el nombre del autor.

El archivo .zip tiene una extensión .nupkg y puede contener recursos (como archivos .dll y .xml) para usar con varios marcos de destino y versiones. Cuando se instala en una aplicación o biblioteca, se seleccionan los recursos adecuados en función de la plataforma de destino especificada por la aplicación o biblioteca. Los recursos que definen la interfaz se encuentran en la carpeta ref y los recursos que definen la implementación se encuentran en la carpeta lib.

platform

Un sistema operativo y el hardware en que se ejecuta, como Windows, macOS, Linux, iOS y Android.

Aquí tiene ejemplos de uso en frases:

  • ".NET Core es una implementación multiplataforma de .NET".
  • "Los perfiles de PCL representan plataformas de Microsoft, mientras que .NET Standard es independiente de la plataforma".

La documentación heredada de .NET a veces usa el término "plataforma de .NET" para referirse a una implementación de .NET o a la pila de .NET que incluyen todas las implementaciones. Estos dos usos tienden a confundirse con el significado principal (sistema operativo o hardware), por tanto, tratamos de evitar estos usos.

"Plataforma" tiene un significado diferente en "plataforma del desarrollador", ya que hace referencia al software que proporciona herramientas y bibliotecas para compilar y ejecutar aplicaciones. .NET es una plataforma para el desarrollo de contenido de código abierto multiplataforma que permite compilar una gran variedad de tipos de aplicaciones.

POCO

Un objeto POCO, o un clásico objeto CLR o de clase, es una estructura de datos de .NET que solo contiene propiedades o campos públicos. Un POCO no debe contener ningún otro miembro, como:

  • methods
  • events
  • delegados

Estos objetos se usan principalmente como objetos de transferencia de datos (DTO). Un POCO puro no heredará otro objeto ni implementará una interfaz. Es habitual que los POCO se usen con la serialización.

motor en tiempo de ejecución

En términos generales, el entorno de ejecución de un programa administrado. El sistema operativo forma parte del entorno de ejecución, pero no del entorno de ejecución .NET. Estos son algunos ejemplos de los entornos de ejecución de .NET en este sentido de la palabra:

  • Common Language Runtime (CLR)
  • .NET Native (para UWP)
  • Entorno de ejecución Mono

El término "entorno de ejecución" tiene un significado diferente en algunos contextos:

  • Entorno de ejecución de .NET en la página de descarga de .NET 5.

    Puede descargar el entorno de ejecución de .NET u otros, como el entorno de ejecución de ASP.NET Core. En este caso, un entorno de ejecución es el conjunto de componentes que se deben instalar en un equipo para ejecutar una aplicación dependiente del marco en el equipo. El entorno de ejecución de .NET incluye el CLR y el marco compartido de .NET, que proporciona la BCL.

  • Bibliotecas en tiempo de ejecución de .NET

    Hace referencia a las mismas bibliotecas a las que hace referencia BCL. Pero otros entornos de ejecución, como el de ASP.NET Core, tienen otros marcos compartidos, con bibliotecas adicionales que se basan en la BCL.

  • Identificador en tiempo de ejecución (RID).

    Aquí, tiempo de ejecución hace referencia a la plataforma del sistema operativo y a la arquitectura de la CPU en la que se ejecuta una aplicación de .NET, por ejemplo, linux-x64.

  • En ocasiones, se usa "entorno de ejecución" para indicar una implementación de .NET, como en los ejemplos siguientes:

    • "Los diversos entornos de ejecución .NET implementan versiones concretas de .NET Standard. … Cada versión del entorno de ejecución de .NET anuncia la última versión de .NET Standard que admite...".
    • "Las bibliotecas diseñadas para ejecutarse en varios entornos de ejecución deben tener como destino este marco de trabajo" (en referencia a .NET Standard)

marco compartido

El significado depende del contexto. El marco compartido de .NET hace referencia a las bibliotecas incluidas en el entorno de ejecución de .NET. En este caso, el marco compartido para .NET 5 (y .NET Core) y versiones posteriores hace referencia a las mismas bibliotecas a las que hace referencia BCL.

Hay otros marcos compartidos. El marco compartido de ASP.NET Core hace referencia a las bibliotecas incluidas en el entorno de ejecución de ASP.NET Core, que incluye la BCL y API adicionales para su uso por parte de aplicaciones web.

En el caso de las aplicaciones dependientes del marco, el marco compartido consta de bibliotecas que se encuentran en los ensamblados instalados en una carpeta en el equipo que ejecuta la aplicación. En el caso de las aplicaciones independientes, los ensamblados de marco compartido se incluyen con la aplicación.

Para obtener más información, vea Profundización en los primitivos de .NET Core, parte 2: el marco compartido.

pila

Un conjunto de tecnologías de programación que se usan para compilar y ejecutar aplicaciones.

La "pila de .NET" hace referencia a .NET Standard y a todas las implementaciones de .NET. La frase "una pila de .NET" puede hacer referencia a una implementación de .NET.

versión de .NET Framework de destino

La colección de API de las que depende una aplicación o biblioteca de .NET.

Una aplicación o biblioteca puede tener como destino una versión de .NET Standard (por ejemplo, .NET Standard 2.0), que es la especificación de un conjunto estándar de API de todas las implementaciones de .NET. Una aplicación o biblioteca también puede tener como destino una versión de una implementación específica de .NET; en este caso, obtiene acceso a las API específicas de la implementación. Por ejemplo, una aplicación que tenga como destino Xamarin.iOS obtiene acceso a contenedores de la API de iOS proporcionados por Xamarin.

Para algunas plataformas de destino (por ejemplo, .NET Framework), las API disponibles las definen los ensamblados que una implementación de .NET instala en un sistema y pueden incluir las API del marco de trabajo de la aplicación (por ejemplo, ASP.NET o WinForms). En el caso de las plataformas de destino basadas en paquetes, las API las definen los paquetes instalados en la aplicación o biblioteca.

Vea Plataformas de destino.

TFM

Moniker de la plataforma de destino.

Un formato de token normalizado para especificar la plataforma de destino de una aplicación o biblioteca de .NET. Se suele hacer referencia a las plataformas de destino mediante un nombre corto, como net462. Los TFM de formato largo (como .NETFramework,Version=4.6.2) existen, pero no se suelen usar para especificar una plataforma de destino.

Vea Plataformas de destino.

UWP

Plataforma universal de Windows.

Una implementación de .NET que se usa para compilar aplicaciones Windows táctiles y software para Internet de las cosas (IoT). Se ha diseñado para unificar los diferentes tipos de dispositivos de destino, incluidos equipos, tabletas, teléfonos e incluso la consola Xbox. UWP proporciona muchos servicios, como una tienda de aplicaciones centralizada, un entorno de ejecución (AppContainer) y un conjunto de API de Windows para usar en lugar de Win32 (WinRT). Pueden escribirse aplicaciones en C++, C#, Visual Basic y JavaScript. Al usar C# y Visual Basic, .NET 5 (y .NET Core), así como sus versiones posteriores, proporcionan las API de .NET.

carga de trabajo

Un tipo de aplicación que alguien compila. Más genérico que modelo de aplicación. Por ejemplo, en la parte superior de todas las páginas de documentación de .NET, incluida esta, hay una lista desplegable para Cargas de trabajo, que permite cambiar a la documentación de Web, Dispositivos móviles, Nube, Escritorio y Machine Learning y datos.

En algunos contextos, carga de trabajo hace referencia a una colección de características de Visual Studio que puede elegir instalar para admitir un tipo determinado de aplicación. Para obtener un ejemplo, vea Selección de una carga de trabajo.

Vea también