Compartir a través de


Bibliotecas de clases de .NET

Las bibliotecas de clases son el concepto de biblioteca compartida de .NET. Permiten crear componentes de funcionalidad útil en módulos que pueden usar varias aplicaciones. También se pueden usar como medio para cargar la funcionalidad que no es necesaria o no se conoce en el inicio de la aplicación. Las bibliotecas de clases se describen mediante el formato de archivo de ensamblado de .NET .

Hay tres tipos de bibliotecas de clases que puede usar:

  • Las bibliotecas de clases específicas de la plataforma tienen acceso a todas las API de una plataforma determinada (por ejemplo, .NET Framework en Windows), pero solo las pueden usar las aplicaciones y bibliotecas destinadas a esa plataforma.
  • Las bibliotecas de clases portátiles de tienen acceso a un subconjunto de las API y pueden usarse en aplicaciones y bibliotecas que se destinan a varias plataformas.
  • Las bibliotecas de clases de .NET Standard son una fusión del concepto de específico de la plataforma y biblioteca portátil en un modelo único que ofrece lo mejor de ambos mundos.

Bibliotecas de clases específicas para plataforma

Las bibliotecas específicas de la plataforma están enlazadas a una única plataforma .NET (por ejemplo, .NET Framework en Windows) y, por tanto, pueden tomar dependencias significativas en un entorno de ejecución conocido. Este entorno expone un conjunto conocido de API (API de .NET y OS) y mantiene y expone el estado esperado (por ejemplo, registro de Windows).

Los desarrolladores que crean bibliotecas específicas de la plataforma pueden aprovechar completamente la plataforma subyacente. Las bibliotecas solo se ejecutarán en esa plataforma determinada, por lo que las comprobaciones de plataforma u otras formas de código condicional son innecesarios (código de abastecimiento único de módulo para varias plataformas).

Las bibliotecas específicas de la plataforma han sido el tipo de biblioteca de clases principal para .NET Framework. Incluso a medida que aparecieron otras implementaciones de .NET, las bibliotecas específicas de la plataforma seguían siendo el tipo de biblioteca dominante.

Bibliotecas de clases portables

Las bibliotecas portátiles se admiten en varias implementaciones de .NET. Todavía pueden tener dependencias de un entorno de ejecución conocido, pero el entorno es uno sintético, generado por la intersección de un conjunto de implementaciones concretas de .NET. Las API expuestas y las suposiciones de plataforma son un subconjunto de lo que estaría disponible para una biblioteca específica de la plataforma.

Puede elegir una configuración de plataforma al crear una biblioteca portátil. La configuración de la plataforma es el conjunto de plataformas que necesita admitir (por ejemplo, .NET Framework 4.5+, Windows Phone 8.0+). Cuantas más plataformas decida admitir, menos API y menos hipótesis de plataforma puede hacer, el mínimo común denominador. Esta característica puede ser confusa al principio, ya que las personas a menudo piensan que "más es mejor", pero encuentran que al haber más plataformas compatibles, hay menos APIs disponibles.

Muchos desarrolladores de bibliotecas han cambiado de producir, a partir de un único origen, varias bibliotecas específicas de la plataforma (mediante directivas de compilación condicional) a bibliotecas portátiles. Hay varios enfoques para acceder a la funcionalidad específica de la plataforma en las bibliotecas portables con bait-and-switch como la técnica más aceptada en este momento.

Bibliotecas de clases de .NET Standard

Las bibliotecas de .NET Standard son un reemplazo de los conceptos de bibliotecas portátiles y específicas de la plataforma. Son específicas de la plataforma en el sentido de que exponen toda la funcionalidad de la plataforma subyacente (sin plataformas sintéticas ni intersecciones de plataforma). Son portátiles en el sentido de que funcionan en todas las plataformas compatibles.

.NET Standard expone un conjunto de contratos de biblioteca . Las implementaciones de .NET deben admitir completamente cada contrato o no admitirlo en absoluto. Por lo tanto, cada implementación admite un conjunto de contratos de .NET Standard. El corolar es que cada biblioteca de clases de .NET Standard es compatible con las plataformas que admiten sus dependencias de contrato.

.NET Standard no expone toda la funcionalidad de .NET Framework (ni es ese objetivo), pero las bibliotecas exponen muchas más API que las bibliotecas portables.

Las implementaciones siguientes admiten bibliotecas de .NET Standard:

  • .NET Core
  • .NET Framework
  • Mono
  • Plataforma universal de Windows (UWP)

Para obtener más información, consulte .NET Standard.

Bibliotecas de clases de Mono

Las bibliotecas de clases se admiten en Mono, incluidos los tres tipos de bibliotecas descritas anteriormente. Mono suele verse como una implementación multiplataforma de .NET Framework. En parte, esto se debe a que las bibliotecas de .NET Framework específicas de la plataforma se pueden ejecutar en el entorno de ejecución mono sin modificaciones ni recompilaciones. Esta característica estaba en vigor antes de la creación de bibliotecas de clases portátiles, por lo que era una opción obvia para habilitar la portabilidad binaria entre .NET Framework y Mono (aunque solo funcionaba en una dirección).