다음을 통해 공유


.NET 클래스 라이브러리

클래스 라이브러리는 .NET의 공유 라이브러리 개념입니다 . 이 기능을 사용하면 여러 애플리케이션에서 사용할 수 있는 모듈로 유용한 기능을 구성할 수 있습니다. 애플리케이션 시작 시 필요하지 않거나 알 수 없는 기능을 로드하는 수단으로 사용할 수도 있습니다. 클래스 라이브러리는 .NET 어셈블리 파일 형식을 사용하여 설명됩니다.

사용할 수 있는 클래스 라이브러리에는 다음 세 가지 유형이 있습니다.

  • 플랫폼별 클래스 라이브러리는 지정된 플랫폼의 모든 API(예: Windows의 .NET Framework)에 액세스할 수 있지만 해당 플랫폼을 대상으로 하는 앱 및 라이브러리에서만 사용할 수 있습니다.
  • 이식 가능한 클래스 라이브러리는 API의 하위 집합에 액세스할 수 있으며 여러 플랫폼을 대상으로 하는 앱 및 라이브러리에서 사용할 수 있습니다.
  • .NET Standard 클래스 라이브러리는 플랫폼별 및 이식 가능한 라이브러리 개념을 둘 다 최상으로 제공하는 단일 모델로 병합한 것입니다.

플랫폼별 클래스 라이브러리

플랫폼별 라이브러리는 단일 .NET 플랫폼(예: Windows의 .NET Framework)에 바인딩되므로 알려진 실행 환경에 상당한 종속성을 사용할 수 있습니다. 이러한 환경은 알려진 API 집합(.NET 및 OS API)을 노출하고 예상 상태(예: Windows 레지스트리)를 유지 관리하고 노출합니다.

플랫폼별 라이브러리를 만드는 개발자는 기본 플랫폼을 완전히 활용할 수 있습니다. 라이브러리는 지정된 플랫폼에서만 실행되므로 플랫폼 검사 또는 기타 형태의 조건부 코드가 필요하지 않습니다(여러 플랫폼에 대한 모듈로 단일 소싱 코드).

플랫폼별 라이브러리는 .NET Framework의 기본 클래스 라이브러리 형식이었습니다. 다른 .NET 구현이 등장하더라도 플랫폼별 라이브러리는 여전히 주요 라이브러리 유형입니다.

이식 가능한 클래스 라이브러리

이식 가능한 라이브러리는 여러 .NET 구현에서 지원됩니다. 알려진 실행 환경에 대한 종속성을 여전히 사용할 수 있지만 환경은 구체적인 .NET 구현 집합의 교집합에 의해 생성되는 가상 환경입니다. 노출된 API 및 플랫폼 가정은 플랫폼별 라이브러리에서 사용할 수 있는 항목의 하위 집합입니다.

이식 가능한 라이브러리를 만들 때 플랫폼 구성을 선택합니다. 플랫폼 구성은 지원해야 하는 플랫폼 집합입니다(예: .NET Framework 4.5 이상, Windows Phone 8.0 이상). 지원할 플랫폼을 더 많이 선택할수록 지원할 수 있는 API와 플랫폼 가정이 줄어들어 가장 기본적인 수준으로 맞춰지게 됩니다. 사람들이 종종 "더 낫다"고 생각하지만 지원되는 플랫폼이 많을수록 사용 가능한 API가 적기 때문에 처음에는 이러한 특성이 혼동될 수 있습니다.

많은 라이브러리 개발자가 하나의 원본(조건부 컴파일 지시문 사용)에서 이식 가능한 라이브러리로 여러 플랫폼별 라이브러리를 생성하는 것으로 전환했습니다. 이식 가능한 라이브러리 내에서 플랫폼별 기능에 액세스하는 방법에는 여러 가지가 있으며, 이 시점에서는 bait-and-switch가 가장 널리 받아들여지는 기술입니다.

.NET 표준 클래스 라이브러리

.NET Standard 라이브러리는 플랫폼별 이식 가능한 라이브러리 개념을 대체합니다. 기본 플랫폼(가상 플랫폼 또는 플랫폼 교집합 없음)의 모든 기능을 노출한다는 점에서 플랫폼별로 다릅니다. 모든 지원 플랫폼에서 작동한다는 점에서 이식 가능합니다.

.NET Standard는 라이브러리 계약 집합을 노출합니다. .NET 구현은 각 계약을 완전히 지원하거나 전혀 지원하지 않아야 합니다. 따라서 각 구현은 .NET Standard 계약 집합을 지원합니다. 각 .NET Standard 클래스 라이브러리는 계약 종속성을 지원하는 플랫폼에서 지원됩니다.

.NET Standard는 .NET Framework의 전체 기능을 노출하지 않지만(목표도 아님) 라이브러리는 이식 가능한 클래스 라이브러리보다 더 많은 API를 노출합니다.

다음 구현에서는 .NET Standard 라이브러리를 지원합니다.

  • .NET 코어
  • .NET Framework
  • 모노
  • UWP(유니버설 Windows 플랫폼)

자세한 내용은 .NET Standard 참조하세요.

Mono 클래스 라이브러리

클래스 라이브러리는 앞에서 설명한 세 가지 유형의 라이브러리를 포함하여 Mono에서 지원됩니다. Mono는 종종 .NET Framework의 플랫폼 간 구현으로 간주됩니다. 플랫폼별 .NET Framework 라이브러리는 수정 또는 다시 컴파일 없이 Mono 런타임에서 실행할 수 있기 때문입니다. 이 특성은 이식 가능한 클래스 라이브러리를 만들기 전에 적용되었으므로 .NET Framework와 Mono 간에 이진 이식성을 사용하도록 설정하는 것이 분명했습니다(한 방향으로만 작동함).