[C#]닷넷(.Net)에 관하여

2022. 8. 7. 15:13Programming language/C#

    목차

서론

 C# 은 .Net 기반으로 돌아가는 언어입니다. 이 말인즉슨, C#을 쓴다 = .Net을 쓴다 와 거의 같은 말일 수 있습니다. 윈도우 플랫폼을 여러 언어로 개발 가능하게 해주던 .Net의 과거. 지금은 크로스 플랫폼을 개발할 수 있게 해주는 마이크로소프트(MS)에서 제공하는 개발/실행 환경인 .Net의 현재와 미래에 대해서 간략하게 알아보겠습니다.

 


.Net 관련 여러 명칭

 개발자가 아니더라도, 윈도우 환경을 경험하신 분들이라면. Net Framework(닷넷 프레임워크)나 .Net Core(닷넷 코어)같은 것들을 종종 봤을 수 있습니다. 이런 것들을 설치해야 특정 프로그램이 실행되거나, 없어서 오류가 나는 경험들 말입니다. .Net Framewrok혹은 .Net Core 같은 것들을 검색하면 비슷한 설명으로 나오기도 합니다. .Net에 관해 검색하면 .Net을 .Net Framework로도 .Net Core로도 명칭 하는 서적이나 글들을 심심치 않게 보기도 합니다. 결론을 말하자면 .Net Framework + .Net Core + @ =. Net이라고 할 수 있고, 이를 .Net 제품군이라고 합니다.

 

.Net Framework

.Net 제품군의 시작이라 할 수 있는 .Net Framework는 윈도우 응용프로그램의 개발/실행 환경입니다. 그래픽 렌더링, DB Controll, 파일 일기/쓰기등 개발에 필요한 기능을 제공하는 라이브러리도 제공합니다. 이를 베이스 클래스 라이브러리(BCL)이라고 부르기도 합니다.

또 한, 가장 큰 특징은 C#, F#, VB등 다양한 언어로 윈도우 응용프로그램 개발을 가능하게 해 주는(각 언어로 개발된 소프트웨어가 윈도우 환경에서 실행될 수 있게 해 주는) 특징을 가지고 있습니다. 이는 CLI와 CLR과 연관이 깊은데, 이와 관련된 내용은 별도의 글로 다루기로 하겠습니다.

 

 윈도우 개발에 관해서는 굉장한 .Net Framework이지만 명백한 한계가 존재했습니다. 웹과 모바일 생태계로 이전되면서, 크로스 플랫폼 시대가 열리자 윈도우 외에는 제공하지 않는다 것이 한계점으로 부각되었습니다. 또한 라이선스 비용이 높아 비용 감소를 원하는 기업이나 사용자들이 오픈소스인 리눅스 쪽으로 눈을 돌리며 조금씩 외면받기 시작하였습니다.

 

.Net Core

.Net Framewrok가 윈도우라는 제약사항을 가지고 있자 등장하게 된 제품군입니다. MS에서도 .Net Framework의 한계점을 인식하고 크로스 플랫폼으로 방향성을 잡은 .Net Core를 발표했습니다. 간단히 이야기하면 .Net Framework의 크로스 플랫폼&오픈소스(.Net Foundation 설립) 버전이라고 할 수 있겠습니다. 

 

.Net Standard

.Net Core를 출시하면서, .Net Framework환경과 Xamarin(Mobile)환경에서 개발된 제품들과 호환성을 제공해야 했습니다. 이를 위하여 공통 API 스펙인 .Net Standard도 함께 출시하였습니다. 과거에 규격이 없던 시절에는 파편화가 되어있었지만 지금은 호환성을 위하여 지키는 걸 권장하고 있습니다.

[그림1] .Net Standard

 


마치며

.Net

 이렇게 여라가지 .Net관련 제품군이 지금은 하나라 통합되었습니다. 그 이름이 바로 .Net(닷넷)입니다. .Net Framewrok는 2020년 4.8버전을 마지막으로 더 이상 릴리즈 되지 않는다고 합니다. MS주체로 .Net통합작업이 진행되는 지금, .Net을 사용 중인 플랫폼에서도 함께 따라가고 있다고 하니, 참고하면 좋을 것 같습니다.

[그림2]닷넷 통합


리소스 출처

[그림1] : MS .Net Standard Docs

[그림2] : .Net6 발표 블로그(공식, https://devblogs.microsoft.com/dotnet/announcing-net-6/)

 

반응형
LIST

'Programming language > C#' 카테고리의 다른 글

[C#]닷넷(.Net)의 구성 요소  (0) 2022.08.09
[C#]컬렉션(Collection)  (0) 2022.04.19
[C#]제네릭(Generic)  (0) 2022.04.14
[C#]가비지 컬렉터(Garbage collector)  (0) 2022.04.12
[C#]Boxing/Unboxing (박싱/언박싱)  (0) 2022.04.12