Partilhar via


Bibliotecas de classes .NET

As bibliotecas de classes são o conceito de biblioteca compartilhada para .NET. Eles permitem que você componentize funcionalidades úteis em módulos que podem ser usados por vários aplicativos. Eles também podem ser usados como um meio de carregar a funcionalidade que não é necessária ou não conhecida na inicialização do aplicativo. As bibliotecas de classes são descritas usando o formato de arquivo .NET Assembly.

Há três tipos de bibliotecas de classes que você pode usar:

  • As bibliotecas de classes específicas da plataforma têm acesso a todas as APIs em uma determinada plataforma (por exemplo, .NET Framework no Windows, Xamarin iOS), mas só podem ser usadas por aplicativos e bibliotecas destinados a essa plataforma.
  • As bibliotecas de classes portáteis têm acesso a um subconjunto de APIs e podem ser usadas por aplicativos e bibliotecas destinados a várias plataformas.
  • As bibliotecas de classe .NET Standard são uma fusão do conceito de biblioteca portátil e específica da plataforma em um único modelo que fornece o melhor de ambos.

Bibliotecas de classes específicas da plataforma

As bibliotecas específicas da plataforma estão vinculadas a uma única plataforma .NET (por exemplo, .NET Framework no Windows) e, portanto, podem assumir dependências significativas em um ambiente de execução conhecido. Esse ambiente expõe um conjunto conhecido de APIs (APIs .NET e OS) e mantém e expõe o estado esperado (por exemplo, registro do Windows).

Os desenvolvedores que criam bibliotecas específicas da plataforma podem explorar totalmente a plataforma subjacente. As bibliotecas só serão executadas nessa determinada plataforma, tornando desnecessárias verificações de plataforma ou outras formas de código condicional (código de fonte única modulo para várias plataformas).

As bibliotecas específicas da plataforma têm sido o principal tipo de biblioteca de classes para o .NET Framework. Mesmo quando outras implementações .NET surgiram, as bibliotecas específicas da plataforma permaneceram o tipo de biblioteca dominante.

Bibliotecas de classes portáteis

As bibliotecas portáteis são suportadas em várias implementações .NET. Eles ainda podem assumir dependências em um ambiente de execução conhecido, no entanto, o ambiente é sintético que é gerado pela interseção de um conjunto de implementações concretas do .NET. APIs expostas e pressupostos de plataforma são um subconjunto do que estaria disponível para uma biblioteca específica da plataforma.

Você escolhe uma configuração de plataforma ao criar uma biblioteca portátil. A configuração da plataforma é o conjunto de plataformas que você precisa suportar (por exemplo, .NET Framework 4.5+, Windows Phone 8.0+). Quanto mais plataformas você optar por suportar, menos APIs e menos suposições de plataforma você pode fazer, o menor denominador comum. Essa característica pode ser confusa no início, já que as pessoas geralmente pensam que "mais é melhor", mas descobrem que mais plataformas suportadas resultam em menos APIs disponíveis.

Muitos desenvolvedores de bibliotecas mudaram da produção de várias bibliotecas específicas da plataforma de uma fonte (usando diretivas de compilação condicional) para bibliotecas portáteis. Existem várias abordagens para acessar a funcionalidade específica da plataforma dentro de bibliotecas portáteis, sendo o isco e o interruptor a técnica mais amplamente aceita neste momento.

Bibliotecas de classes do .NET Standard

As bibliotecas padrão do .NET substituem os conceitos de bibliotecas portáteis e específicas da plataforma. Eles são específicos da plataforma no sentido de que expõem todas as funcionalidades da plataforma subjacente (sem plataformas sintéticas ou interseções de plataforma). Eles são portáteis no sentido de que funcionam em todas as plataformas de suporte.

O .NET Standard expõe um conjunto de contratos de biblioteca. As implementações do .NET devem suportar cada contrato totalmente ou não suportar de todo. Cada implementação, portanto, suporta um conjunto de contratos .NET Standard. O corolário é que cada biblioteca de classes .NET Standard é suportada nas plataformas que suportam suas dependências de contrato.

O .NET Standard não expõe toda a funcionalidade do .NET Framework (nem isso é uma meta), no entanto, as bibliotecas expõem muito mais APIs do que as bibliotecas de classes portáteis.

As seguintes implementações suportam bibliotecas .NET Standard:

  • .NET Core
  • .NET Framework
  • Mono
  • Plataforma Universal do Windows (UWP)

Para obter mais informações, consulte .NET Standard.

Bibliotecas de classes mono

As bibliotecas de classes são suportadas no Mono, incluindo os três tipos de bibliotecas descritos anteriormente. O Mono é frequentemente visto como uma implementação multiplataforma do .NET Framework. Em parte, isso ocorre porque as bibliotecas do .NET Framework específicas da plataforma podem ser executadas no tempo de execução do Mono sem modificação ou recompilação. Essa característica estava em vigor antes da criação de bibliotecas de classes portáteis, então era uma escolha óbvia para habilitar a portabilidade binária entre o .NET Framework e o Mono (embora funcionasse apenas em uma direção).