.NET Standard vs .NET Framework
Unity 를 사용하면서 별 생각없이 설졍하던 .NET 에 대해 궁금증이 생겨서 찾아보게 되었습니다.
.NET 과 .NET Framework, 추가로 .NET Standard 를 찾아 보았습니다.
참고 이미지
Unity/Project Settings/Player/API Compatibility Level
- Api Compatibility Level
- .NET Standard 와 .NET Framework
- .NET Standard
- .NET Framework
- Unity 에서 .NET Standard 와 .NET Framework
- .NET
- .NET 5.x
Api Compatibility Level
API 호환성 수준을 설정하는 부분으로 각각의 옵션(.NET Standard, .NET Framework)에 따라 지원하는 API 범위가 다르기 때문에 현재 프로젝트에서 사용하는 API 범위에 맞게 설정해주어야 합니다.
.NET Standard 와 .NET Framework
.NET Standard - 다양한 .NET implementations(.NET Framework, .NET Core, Xamarin)에서 사용할 수 있는 공통 라이브러리입니다.
.NET Framework - Windows 에서 앱을 빌드하고 실행하기 위한 소프트웨어 개발 프레임워크입니다.
즉 .NET Standard는 라이브러리이고, .NET Framework는 프레임워크입니다.
.NET Standard
다양한 .NET implementations에 적용될 수 있는 공통 라이브러리입니다.
각각의 implementation 마다 별도의 library를 지원하는 대신 하나의 라이브러리로 모든 implementation을 통합적으로 지원하도록 만들어진 것이 .NET Standard 입니다.
.NET Standard 에서 작성된 코드는 .NET Core와 .NET Framework에서 정상 동작하지만
.NET Core나 .NET Framework에서 동작하는 코드가 .NET Standard에서는 정상 동작하지 않을 수 있습니다.
.NET Framework
Windows에서 애플리케이션을 빌드하고 실행하기 위한 소프트웨어 개발 프레임워크입니다.
.NET의 일부를 제공하고, 다양한 플랫폼에서 앱일 빌드하기 위한 기술 모음입니다.
.NET Framework 특징
두가지 주요 구성 요소가 있습니다.
- CLR(Common Language Runtime, 공용 언어 런타임)
- 실행 중인 앱을 처리하는 실행 엔진(가상 머신)으로 스레드 관리, 메모리 관리, 가비지 수집, 형식 안정성, 예외 처리 등이 서비스를 제공합니다.
- FCL(Framework Class Library, 프레임워크 클래스 라이브러리)
- 공통 기능에 대한 타입(strings, datas, numbers 등)과 API(파일 읽고 쓰기, 데이터베이스 연결, 그리기 등)를 제공합니다.
.NET Framework 아키텍처
- .NET Framework를 사용하는 언어들(C#, F#, Visual Basic)로 작성된 소스 코드는 각 언어에 맞는 컴파일러를 거쳐 .NET CLR용 중간 코드인 CIL(Common Intermediate Language)로 컴파일된 후 .dll, .exe 파일로 래핑(Wrapping)되어 저장됩니다.
- 앱이 실행될 때 .NET CLR이 JIT(Just-In-Time) 컴파일 방식으로 읽어들여 래핑된 CIL을 앱이 실행 중인 컴퓨터의 특정 아키텍쳐에서 실행할 수 있는 기계어로 변환합니다.
Architecture of .NET Framework
Unity 에서 .NET Standard 와 .NET Framework
.NET Standard 2.1은 Unity에서 권장하는 방식으로 .NET 4.x보다 용량이 적고 Unity에서 지원하는 모든 플랫폼에서 사용가능합니다.
.NET Framework는 .NET Standard 2.1뿐만 아니라 최신 .NET 4 API 및 .NET Framework 클래스 라이브러리를 포함합니다. 하지만 API 일부는 Unity 일부 플랫폼에서는 지원하지 않을 수 있습니다.
따라서 일반적으로는 .NET Standard를 사용하고,
.NET Framework의 API를 사용한다면 .NET Framework를 사용하면 될 것 같습니다.
참고자료1
참고자료2
.NET
.NET은 다양한 유형의 애플리케이션을 구축하기 위해 Microsoft에서 만든 오픈 소스 개발자 플랫폼입니다.
즉, Microsoft에서 개발한 Windows 프로그램 개발 및 실행 환경(프레임워크)입니다.
.NET 특징
- C#, F# 또는 Visual Basic으로 .NET 앱을 작성할 수 있습니다.
- Cross-platform을 지원한다.
- 공통적인 기본 .NET 클래스 라이브러리1 및 API를 제공합니다.
- .NET 패키지 에코시스템인 NuGet2을 유지 관리합니다.
.NET과 .NET Framework 의 차이
.NET vs .NET Framework - .NET 은 오픈 소스이면서 Cross-platform을 지원하는 반면,
.NET Framework는 Windows 에서 지원하며 .NET 의 일부 기능을 제공합니다.**
.NET | .NET Framework | |
---|---|---|
Cross platform | O | X |
Contributions from community | O | X |
Innovation | O | X |
Update | Independent | by Windows update |
.NET 5.x
2002년 Microsoft에서 다양한 언어를 통한 윈도우용 어플리케이션 개발을 위해 .NET Framework을 출시하였습니다.
2016년 cross-platform을 지원하기 위해 오픈소스 프레임워크인 .NET Core를 출시하였습니다.
2020년 분산되어있던 여러 프레임워크를 통합하여 하나의 프레임워크로 지원하기 위해 .NET 5를 출시하였습니다.