많은 .NET implementations과 .NET Standard가 생겨난 이후로, 많은 혼란이 있어왔다.
연대순으로 살펴보자.
.NET이란? 다양한 종류의 앱을 빌드하기 위한 무료 오픈 소스 개발 플랫폼
.NET은 implementations라고 하는 다양한 버전으로 제공된다.
- .NET 5+ : .NET Core포함 최신 implementation, 2014년 출시
- .NET Framework : .NET의 original implementation, 2002년 출시, 현재 버전은 4.8, Windows 전용
- MONO : 작은 런타임에 필요한 cross-platform .NET implementation
- UWP : 최신 Windows 앱 빌드
.NET Framework의 중요성
.NET Framework는 .NET implementation의 원조이며, 2000년대 초반에 윈도우를 위한 웹과 Desktop application을 개발하기 위해 만들어졌다. C#, Visual Basic, F#을 사용할 수 있다.
.NET Framework는 두개의 주요 components로 이루어졌다.
- Common language runtime (CLR) - application의 실행을 다룬다.
- Base Class Library (BCL) - 개발자가 사용할 수 있는 library를 제공한다.
.NET 지원언어로 작성된 코드는 컴파일 시, Intermediate Language(IL)로 변환되여 .dll 또는 .exe 확장자를 갖는 assembly files에 저장된다. application 실행 시, CLR은 assembly를 just-in-time compilation이라는 process를 통해 machine code로 변환시킨다.
.NET Framework는 application 실행을 위한 많은 서비스를 제공한다. 메모리 관리, common type system, 언어 상호운용성 등등등...
.NET Core의 부상
다양한 기기, 클라우드 컴퓨팅의 부상으로 지난 몇년 간, 소프트웨어 개발 트렌드는 빠르게 변하였다.
Windows와 함께, 다른 os 사용도 증가하였다. 많은 수의 소프트웨어와 서비스가 이제 다른 platforms을 위해서 개발되고 있다. 이러한 트렌드로 인해, MS는 현재와 앞으로의 소프트웨어 개발 요구를 충족시킬 수 있는 새로운 framework를 개발하였다.
그리하여 개발된 것이, .NET Core라는 새로운 framework이다. 오픈소스이며 크로스플랫폼인 .NET implementation이다.
.NET Framework와 많은 특성을 공유하지만, 다른부분에 대해 알아보자.
.NET Core는 class libraries, runtime, compilers, languages를 포함해 모든 부분이 open-source이다. .NET Core 또한 C#, Visual Basic, F#을 지원한다. x64, x86, ARM을 포함하여 다중 구조에서 동일하게 동작한다. Docker에서 사용될 수 있다. comman-line tools을 포함한다. 현재 대부분의 혁신과 개선은 .NET Core에서 이루어지고 있다.
.NET Standard란?
.NET Standard는 .NET의 implementation이 아니라 .NET의 여러 implementations에서 사용할 수 있는 API 사양이다.
cross platfom 개발환경을 위한 코드 이슈들을 다룬다.
.NET Standard의 혼선
.NET Standard는 초보자에게 이해하기 쉽지 않다. 그 이유가 여기있다.
Visual Studio 2019를 열어서, 프로젝트 새로만들기를 하면, 3가지 type의 class library projects를 볼 수 있따.
- Class Library (.NET Standard)
- Class Library (.NET Framework)
- Class Library (.NET Core)
Class Library(.NET Standard)와 Class Library(.NET Core)의 설명글을 보면 각각 .NET Standard와 .NET Core를 대상 platform으로 한다고 되어 있다. 이 떄문에, .NET Standard도 또 다른 framework나 .NET implementaion과 같은 느낌을 준다.
.NET Framework vs .NET Core
이제 둘을 비교해보자.
.NET Framework
- .NET의 첫 implementation이며, 윈도우에서만 작동한다.
- source code는 public이지만, third party 기여자는 받지 않는다.
- 풍부한 desktop 개발 framework이다.
- 거대한 third-party packages library를 갖고 있다.
- in-app 개발 모델은 지원하지 않는다.
- docker container에 사용될 수 있지만, image size가 크고, Windows containers에만 deploy될 수 있다.
.NET Core
- 윈도우, 리눅스, 맥OS에서 작동하는 최신 .NET implementaion이다.
- 오픈소스이며 third party 기여자를 받는다.
- version 3.0부터 Windows Forms, WPF와 같은 desktop framework를 지원한다.
- 많은 수의 third party packages를 갖고 있지만, .NET Framework와 호환되지 않는다.
- in-app 개발 모델을 지원한다.
.NET은 다음 언어를 지원한다.
- C#
- F#
- Visual Basic
.NET IDE
- Visual Studio
- Visual Studio Code
- Visual Studio for Mac
- GitHub Codespaces : 온라인 Visual Studio Code 환경이며 현재 베타이다.
.NET 다운로드 시, 런타임(실행환경)이나 SDK를 선택할 수 있다.
- 런타임이란 ?
- 관리형 프로그램의 실행 환경
- 프레임워크 종속 CLR(Common Language Runtime) 및 런타임 라이브러리
- .NET SDK란 ?
- .NET 5+ (and .NET Core) 버전앱을 개발하고 실행하기 위해 설치하는 도구 및 라이브러리 컬렉션이다. .NET CLI, .NET 런타임, 기타 구성 요소를 포함한다.
.NET CLI란?
- .NET 5+ (and .NET Core) 버전앱 및 라이브러리를 개발하기 위한 cross-platform toolchain이다.
- .NET SDK에 포함되어 있다.
'ASP.NET Core' 카테고리의 다른 글
.NET CLI] 사용법 - 솔루션 생성, 프로젝트 생성, 참조 추가 (2) (0) | 2022.06.23 |
---|---|
.NET CLI] 사용법 - 설명, SDK 설치확인, SDK 다운로드 (1) (0) | 2022.06.23 |
.NET 6] user-secrets(secrets.json) 사용하여 ConnectionStrings 계정 관리하기 (0) | 2022.06.16 |
.NET 6] Minimal APIs VS MVC APIs 차이점 (0) | 2022.06.15 |
.NET 6] SignalR Server, SignalR Client App (0) | 2022.06.09 |
댓글