.NET 용어
이 용어집의 주 용도는 .NET 설명서에서 자주 나타나는 선택한 용어 및 머리글자어의 의미를 명확히 나타내는 것입니다.
AOT
Ahead-Of-Time 컴파일러입니다.
JIT와 비슷하게 이 컴파일러도 IL을 기계어 코드로 변환합니다. JIT 컴파일과는 달리 AOT 컴파일은 애플리케이션이 실행되기 전에 수행되며 일반적으로 다른 컴퓨터에서 수행됩니다. AOT 툴 체인은 런타임에 컴파일되지 않으므로 컴파일 시간을 최소화할 필요가 없습니다. 즉, 더 많은 시간을 최적화하는 데 사용할 수 있습니다. AOT의 컨텍스트는 전체 애플리케이션이므로 AOT 컴파일러는 모듈 간 연결 및 전체 프로그램 분석도 수행합니다. 즉, 모든 참조가 수행되고 단일 실행 파일이 생성된다는 의미입니다.
앱 모델
워크로드별 API. 다음 몇 가지 예를 참조하세요.
- .NET Aspire
- ASP.NET
- ASP.NET Web API
- EF(Entity Framework)
- WPF(Windows Presentation Foundation)
- WCF(Windows Communication Foundation)
- Windows Workflow Foundation(WF)
- Windows Forms(WinForms)
ASP.NET
ASP.NET 4.x 및 ASP.NET Framework라고도 하는 .NET Framework와 함께 제공되는 원래 ASP.NET 구현입니다.
경우에 따라 ASP.NET은 원래 ASP.NET 및 ASP.NET Core를 모두 나타내는 포괄적인 용어입니다. 지정된 인스턴스에서 용어가 전달하는 의미는 컨텍스트에 따라 결정됩니다. ASP.NET을 사용하여 두 구현체를 모두 의미하는 것이 아님을 분명히 하려는 경우 ASP.NET 4.x를 참조하세요.
ASP.NET 설명서를 참조하세요.
ASP.NET Core
다양한 ASP.NET 플랫폼에서 사용할 수 있는 고성능 오픈 소스 구현입니다.
ASP.NET Core 설명서를 참조하세요.
assembly
애플리케이션이나 다른 어셈블리에서 호출할 수 있는 API 컬렉션을 포함할 수 있는 .dll 또는 .exe 파일입니다.
어셈블리에는 인터페이스, 클래스, 구조체, 열거형 및 대리자와 같은 형식이 포함됩니다. 프로젝트의 bin 폴더에 있는 어셈블리를 바이너리라고도 합니다. 라이브러리를 참조하세요.
BCL
기본 클래스 라이브러리입니다.
System.\* (및 제한된 범위의 Microsoft.\*) 네임스페이스를 구성하는 라이브러리 집합입니다. BCL은 ASP.NET Core 같은 상위 수준 애플리케이션 프레임워크의 기반이 되는 하위 수준의 범용 프레임워크입니다.
.NET용 BCL의 소스 코드는 .NET 런타임 리포지토리에 포함되어 있습니다. 대부분의 BCL API는 .NET Framework에서도 사용할 수 있으므로 이 소스 코드를 .NET Framework BCL 소스 코드의 포크로 간주할 수 있습니다.
다음 용어는 종종 BCL에서 참조하는 것과 동일한 API 컬렉션을 참조합니다.
CLR
공용 언어 런타임입니다.
정확한 의미는 컨텍스트에 따라 달라집니다. 공용 언어 런타임은 일반적으로 .NET Framework의 런타임 또는 .NET 런타임을 나타냅니다.
CLR은 메모리 할당 및 관리를 처리합니다. 또한 CLR은 앱을 실행할 뿐만 아니라 JIT 컴파일러를 사용하여 즉시 코드를 생성하고 컴파일하는 가상 머신입니다.
.NET Framework의 CLR 구현은 Windows 전용입니다.
.NET(Core CLR이라고도 함)에 대한 CLR 구현은 .NET Framework CLR과 동일한 코드 베이스에서 빌드됩니다. 원래 Core CLR은 Silverlight의 런타임이고 여러 플랫폼, 특히 Windows 및 OS X에서 실행되도록 디자인되었습니다. 지금도 많은 Linux 배포 지원을 포함하는 플랫폼 간 런타임입니다.
런타임도 참조하세요.
Core CLR
.NET용 공용 언어 런타임입니다.
CLR을 참조하세요.
CoreRT
CLR과 달리 CoreRT는 가상 머신이 아닙니다. 즉, JIT를 포함하지 않으므로 즉시 코드를 생성하고 실행하는 기능을 포함하지 않습니다. 그러나 GC와 RTTI(런타임 형식 식별) 및 리플렉션에 대한 기능은 포함합니다. 그러나 해당 형식 시스템은 리플렉션에 대한 메타데이터가 필요하지 않도록 설계되었습니다. 메타데이터가 필요하지 않으면 불필요한 메타데이터를 분리하고 더 중요하게는 앱이 사용하지 않는 코드를 식별할 수 있는 AOT 도구 체인을 사용할 수 있습니다. CoreRT는 개발 중입니다.
Intro to CoreRT(CoreRT 소개) 및 .NET Runtime Lab(.NET 런타임 랩)을 참조하세요.
플랫폼 간
각 운영 체제에 맞게 다시 작성할 필요 없이 Linux, Windows 및 iOS와 같은 다양한 운영 체제에서 사용할 수 있는 애플리케이션을 개발하고 실행하는 기능입니다. 이를 통해 다양한 플랫폼에서 애플리케이션 간에 코드를 다시 사용하고 일관성을 유지할 수 있습니다.
플랫폼을 참조하세요.
에코시스템
특정 기술에 대한 애플리케이션을 빌드하고 실행하는 데 사용되는 모든 런타임 소프트웨어, 개발 도구 및 커뮤니티 리소스입니다.
“.NET 에코시스템”이라는 용어는 타사 앱 및 라이브러리를 포함한다는 점에서 “.NET 스택”과 같은 유사한 용어와 다릅니다. 다음은 문장에서의 예제입니다.
- “.NET Standard는 .NET 에코시스템의 통일성을 높이기 위한 것이었습니다.”
프레임워크
일반적으로 특정 기술을 기반으로 하는 애플리케이션의 개발 및 배포를 용이하게 하는 포괄적인 API 컬렉션입니다. 이 일반적인 의미에서 ASP.NET Core 및 Windows Forms는 애플리케이션 프레임워크의 예입니다. 프레임워크 및 라이브러리라는 단어는 종종 같은 뜻으로 사용됩니다.
“프레임워크”라는 단어는 다음 용어에서 다른 의미가 있습니다.
경우에 따라 “프레임워크”는 .NET 구현을 나타냅니다.
프레임워크 라이브러리
의미는 컨텍스트에 따라 달라집니다. .NET용 프레임워크 라이브러리를 참조할 수 있습니다. 이 경우 BCL이 참조하는 동일한 라이브러리를 참조합니다. BCL을 기반으로 빌드하고 웹앱에 대한 추가 API를 제공하는 ASP.NET Core 프레임워크 라이브러리를 참조할 수도 있습니다.
GC
가비지 수집기입니다.
가비지 수집기는 자동 메모리 관리의 구현체입니다. GC는 개체가 사용한 메모리에서 더 이상 사용되지 않는 메모리를 해제합니다.
가비지 수집을 참조하세요.
IL
중간 언어입니다.
C#과 같은 상위 수준 .NET 언어가 IL(중간 언어)이라는 하드웨어 독립 명령 집합으로 컴파일됩니다. IL은 MSIL(Microsoft IL) 또는 CIL(공통 IL)이라고도 합니다.
JIT
Just-In-Time 컴파일러입니다.
AOT와 유사한 이 컴파일러는 IL을 프로세서에서 이해하는 기계어 코드로 변환합니다. AOT와 달리 JIT 컴파일은 요청 시 수행되며 코드가 실행되어야 하는 것과 동일한 컴퓨터에서 수행됩니다. JIT 컴파일은 애플리케이션을 실행하는 동안 발생하므로 컴파일 시간은 런타임의 일부입니다. 따라서 JIT 컴파일러는 결과 코드가 생성할 수 있는 시간 단축과 코드 최적화에 소요된 시간의 균형을 맞춰야 합니다. 그러나 JIT는 실제 하드웨어를 인식하므로 개발자가 다른 구현을 제공할 필요가 없도록 합니다.
.NET의 구현체
.NET의 구현체에는 다음이 포함됩니다.
- 하나 이상의 런타임. 예: CLR, CoreRT.
- .NET Standard 버전을 구현하고 추가 API를 포함할 수 있는 클래스 라이브러리입니다. 예: .NET Framework 및 .NET용 BCL.
- 필요에 따라 하나 이상의 애플리케이션 프레임워크. 예: ASP.NET, Windows Forms 및 WPF는 .NET Framework 및 .NET에 포함됩니다.
- 필요에 따라 개발 도구. 일부 개발 도구는 여러 구현체에서 공통적으로 사용할 수 있음.
.NET 구현의 예:
자세한 내용은 .NET 구현을 참조 하세요.
라이브러리
앱이나 다른 라이브러리에서 호출할 수 있는 API 컬렉션입니다. .NET 라이브러리는 하나 이상의 어셈블리로 구성됩니다.
라이브러리 및 프레임워크라는 단어는 종종 같은 뜻으로 사용됩니다.
Mono
작은 런타임이 필요할 때 사용되는 오픈 소스 플랫폼 간 .NET 구현입니다. Android, Mac, iOS, tvOS 및 watchOS에서 Xamarin 애플리케이션을 구동하고 주로 작은 공간이 필요한 앱에 초점을 맞춘 런타임입니다.
Mono는 현재 게시된 .NET Standard 버전을 모두 지원합니다.
지금까지 Mono는 .NET Framework의 방대한 API를 구현하고 Unix에서 가장 인기 있는 기능의 일부를 따라서 만들었습니다. Unix에서 이러한 기능을 사용하는 .NET 애플리케이션을 실행하는 데 사용되는 경우도 있습니다.
일반적으로 Mono는 Just-In-Time 컴파일러에서 사용되지만 iOS 같은 플랫폼에 사용되는 전체 정적 컴파일러(Ahead-Of-Time 컴파일) 기능도 제공합니다.
자세한 내용은 Mono 설명서를 참조하세요.
네이티브 AOT
앱이 자체 포함되고 게시 시 네이티브 코드로 미리 컴파일되는 배포 모드입니다. 네이티브 AOT 앱은 런타임에 JIT 컴파일러를 사용하지 않습니다. .NET 런타임이 설치되지 않은 컴퓨터에서 실행할 수 있습니다.
자세한 내용은 네이티브 AOT 배포를 참조하세요.
.NET
.NET 에는 두 가지 의미가 있으며 의도된 의미는 컨텍스트에 따라 달라집니다.
- .NET은 .NET Standard 및 모든 .NET 구현 및 워크로드에 대한 우산 용어로 사용할 수 있습니다.
- .NET은 .NET Core라고 불렸던 .NET의 플랫폼 간 고성능 오픈 소스 구현을 더 자주 나타냅니다. .NET 5(및 .NET Core) 이상 버전 또는 .NET 5 이상 버전이라고도 합니다.
예를 들어 첫 번째 의미는 ".NET의 구현"과 같은 구로 의도된 것입니다. 두 번째 의미는 .NET SDK 및 .NET CLI와 같은 이름으로 의도된 것입니다. 첫 번째 의미를 나타내는 컨텍스트가 없는 경우 두 번째 의미가 의도된 것으로 가정합니다.
이전 버전의 .NET은 .NET Core 1~3.1이라고 합니다. 버전 번호는 4를 건너뛰고 3.1을 따르는 버전을 .NET 5라고 하며 이름에서 "Core"를 삭제합니다. 이 .NET 구현이 모든 새 개발에 권장되는 구현임을 강조하기 위해 "Core"를 삭제했습니다. 버전 4를 건너뛰면 .NET의 최신 구현과 .NET Framework라고 하는 이전 구현의 혼동을 방지하기 위해 수행되었습니다. .NET Framework의 현재 버전은 4.8.1입니다.
.NET은 항상 전체를 대문자로 표기하며 절대로 “.Net”을 사용하지 않습니다.
.NET 설명서를 참조하세요.
.NET CLI
.NET용 애플리케이션 및 라이브러리를 개발하기 위한 플랫폼 간 도구 체인입니다. .NET Core CLI라고도 합니다.
.NET CLI를 참조하세요.
.NET Core
.NET을 참조하세요.
.NET Framework
Windows에서만 실행되는 .NET의 구현입니다. CLR(공용 언어 런타임), BCL(기본 클래스 라이브러리) 및 ASP.NET, Windows Forms, WPF 등의 애플리케이션 프레임워크 라이브러리를 포함합니다.
.NET Framework 가이드를 참조하세요.
.NET 네이티브
JIT(Just-In-Time)와 반대로 네이티브 코드 AOT(Ahead-Of-Time)를 생성하는 컴파일러 툴 체인입니다.
컴파일은 C++ 컴파일러 및 링커가 작동하는 방식과 유사하게 개발자의 컴퓨터에서 수행되며, 사용되지 않는 코드를 제거하고 더 많은 시간을 최적화에 사용합니다. 라이브러리에서 코드를 추출하여 실행 파일에 병합합니다. 결과는 전체 앱을 나타내는 단일 모듈입니다.
UWP는 .NET 네이티브에서 지원하는 애플리케이션 프레임워크입니다.
.NET 네이티브 설명서를 참조하세요.
.NET SDK
개발자가 .NET용 애플리케이션 및 라이브러리를 만들 수 있도록 하는 라이브러리 및 도구 집합입니다. .NET Core SDK라고도 합니다.
앱을 빌드하기 위한 .NET CLI, 앱을 빌드하고 실행하기 위한 .NET 라이브러리 및 런타임, CLI 명령을 실행하고 애플리케이션을 실행하는 dotnet 실행 파일(dotnet.exe)을 포함합니다.
.NET SDK 개요를 참조하세요.
.NET Standard
각 .NET 구현에서 사용할 수 있는 .NET API의 공식 사양입니다.
.NET Standard 사양을 라이브러리라고도 합니다. 라이브러리는 API 구현체를 포함하므로 규격(인터페이스)뿐만 아니라 .NET Standard를 “라이브러리”라고 잘못 부르기도 합니다.
.NET Standard를 참조하세요.
NGen
네이티브(이미지) 생성입니다.
해당 기술을 영구 JIT 컴파일러로 생각할 수 있습니다. 일반적으로 코드가 실행되는 컴퓨터에서 코드를 컴파일하지만 컴파일은 대개 설치 시에 수행됩니다.
패키지
NuGet 패키지 또는 패키지 는 작성자 이름과 같은 추가 메타데이터와 함께 이름이 같은 하나 이상의 어셈블리가 있는 .zip 파일입니다.
.zip 파일에는 .nupkg 확장이 있으며 여러 대상 프레임워크 및 버전에서 사용하기 위해 .dll 파일 및 .xml 파일과 같은 자산을 포함할 수 있습니다. 앱 또는 라이브러리에 설치된 경우 앱 또는 라이브러리에서 지정한 대상 프레임워크에 따라 적절한 자산이 선택됩니다. 인터페이스를 정의하는 자산은 ref 폴더에 있으며 구현을 정의하는 자산은 lib 폴더에 있습니다.
플랫폼
Windows와 macOS, Linux, iOS, Android 같은 운영 체제와 해당 운영 체제가 실행되는 하드웨어입니다.
다음은 문장에서의 사용 예입니다.
- “.NET Core는 다양한 플랫폼에서 사용할 수 있는 .NET의 구현체입니다.”
- “PCL 프로필은 Microsoft 플랫폼을 나타내지만 .NET Standard는 플랫폼에 독립적입니다.”
레거시 .NET 설명서에서는 .NET 구현 또는 모든 구현을 포함하는 .NET 스택을 의미하는 용어로 “.NET 플랫폼”을 사용하기도 합니다. 해당 용어는 둘 다 기본적인(OS/하드웨어) 의미와 혼동되므로 여기서는 해당 용어를 사용하지 않습니다.
“플랫폼”은 앱 빌드 및 실행을 위한 도구 및 라이브러리를 제공하는 소프트웨어를 나타내는 “개발자 플랫폼”이라는 관용구에서 다른 의미를 가집니다. .NET은 다양한 유형의 애플리케이션을 빌드하기 위한 플랫폼 간 오픈 소스 개발자 플랫폼입니다.
POCO
POCO 또는 일반 이전 클래스/CLR 개체는 공용 속성 또는 필드만 포함하는 .NET 데이터 구조체입니다. POCO에는 다음과 같은 다른 멤버가 포함되어서는 안 됩니다.
- 메서드
- events
- 대리자
이러한 개체는 주로 DDO(데이터 전송 개체)로 사용됩니다. 순수 POCO 는 다른 개체를 상속하거나 인터페이스를 구현하지 않습니다. POCO는 직렬화와 함께 사용되는 것이 일반적입니다.
runtime
일반적으로 관리형 프로그램의 실행 환경입니다. OS는 런타임 환경의 일부이지만 .NET 런타임의 일부는 아닙니다. 해당 단어의 뜻 그대로 .NET 런타임의 몇 가지 예는 다음과 같습니다.
- CLR(공용 언어 런타임)
- .NET 네이티브(UWP)
- Mono 런타임
“런타임”이라는 단어는 컨텍스트에 따라 여러 가지 의미가 있습니다.
.NET 5 다운로드 페이지의 ‘.NET 런타임’.
‘.NET 런타임’이나 다른 런타임(예: ‘ASP.NET Core 런타임’)을 다운로드할 수 있습니다. 이러한 사용에 대한 ‘런타임’은 머신에서 프레임워크 종속 앱을 실행하기 위해 머신에 설치해야 하는 구성 요소 세트입니다. .NET 런타임에는 BCL을 제공하는 CLR 및 .NET 공유 프레임워크가 포함됩니다.
‘.NET 런타임 라이브러리’
BCL이 참조하는 것과 동일한 라이브러리를 참조합니다. 그러나 ASP.NET Core 런타임과 같은 다른 런타임에는 BCL을 기반으로 하는 추가 라이브러리와 함께 다른 공유 프레임워크가 있습니다.
-
여기에서 ‘런타임’은 .NET 앱이 실행되는 OS 플랫폼 및 CPU 아키텍처를 의미합니다(예:
linux-x64
). 경우에 따라 “런타임”은 다음 예제와 같이 .NET 구현의 의미로 사용됩니다.
- “다양한 .NET 런타임에서 특정 버전의 .NET Standard를 구현합니다. … 각 .NET 런타임 버전은 지원하는 최신 .NET Standard 버전을 보급합니다.”
- "여러 런타임에서 실행되도록 의도된 라이브러리는 이 프레임워크를 대상으로 해야 합니다." (.NET Standard 참조)
공유 프레임워크
의미는 컨텍스트에 따라 달라집니다. ‘.NET 공유 프레임워크’는 .NET 런타임에 포함된 라이브러리를 참조합니다. 이 경우 .NET용 공유 프레임워크는 BCL이 참조하는 것과 동일한 라이브러리를 참조합니다.
다른 공유 프레임워크도 있습니다. ‘ASP.NET Core 공유 프레임워크’는 BCL과 웹앱에서 사용할 추가 API를 포함하는 ASP.NET Core 런타임에 포함된 라이브러리를 참조합니다.
프레임워크 종속 앱의 공유 프레임워크는 앱을 실행하는 머신의 폴더에 설치된 어셈블리에 포함되는 라이브러리로 구성됩니다. 자체 포함 앱의 공유 프레임워크 어셈블리는 앱에 포함됩니다.
자세한 내용은 Deep-dive into .NET Core primitives, part 2: the shared framework(.NET Core 기본 형식 심층 분석, 2부: 공유 프레임워크)를 참조하세요.
stack
애플리케이션을 빌드하고 실행하는 데 함께 사용되는 프로그래밍 기술 집합입니다.
“.NET 스택”은 .NET Standard 및 모든 .NET 구현을 나타냅니다. ".NET 스택"이라는 구는 .NET의 한 구현을 참조할 수 있습니다.
대상 프레임워크(target framework)
.NET 앱이나 라이브러리에서 사용하는 API 컬렉션입니다.
앱이나 라이브러리는 모든 .NET 구현에서 표준화된 API 세트의 사양인 .NET Standard의 버전(예: .NET Standard 2.0)을 대상으로 할 수 있습니다. 또한 앱이나는 라이브러리는 특정 .NET 구현체의 버전을 대상으로 할 수 있으며, 이 경우 구현체 관련 API에 액세스할 수 있습니다. 예를 들어 Xamarin.iOS를 대상으로 하는 앱은 Xamarin 제공 iOS API 래퍼에 액세스할 수 있습니다.
일부 대상 프레임워크(예: .NET Framework)의 경우 사용 가능한 API는 애플리케이션 프레임워크 API(예: ASP.NET, WinForms)를 포함할 수 있는 .NET 구현이 시스템에 설치하는 어셈블리에 의해 정의됩니다. 패키지 기반 대상 프레임워크에서 프레임워크 API는 앱이나 라이브러리에 설치된 패키지에 의해 정의됩니다.
대상 프레임워크를 참조하세요.
TFM
대상 프레임워크 모니커입니다.
.NET 앱이나 라이브러리의 대상 프레임워크를 지정하기 위한 표준화된 토큰 형식입니다. 대상 프레임워크는 일반적으로 net462
같은 짧은 이름으로 참조합니다. 긴 형식 TFM(예: .NETFramework,Version=4.6.2
)이 존재하지만 일반적으로 대상 프레임워크를 지정하는 데 사용되지는 않습니다.
대상 프레임워크를 참조하세요.
UWP
범용 Windows 플랫폼
IoT(사물 인터넷)용 터치 가능 Windows 애플리케이션 및 소프트웨어를 빌드하는 데 사용되는 .NET 구현입니다. PC, 태블릿, 휴대폰 및 Xbox를 포함하여 대상으로 지정할 수 있는 다양한 유형의 장치를 통합하도록 설계되었습니다. UWP는 중앙 집중식 앱 스토어, 실행 환경(AppContainer), Win32를 대체할 Windows API(WinRT) 등 많은 서비스를 제공합니다. 앱은 C++과 C#, Visual Basic, JavaScript로 작성할 수 있습니다. C# 및 Visual Basic을 사용하는 경우 .NET API는 .NET에서 제공됩니다.
작업
다른 사람이 빌드 중인 앱의 유형. 앱 모델보다 일반적입니다. 예를 들어 이 문서를 포함한 모든 .NET 설명서 페이지의 맨 위에는 웹, 모바일, 클라우드, 클라우드 네이티브 및 데스크톱에 대한 설명서로 전환할 수 있는 워크로드에 대한 드롭다운 목록이 있습니다.
일부 컨텍스트에서 워크로드는 특정 유형의 앱을 지원하기 위해 설치할 수 있는 Visual Studio 기능 컬렉션을 참조합니다. 예제는 Visual Studio 워크로드 구성을 참조 하세요.
참고 항목
.NET