본문으로 바로가기

[C#] .NET 용어 요약

category Program/C# 2019. 1. 28. 10:49

.NET 용어


* AOT(Ahead-Of-Time 컴파일러)

JIT(Just-In-Time)와 비슷한 AOT 컴파일러도 IL(중간언어:Intermediate Language)을 기계어 코드로 변환힙니다. JIT 컴파일과 달리 AOT 컴파일은 응용 프로그램이 실행되기 전에 수행되며 일반적으로 다른 컴퓨터에서 수행됩니다. AOT 도구 체인은 런타임에 컴파일되지 않으므로 컴파일 시간을 최소화할 필요가 없습니다. 즉, 더 많은 시간을 최적화하는 데 사용할 수 있습니다. AOT의 컨텍스트는 전체 응용 프로그램이므로 AOT 컴파일러는 모듈 간 연결 및 전체 프로그램 분석도 수행합니다. 


*어셈블리

응용 프로그램이나 다른 어셈블리에서 호출할 수 있는 API 컬렉션을 포함할 수 있는 .dll/.exe 파일입니다.

어셈블리에는 인터페이스, 클래스, 구조체, 열거형 및 대리자와 같은 형식이 포함될 수 있습니다. 프로젝트의 bin 폴더에 있는 어셈블리를 바이너리라고도 합니다. 


*CLR(Common Language Runtime)

공용 언어 런타임입니다.

정확한 의미는 컨텍스트에 따라 달라지지만 일반적으로 .NET Framework의 런타임을 나타냅니다. CLR은 메모리 할당 및 관리를 처리합니다. 또한 CLR은 앱을 실행할 뿐만 아니라 JIT 컴파일러를 사용하여 즉시 코드를 생성하고 컴파일하는 가상 머신입니다. 현재 Microsoft CLR 구현은 Windows 전용입니다.

  1. 성능 향상
  2. 다른 언어로 개발된 구성 요소를 쉽게 사용할 수 있는 기능
  3. 클래스 라이브러리에서 제공하는 확장 가능한 형식
  4. 상속, 인터페이스, 개체 지향적인 프로그래밍을 위한 오버로딩 등과 같은 언어 기능
  5. 확장 가능한 다중 스레드 응용 프로그램을 만들 수 있도록 해주는 명시적 자유 스레딩에 대한 지원
  6. 구조적 예외 처리에 대한 지원
  7. 사용자 지정 특성에 대한 지원
  8. 가비지 수집
  9. 향상된 형식 

*플랫폼 간

각 운영 체제에 맞게 다시 작성할 필요 없이 Linux, Windows 및 iOS와 같은 다양한 운영 체제에서 사용할 수 있는 응용 프로그램을 개발하고 실행하는 기능입니다. 이를 통해 다양한 플랫폼에서 응용 프로그램 간에 코드를 다시 사용하고 일관성을 유지할 수 있습니다.


*에코시스템

특정 기술에 대한 응용 프로그램을 빌드하고 실행하는 데 사용되는 모든 런타임 소프트웨어, 개발 도구 및 커뮤니티 리소스입니다.

“.NET 에코시스템”이라는 용어는 타사 앱 및 라이브러리를 포함한다는 점에서 “.NET 스택”과 같은 유사한 용어와 다릅니다. 다음은 문장에서의 예제입니다.

“.NET Standard는 .NET 에코시스템의 균일성을 높이기 위한 것입니다.”


*프레임워크

일반적으로 특정 기술을 기반으로 하는 응용 프로그램의 개발 및 배포를 용이하게 하는 포괄적인 API 컬렉션입니다. 이 일반적인 의미에서 ASP.NET Core 및 Windows Forms는 응용 프로그램 프레임워크의 예입니다. 


*GC(Garbage Collector)

.NET의 가비지 수집기는 응용 프로그램의 메모리 할당 및 해제를 관리합니다. 새 개체를 만들 때마다 공용 언어 런타임이 관리되는 힙에서 개체에 대해 메모리를 할당합니다. 관리되는 힙에서 주소 공간을 사용할 수 있다면 런타임은 계속해서 새 개체에 공간을 할당합니다. 그러나 메모리는 무한하지 않습니다. 결국 가비지 수집기는 메모리를 확보하기 위해 수집을 수행해야 합니다. 가비지 수집기의 최적화 엔진은 수행 중인 할당에 따라 수집을 수행하기에 가장 적합한 시간을 결정합니다. 가비지 수집기는 수집을 수행할 때 응용 프로그램에서 더 이상 사용하고 있지 않은 관리되는 힙에 있는 개체를 확인하고 해당 메모리를 회수하는 데 필요한 작업을 수행합니다.


*IL(Intermediate Language)

중간 언어입니다.

C#과 같은 상위 수준 .NET 언어가 IL(중간 언어)이라는 하드웨어 독립 명령 집합으로 컴파일됩니다. IL은 MSIL(Microsoft IL) 또는 CIL(공통 IL)이라고도 합니다.


*JIT(Just-In-Time)

AOT와 유사한 이 컴파일러는 IL을 프로세서에서 이해하는 기계어 코드로 변환합니다. AOT와 달리 JIT 컴파일은 요청 시 수행되며 코드가 실행되어야 하는 것과 동일한 컴퓨터에서 수행됩니다. JIT 컴파일은 응용 프로그램이 실행되는 동안 수행되므로 컴파일 시간이 실행 시간의 일부입니다. 따라서 JIT 컴파일러는 결과 코드가 생성할 수 있는 시간 단축과 코드 최적화에 소요된 시간의 균형을 맞춰야 합니다. 그러나 JIT는 실제 하드웨어를 인식하므로 개발자가 다른 구현을 제공할 필요가 없도록 합니다.


*라이브러리

앱이나 다른 라이브러리에서 호출할 수 있는 API 컬렉션입니다. .NET 라이브러리는 하나 이상의 어셈블리로 구성됩니다.

라이브러리 및 프레임워크라는 단어는 종종 같은 뜻으로 사용됩니다.


*Mono

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 컴파일) 기능도 제공합니다.


*.NET

.NET Standard 및 모든 .NET 구현과 워크로드에 대한 포괄적인 용어입니다. 항상 대문자로 표기되며, “.Net”이 아닙니다.


*.NET Core

.NET의 플랫폼 간 고성능 오픈 소스 구현입니다. CoreCLR(Core 공용 언어 런타임), Core AOT 런타임(CoreRT, 개발 중), Core 기본 클래스 라이브러리 및 Core SDK를 포함합니다.


*.NET Framework

Windows에서만 실행되는 .NET의 구현입니다. CLR(공용 언어 런타임), 기본 클래스 라이브러리 및 ASP.NET, Windows Forms, WPF 등의 응용 프로그램 프레임워크 라이브러리를 포함합니다.


*.NET 네이티브

JIT(Just-In-Time)와 반대로 네이티브 코드 AOT(Ahead-Of-Time)를 생성하는 컴파일러 도구 체인입니다.

컴파일은 C++ 컴파일러 및 링커가 작동하는 방식과 유사하게 개발자의 컴퓨터에서 수행되며, 사용되지 않는 코드를 제거하고 더 많은 시간을 최적화에 사용합니다. 라이브러리에서 코드를 추출하여 실행 파일에 병합합니다. 결과는 전체 앱을 나타내는 단일 모듈입니다.

UWP는 .NET 네이티브에서 지원하는 첫 번째 응용 프로그램 프레임워크였습니다. 이제 Windows, macOS 및 Linux용 네이티브 콘솔 앱 작성을 지원합니다.


*.NET Standard

각 .NET 구현에서 사용할 수 있는 .NET API의 공식 사양입니다.

.NET Standard 사양은 설명서에서 라이브러리라고도 합니다. 라이브러리는 API 구현을 포함하므로 사양(인터페이스)뿐만 아니라 .NET Standard를 “라이브러리”라고 잘못 부르기도 합니다. .NET Standard 메타패키지(NETStandard.Library)의 이름을 참조할 때를 제외하고 설명서에서 이러한 사용을 제거할 계획입니다.


*NGEN

네이티브(이미지) 생성입니다.

이 기술을 영구 JIT 컴파일러로 생각할 수 있습니다. 일반적으로 코드가 실행되는 컴퓨터에서 코드를 컴파일하지만 컴파일은 대개 설치 시에 수행됩니다.


*패키지

NuGet 패키지(또는 줄여서 패키지)는 작성자 이름과 같은 추가 메타데이터와 함께 동일한 이름의 어셈블리가 하나 이상 있는 .zip 파일입니다. .zip 파일은 .nupkg 확장명을 사용하며 .dll 파일 및 .xml 파일과 같이 여러 대상 프레임워크 및 버전에서 사용할 자산을 포함합니다. 앱 또는 라이브러리에 설치된 경우 앱 또는 라이브러리에서 지정한 대상 프레임워크에 따라 적절한 자산이 선택됩니다. 인터페이스를 정의하는 자산은 ref 폴더에 있으며 구현을 정의하는 자산은 lib 폴더에 있습니다.


*런타임(runtime)

관리되는 프로그램에 대한 실행 환경입니다.


*대상 프레임워크(target framework)

.NET 앱 또는 라이브러리에서 사용하는 API 컬렉션입니다.

앱 또는 라이브러리는 모든.NET 구현에서 표준화된 API 집합에 대한 사양인 .NET Standard의 버전(예: .NET Standard 2.0)을 대상으로 할 수 있습니다. 또한 앱 또는 라이브러리는 특정 .NET 구현의 버전을 대상으로 할 수 있으며, 이 경우 구현 관련 API에 액세스할 수 있습니다. 예를 들어 Xamarin.iOS를 대상으로 하는 앱은 Xamarin 제공 iOS API 래퍼에 액세스할 수 있습니다.

일부 대상 프레임워크(예: .NET Framework)에서 사용 가능한 API는 .NET 구현에서 시스템에 설치하는 어셈블리에 의해 정의되고 응용 프로그램 프레임워크 API(예: ASP.NET, WinForms)를 포함할 수 있습니다. 패키지 기반 대상 프레임워크(예: .NET Standard 및 .NET Core)에서 프레임워크 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#, VB.NET 및 JavaScript로 작성할 수 있습니다. C# 및 VB.NET을 사용할 경우 .NET API는 .NET Core에서 제공됩니다.



reference :  https://docs.microsoft.com/ko-kr/dotnet/standard/glossary

'Program > C#' 카테고리의 다른 글

[C#] 정적 메서드~as, is 연산자  (0) 2019.01.30
[C#] .NET 용어 요약 #2  (0) 2019.01.29
[C#] 람다식(Lamdba Expressions)  (0) 2019.01.25
[C#] 델리게이트(Delegate)  (1) 2019.01.25
[C#] 프로퍼티 ( Property )  (0) 2019.01.25