Unity & C#

[C#] C# 과 .NET Framework

왼손잡이개발자 2023. 3. 25. 18:06

 

 

흔히들 C#과 .NET, 이 두 용어를 혼돈하여 많이들 사용한다. 나도 그저 .NET은 프레임워크이고 C#은 프로그래밍 언어이라는 차이점만 있다고 생각하고 있었는데, .NET Framework, .NET Core 등등 뒤에 점점 더 많은 .NET이 붙은 단어들이 나오면서 정확히 차이점이 무엇인지 모른 상태였다. 그러다가 TimCorey님의 유튜브를 보고 (링크), 아주 조금이나마 그 차이를 이해할 수 있게 되었다. 영상을 보면 팀 코리님께서 .NET Framework를 시작으로 시간 순으로 .NET의 역사를 알려주고 그로부터 파생된 프레임워크들을 알려주신다.

 

C#

C#은 그냥 잘 알고 있듯이, 프로그래밍 언어이다. 우리가 많이 듣는 Python, Javascript, Java 등등 그냥 컴퓨터에게 데이터와 명령어 전달하는 언어이다.

 

 

.NET Framework

이 .NET의 혼돈(?)의 시발점(나 혼자만 혼돈이라고 생각했을 수도 있다;;), .NET 친구들 중 최초 소프트웨어 프레임워크다. .NET Framework는 개발자들이 유용하게 사용할 수 있는 메소드 라이브러리와 CLR로 구성된 플렛폼이다. (또는 '소프트웨어 프레임워크' 라고도 할 수 있다). .NET Framework 가 C#이라는 프로그래밍 언어를 CIL (common intermediate langauge)로 변환을 하고, 이을 실행할 수 있는 환경인 CLR를 제공한다.

.NET Framework는 마이크로소프트사가 2000년에 개발을 했다. 소프트웨어적으로 봤을 때 아주 오래되었다고 볼 수 있다. 오래됨에 따라서 .NET Framework도 점점 살이 많이 붙으면서 볼륨이 커지고 무거워지기 시작했다. .NET Framework를 최신화하고 경량화하기 위해 등장한 것이 바로 .NET Core이다

 

 

.NET Core

.NET Framework를 대체하기 위해 등장한 녀석이다. .NET Framework 보다 훨씬 빨라진 Cross-platform 프레임워크이다. .NET Core도 등장 이후 점점 업데이트를 하며 .NET Core 이름 뒤에 .NET Core 3, .NET Core 4, .NET Core 5 이런 식으로 숫자가 붙여져서 불려졌다. 그런데 .NET Core 5부터는 '왜 굳이 Core 이라는 단어를 붙어야할까? 이미 .NET Framework를 대체했기 때문에 구분을 위해 Core라는 단어를 붙일 필요가 없다!'라는 결론이 나와 .NET Core 5 부터는 그냥 .NET으로 불리기 시작했다. 

 

 

.NET Standard

그러면 .NET Standard는 무엇이냐? .NET Framework 가 개발된 이래로 다양한 버전들이 나오고, 그 와중에 .NET Core도 나오면서 다양한 .NET API들이 나왔을텐데, 특정 .NET API가 어떤 프레임워크의 어떤 버전을 지원하는지 구분하기가 어려워서 .NET Standard가 이를 해결하기 위해 등장했다. .NET Standard의 버전에 따라서 특정 .NET API가 어떤 버전의 프레임워크를 지원하는지 구분 할 수 있게 되었다. .NET Standard가 인터페이스의 역할을 한다고도 할 수 있겠다. 

 

 

.NET

위에서 얘기했듯이 .NET Core 5 부터는 'Core'를 빼고 그냥 .NET 으로 부르기로 했다.