프로그래밍/C# 공부

C# 과 .NET

codehunter 2024. 7. 7. 15:16

이 내용은 C#를 공부하면서 개인적으로 정리하기 위한 글이다.

주요 참고는 : 크로스 플랫폼 개발을 위한 C# 10과 .NET 6 6/e (에이콘) 서적을 참고했다.

 

책에서는 2019년을 기준으로 개발환경을 맞췄기 때문에 현시점하고 다른점이 있다. 하지만 핵심은 많이 바뀌지 않았다.

 

챕터1

.NET 6, .NET 프레임워크, .NET 코어, 자마린은 개발자가 애플리케이션 및 서비스를 만들 수 있게 하는 서로 연관되며 중첩된 플랫폼들이다.

 

.NET 프레임워크 이해하기

.NET 프레임 워크는 CLR + BCL 를 합한 개발 플랫폼을 일컫는 말이다.

CLR 은 Common Language Runtime 말 그대로 공영 언어 런타임이고 코드 실행을 관리하는 것을 말한다.

BCL 은 Base Class Library 기반 클래스 라이브러리이고 프로그램을 빌드하기 위한 것을 말한다.

 

.NET 프레임워크는 4.5.2부터 윈도우 OS의 공식 구성 요소이다.

 

윈도우에서 버전확인

파워쉘 또는 프롬프트에서 아래코드 실행하면 나오는 결과창에서 Full 이라는 항목이 닷넷 버전 (2024.6 기준 4.8)

Get-ChildItem ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match ‘^(?!S)\p{L}’} | Select PSChildName, version

 

닷넷코어 버전확인

파워쉘 또는 프롬프트에서 

dotnet --list-sdks

 

.NET 프레임워크는 윈도우 전용이며 레거시 플랫폼이다. .NET 프레임 워크로 새로운 애플리케이션을 만들지 않는 것이 좋다.

 

모노, 자마린, 유니티 프로젝트 이해하기

모노 프로젝트는 마이크로소프트가 아닌 서드 파티에서 .NET을 구현한 결과물이고 크로스 플랫폼을 지향했지만 정확히 구현하지는 못했다.

모노는 자마린 모바일 프로젝트, 크로스 플랫폼 개발 플랫폼인 유니티(Unity)의 기반이 됐다. 2016년에 마이크로소프트는 자마린을 샀다.

마이크로소프트는 모바일 앱만 만들수 있었던 자마린 스튜디오의 이름을 맥용 비주얼 스튜디오로 바꾸고, 맥용 비주얼 스튜디오 2022 에서는, 자마린 스튜디오의 편집기의 일부를 윈도우용 비주얼 스튜디오에서 사용되던 것으로 교체하면서 사용자 경험과 성능을 개선했지만 ...

결국 비주얼 스튜디오 코드에게 맥용 IDE 자리를 내어주고 만다.

 

.NET 코어 이해하기

지금은 크로스 플랫폼의 시대이고 윈도우 전용의 .NET 프레임워크를 다시 개발하면서 나온 결과물이 .NET 코어이다. 여기에는 위에서 언급한 CLR의 크로스플랫폼 구현인 CoreCLR과 간소화된 클래스 라이브러리인 Core FX가 포함돼 있다.

 

 

.NET 지원

책에서는 .NET 주요 버전 내용을 3가지로 요약해서 보여주고 있다.

- .NET 5.0은 2022년 3월에 지원 종료됐다.

- .NET 코어 3.1은 2022년 12월 3일에 지원 종료됐다.

- .NET 6.0은 2024년 11월에 지원 종료된다.

- .NET 8.0은 2026년 까지 지원

- .NET 10.0은 2025년부터 지원되는데 미정

이 글을 쓰고 있는 2024년 7월 현재 만약 .NET으로 애플래케이션을 개발한다면 최소 8.0을 기준으로 작업해야 한다는 뜻이다.

 

.NET 런타임 업데이트는 6.x와 같은 주요 버전과 호환되며 다음 명령으로 어떤 SDK와 런타임이 설치돼 있는지 확인할 수 있다.

dotnet --list-sdks

dotnet --list-runtimes

 

모던 .NET의 차이점

모던 .NET은 레거시 .NET 프레임워크에 비해 모듈로 구성되어 있고 레거시 코드와 비 크로스플랫폼 기술이 제거되어 있다. 

윈도우 개발에 필요한 윈도우 폼 및 WPF는 따로 세팅하게 분리되었고 웹 개발시 필요한 ASP.NET Web Forms, WCF등은 오래된 기술이고 많이 사용되지 않기 때문에 제거되었다. 특히 웹 개발쪽은 ASP.NET Core라는 이름으로 모던.NET에서 실행되는 플랫폼으로 새로 개발됐다. 데이터베이스 개발쪽으로는 엔티티 프레임워크라는 기술이 발전된 엔티티 프레임워크 코어 라는 이름으로 바뀌었다.