.NET Core-코드 실행
이 장에서는 .NET Core의 실행 프로세스를 이해하고 .NET Framework와 비교합니다. 관리되는 실행 프로세스에는 다음 단계가 포함됩니다.
- 컴파일러 선택
- MSIL로 코드 컴파일
- MSIL을 네이티브 코드로 컴파일
- 코드 실행
컴파일러 선택
다국어 실행 환경이며 런타임은 다양한 데이터 유형 및 언어 기능을 지원합니다.
공용 언어 런타임에서 제공하는 이점을 얻으려면 런타임을 대상으로하는 하나 이상의 언어 컴파일러를 사용해야합니다.
MSIL로 코드 컴파일
컴파일은 소스 코드를 MSIL (Microsoft Intermediate Language)로 변환하고 필요한 메타 데이터를 생성합니다.
메타 데이터는 각 유형의 정의, 각 유형 멤버의 서명, 코드가 참조하는 멤버 및 런타임에서 실행시 사용하는 기타 데이터를 포함하여 코드의 유형을 설명합니다.
런타임은 실행 중에 필요에 따라 파일 및 FCL (프레임 워크 클래스 라이브러리)에서 메타 데이터를 찾아 추출합니다.
MSIL을 네이티브 코드로 컴파일
실행 시간에 JIT (Just-In-Time) 컴파일러는 MSIL을 네이티브 코드로 변환합니다.
이 컴파일 중에 코드는 MSIL 및 메타 데이터를 검사하는 확인 프로세스를 통과하여 코드가 형식에 안전한지 여부를 확인해야합니다.
코드 실행
공용 언어 런타임은 실행을 수행 할 수있는 인프라와 실행 중에 사용할 수있는 서비스를 제공합니다.
실행 중에 관리 코드는 가비지 수집, 보안, 비 관리 코드와의 상호 운용성, 언어 간 디버깅 지원, 향상된 배포 및 버전 관리 지원과 같은 서비스를받습니다.
.NET Core 코드 실행 프로세스
이제 .NET Framework와 비교하여 .NET Core에서 코드가 실행되는 방식을 살펴 보겠습니다. .NET Core에는 .NET Framework의 일부인 이러한 구성 요소가 많이 대체됩니다.
이제 .NET Core에는 C # 및 VB 용 Roslyn과 같은 새로운 일련의 컴파일러가 있습니다.
.NET Core에서 F #을 사용하려는 경우 새로운 F # 4.1 컴파일러를 사용할 수도 있습니다.
실제로 이러한 도구는 다르며 C # 컴파일러는 최대 C # 5까지만 지원할 수 있으므로 C # 6 이상을 사용하는 경우 .NET Framework에서도 Roslyn을 사용할 수 있습니다.
.NET Core에는 FCL (프레임 워크 클래스 라이브러리)이 없으므로 다른 라이브러리 집합이 사용되며 이제 CoreFx가 있습니다.
CoreFx는 .NET Core 용 클래스 라이브러리를 다시 구현 한 것입니다.
또한 CoreCLR로 알려진 .NET Core의 새로운 런타임이 있으며 JIT 컴파일러를 활용합니다.
이제 질문은 우리가 이미 .NET 프레임 워크에있는 이러한 모든 구성 요소를 다시 구현하는 이유입니다.
따라서 대답은 Microsoft가 .NET Core를 구현 한 이유와 동일합니다.