본문 바로가기

C# 프로그래밍/.Net 가이드

[C#] .NET Framework와 .NET Core 그리고 .NET

반응형

지금의 .NET은 어떤 변화를 거쳐 왔는가? 그리고 왜 사용되는가. 이에 대한 해답을 정리하였다.

결론부터 말하자면 .NET은 .NET Framework에서 .NET Core를 거쳐 현재의 .NET이 되었다.

따라서 첫 시작점인 .NET Framework로 포스팅을 시작한다.


MFC에서 .NET Framework로

MFC와 닷넷 프레임워크

.NET Framework가 무엇인지에 대해 이해하기 이전에 MFC(1992년 배포)에 대해 먼저 알아야 한다.

MFC는 Microsoft Foundation Class Library의 약자로 Window OS에서 동작할 수 있는 응용프로그램을 제작할 수 있는 C++기반 라이브러리이다.

하지만 시간이 지나며 MFC는 구식 라이브러리가 되었고 C++에서 오는 불편함이 많았다. 따라서 MS는 좀 더 트렌디한 새로운 환경이 필요했는데, 이때 출현한 것이 C#닷넷 프레임워크다.

 

즉, C++이 아닌 C#이라는 새로운 언어로 윈도우 환경의 프로그램을 개발할 수 있도록 한 것이다.

 

MFC 프레임워크

 

그렇다면 닷넷프레임워크는 MFC와 비교하여 어떤 것이 다른 것일까.

 

닷넷 프레임워크의 FCL과 CLR

닷넷 프레임워크는 FCL(Framework Class Library)라는 개발을 위한 라이브러리CLR(Common Language Runtime)이라는 가상머신이 합쳐져서 탄생했다.

 

닷넷 프레임워크 아키텍처

 

이 중 FCL은 C#, F#, VB 등의 언어로 동작할 수 있는 클래스와 메서드를 제공한다.

그리고 CLR은 메모리 관리, 예외 처리 등을 할 뿐만 아니라 JIT(Just In Time) 컴파일러를 사용하여 CIL(혹은 IL - Intermediate Language)이라는 중간 언어로 변환된 코드를 실행할 수 있는 가상 머신을 제공한다.

 

개발자는 Window환경의 프로그램을 제작하기 위해 CLR에 의존된다.

MFC 라이브러리와 비교하여 닷넷프레임워크는 CLR이라는 실행환경으로 동작하게 되었다.

 

CLR과 IL, 그리고 이점

JIT 컴파일러를 통해 생성된 IL 코드는 CLR이 설치된 곳에서 만 동작하지만, 반대로 CLR이 설치된 곳이라면 모두 동작한다.

다시 말해서 IL 코드로 변환하기만 한다면 CLR 환경에서 모두 실행할 수 있는 것이다.

 

이는 JAVA의 바이트코드(Byte Code)가 JVM을 통해 실행되는 것과 비슷하다.

그러나 바이트코드와는 다르게 메모리 관리, 확장성, 최적화 등의 문제점을 해결하였다.

특히 IL은 C#, F#, VB 등의 언어를 지원한다는 것에서 강점이 있다. 예를 들어서 C#과 F#으로 제작된 어셈블리를 통합하여 사용할 수 있게 되었다.


.NET Framework에서 .NET Core로

닷넷 프레임워크의 한계

2000년대 초반까지 잘 나가던 MS의 시장 점유율은 모바일 기기의 등장으로 조금씩 변화하기 시작했다.

PC 중심의 구조에서 모바일과 IOT 등 다양한 플랫폼이 등장하기 시작했기 때문이다.

 

하지만 닷넷 프레임워크는 이러한 크로스 플랫폼 지원에 있어 문제점이 많았다.

그래서 윈도우 외에도 닷넷으로 제작할 수 있도록 하는 새로운 솔루션을 제공했는데, 이것이 바로 .NET Core다.

 

.NET Core

 

닷넷 코어의 특징

닷넷 프레임워크와는 다르게 닷넷 코어는 큰 두 가지 특징을 가진다.

 

첫 번째는 위에서 언급한 크로스 플랫폼을 지원한다는 것이고, 두 번째는 오픈소스라는 것이다.

(원래 MS는 폐쇄적인 사유 정책을 펼쳤지만 오픈소스의 장점 때문에 무료화하였다고 한다.)

 

크로스 플랫폼의 지원으로 C#과 F# 등의 언어로 다양한 플랫폼의 제작이 가능해졌다.

Unity가 Windows, Android 뿐만 아니라 여타 다양한 플랫폼에서 동작이 가능한 이유 역시 Mono라는 .NET Framework를 계승한 오픈소스 프레임워크를 사용하기 때문이다. (.NET Core처럼 멀티플랫폼을 제공한다)


.NET Core에서 현재의 .NET

닷넷 코어는 Xamarin(안드로이드, IOS 등 모바일 개발 플랫폼)과 합쳐져서 .NET 5.0이 되었다.

이때부터는 .NET + 버전으로 네이밍이 통일된다.

 

닷넷 5.0은 닷넷 코어 3.0 이후에 발표되었다. 따라서 닷넷 코어의 기능을 확장할 뿐만 아니라 자마린, 닷넷 프레임워크, 모노를 활용할 수 있게 하였다.

 

.NET 생태계

 


참고자료

https://dotnet.microsoft.com/ko-kr/learn/dotnet/what-is-dotnet

https://devblogs.microsoft.com/dotnet/introducing-net-5/

반응형