이것은 관련 학습 리소스에 대한 링크가있는 .NET 엔지니어가되기위한 단계별 가이드입니다.
.NET Technologies에 대해 자세히 알아 보려면 내 뉴스 레터 를 구독하십시오.
이 저장소가 도움이된다면 Patreon에서 저를 지원하는 것을 고려하십시오.

이 로드맵은 풍경에 대한 아이디어를 제공하는 것을 목표로합니다. 로드맵은 과대 광고와 트렌디 한 것을 선택하도록 격려하기보다는 다음에 배울 내용에 대한 설명이 필요하다면 안내합니다. 하나의 도구가 다른 경우보다 어떤 경우에 더 적합한 지에 대한 이해를 키우고 과대 광고와 트렌디는 때때로 작업에 가장 적합하다는 것을 기억한다면 도움이 될 것입니다.
이 프로젝트를 좋아하거나 사용하여 솔루션을 배우거나 시작하는 경우 별을주십시오. 감사해요!
선임 수준으로 다음을 의미합니다.
? 주니어 : 기본 개념
? Medior : 고급 개념
? 시니어 : 전문가 개념

PDF 버전을 다운로드하십시오.
아래에서는 PDF 버전에 학습 자료를 포함하고 클릭 할 수있는 모든 주니어 .NET 개발자가 알아야 할 모든 최소 버전을 찾을 수 있습니다.

PDF 버전을 다운로드하십시오.
세부 사항에 들어가기 전에 .NET 생태계 에 대한 확실한 이해가 필요합니다. 다음은 이해해야 할 몇 가지가 있습니다.
이 섹션에서는 주요 .NET RunTimes를 살펴 보겠습니다. .NET 런타임을 .NET의 ECMA-335 표준을 구현하는 것으로 간주합니다.
.NET Framework는 Windows에서 응용 프로그램을 구축하고 실행하기위한 소프트웨어 개발 프레임 워크입니다. .NET Framework는 CLR (Common Language Runtime), .NET Framework 클래스 라이브러리 및 응용 프로그램 워크로드 (WPF, Windows Forms 및 ASP.NET)로 구성됩니다. CLR은 코드를 실행하는 공유 인프라의 일부입니다. 코드는 공통 중간 언어 (CIL)로 컴파일되며 어셈블리 (.exe 또는 .dll 확장)에 저장됩니다. 응용 프로그램이 실행되면 CLR은 어셈블리를 가져 와서 JIT (Just-In-Time Compiler)를 사용하여 특정 컴퓨터 아키텍처에서 실행될 수있는 코드로 기계 코드를 트랜스 파일합니다.
데스크탑과 웹 개발에 사용할 수 있지만 Windows 개발로 제한되며 Windows에서 사전 설치됩니다.
.NET Core는 .NET 생태계의 런타임 중 하나입니다. 그것은 2016 년에 출시되었으며 개방적입니다. .NET 프레임 워크의 새 버전을 나타내지 않으며 대체하지 않습니다. 이 제품은 전적으로 독립적 인 버전으로, 응용 프로그램 개발을위한 크로스 플랫폼 기능을 허용하도록 만들어졌습니다. .NET Core는 CLR 및 라이브러리를 실행하는 앱 호스트 (dotnet.exe)로 구성됩니다. CORECLR (Common Language Runtime) 및 .NET Core Class 라이브러리가 있습니다. ASP.NET Core (MVC 및 API), 콘솔 응용 프로그램 및 UWP (현재)와 같은 다양한 응용 프로그램 워크로드를 지원합니다.
.NET Core는 Windows Client, Server, IoT, Linux, Ubuntu, FreeBSD, Tizen 및 Mac OSX 등 다양한 플랫폼에서 실행할 수 있으며 컴퓨터 또는 사용자마다 다른 버전의 나란히 설치할 수 있습니다.
.NET 5는 2020 년 11 월 데스크탑, 웹, 클라우드, 모바일, 게임, IoT 및 AI 애플리케이션을위한 개발을 통일하기 위해 출시되었습니다. 이전 설정 목표는 단일 .NET 런타임 및 프레임 워크, 크로스 플랫폼을 생성하여 .NET Core, .NET Framework, Xamarin 및 Mono의 최상의 기능을 통합하는 것이 었습니다. 그러나 글로벌 건강 전염병으로 인해 통일은 .NET 6으로 연기되었다. 또한 .NET 타겟팅 버전이 업데이트되는 대상 프레임 워크 이름 (TFMS)이 업데이트되었으므로 이제 Net5.0이 있습니다. 이것은 어디에서나 실행되는 코드를위한 것입니다. Net5.0 + OS- 특이 적 바인딩을 포함하는 .NET 5의 OS 특이 적 풍미를 나타내는 NetCoreapp 및 Net Standard 이름 및 Net5.0 창을 결합하고 대체합니다.
.NET 9는 .NET 생태계의 최신 런타임입니다. 2024 년 11 월에 출시되며 데스크탑, 웹, 클라우드, 모바일, 게임, IoT 및 AI 응용 프로그램의 개발을 통합합니다. .NET 9는 CLR 및 라이브러리를 실행하는 앱 호스트 (dotnet.exe)로 구성됩니다. 공통 언어 런타임 (Coreclr)과 .NET 8 클래스 라이브러리가 있습니다. 또한 ASP.NET CORE 9. .NET 9에는 Windows, MacOS 및 Linux 용 .NET Core 3.1과 거의 동일한 플랫폼 지원이 있습니다.
.NET 9는 후속 STS 또는 LTS 릴리스 후 6 개월 동안 지원되는 표준 용어 지원 릴리스입니다.
.NET 8은 장기 지원 (LTS) 이었습니다. 해당 릴리스는 최초 릴리스 후 3 년 동안 지원됩니다.
다른 runtimes는 다른 클래스 라이브러리를 사용합니다 (예 : .NET Framework는 .NET Framework 클래스 라이브러리를 사용하는 반면 .NET Core에는 클래스 라이브러리와 클래스 라이브러리가 포함 된 Xamarin을 포함합니다. 이런 식으로, 다른 Runtimes간에 코드를 다른 API를 사용하므로 코드를 공유하기가 어렵습니다. Microsoft의 솔루션은 2016 년에 출시 된 .NET Standard Library 입니다. 어떤 API를 사용할 수 있고 모든 런타임을 구현하는 일련의 (공식) 사양을 나타냅니다. 휴대용 클래스 라이브러리 (PCL)의 진화입니다. 특정 runtimes는 .NET 표준 (특정 API 구현)의 특정 버전을 구현합니다. 예를 들어, .NET 프레임 워크 4.8.1은 .NET 표준 2.0 및 .NET 7을 구현합니다.
.NET 생태계에 대한 자세한 내용은이 블로그 게시물을 확인하십시오.
Microsoft의 .NET 릴리스 일정 :

C#은 Microsoft가 개발 한 프로그래밍 언어입니다. 데스크탑 응용 프로그램 및 게임 (Unity 사용)에서 클라우드 기반 솔루션 및 웹 서비스에 이르기까지 모든 것을 구축하는 언어입니다. 객체 지향 프로그래밍과 풍부한 라이브러리를 강력하게 지원 하면서 쉽고 효율적으로 설계되었습니다.
최신 버전은 2024 년 11 월에 출시 된 C# 13 입니다.
전체 C# 타임 라인 확인 :

다음과 같은 다양한 C# 언어 기능을 이해해야합니다.

또한 .NET 라이브러리 및 API 에 대한 API도 :
자원 :
GIT와 같은 디자인 패턴, 클린 코드 및 버전 제어를 사용하면 팀 환경에서 작동하고 번성하는 효율적이고 유지 관리 가능한 코드를 작성할 수 있습니다. 코더와 숙련 된 소프트웨어 엔지니어의 차이점 입니다.
여기에서는 다음과 같은 다른 원칙을 알아야합니다.
견고한 원리 :
그러나 또한 :
자원 :
웹 앱, API 및 마이크로 서비스를 구축하기 위해 Microsoft가 개발 한 크로스 플랫폼, 고성능 프레임 워크입니다. Windows, Linux 또는 MacOS에서 앱을 실행할 수도 있습니다. 내장 의존성 주입 및 강력한 구성 시스템과 같은 기능으로 유연성과 확장 성을 위해 설계되었습니다.
여기에서는 다음과 같은 웹 개발 기본 사항 도 알아야합니다.
자원 :
.NET에서 UIS를 구축하려면 이러한 프레임 워크가 필요합니다. Razor 는 Dynamic HTML을 생성하기위한 템플릿 엔진이며 Blazor는 노치를 가져 와서 JavaScript 대신 C#을 사용하여 대화식 웹 UI를 구축 할 수 있습니다. Maui는 크로스 플랫폼 모바일 앱을 구축하기 위해 만든 Xamarin의 후계자입니다. WPF (Windows Presentation Foundation)는 데스크탑 클라이언트 애플리케이션을 생성하는 UI 프레임 워크입니다. UNO 플랫폼은 Open Source Cross -Platform 그래픽 사용자 인터페이스로 Winui 및 Universal Windows 플랫폼 (UWP) - IOS, MacOS, Linux, Android 및 WebAssembly에서 실행할 수 있습니다.
자원 :
우수한 데이터베이스 디자인은 효율적인 데이터 저장 및 빠른 검색을 보장하여 앱을 더 부드럽고 스케일을 더 쉽게 실행할 수 있도록합니다. 데이터베이스 상호 작용을위한 언어 인 SQL 은 저장하도록 신중하게 설계된 데이터를 쿼리, 업데이트 및 관리 할 수있는 전력을 제공합니다.
여기에서 알아야합니다.
자원 :
ORM (Object-Relational Mapping)은 객체 지향 C# 코드와 관계형 데이터베이스 사이의 번역기와 같습니다. 기본 CRUD 작업에 대한 SQL 쿼리를 작성하는 지루한 작업을 제거합니다. 엔티티 프레임 워크와 같은 ORM 프레임 워크를 사용하면 코드에서 데이터를 객체로 조작하여 더 읽기 쉽고 유지 관리 할 수 있습니다 . 이는 개발 속도를 높이고 오류를 최소화하며 데이터베이스 구문으로 씨름하는 대신 복잡한 비즈니스 로직에 집중할 수 있습니다.
엔티티 프레임 워크 의 경우 다음을 알아야합니다.
자원 :
캐싱은 앱의 개인 단기 메모리와 같습니다. 자주 액세스하는 데이터를 저장하므로 데이터베이스에 액세스하지 않고도 신속하게 검색 할 수 있습니다 . 데이터베이스로드를 줄이고 데이터 액세스 속도를 높이면 캐싱은 응답 성 및 가용성에 대한 사용자 요구를 충족시키는 데 필요한 경쟁 우위를 제공합니다.
자원 :
로깅은 런타임 정보, 오류 및 기타 중요한 데이터를 캡처하여 문제를 신속하게 식별하고 수정하여 응용 프로그램을보다 신뢰할 수 있고 안전하게 만듭니다. NLOG 또는 SERILOG 와 같은 로깅 프레임 워크는 .NET에 원활하게 통합되어 응용 프로그램 건강 모니터링, 문제 해결 및 향후 개발을위한 통찰력을 수집 할 수있는 실시간 진단 도구를 제공합니다.
자원 :
.NET에는 실시간 커뮤니케이션, 동기 및 비동기 통신의 세 가지 유형의 커뮤니케이션이 있습니다. .NET 생태계의 Signalr과 같은 실시간 통신 기술은 서버와 클라이언트 간의 지속적인 연결을 유지하여 이러한 기능을 가능하게합니다. 동기식 통신 은 주로 HTTP 클라이언트를 통해 사용하여 수행되며 비동기 통신은 다양한 메시징 및 이벤트 기반 프레임 워크 및 라이브러리를 통해 수행됩니다. 메시징 시스템은 시스템의 다른 부분 사이의 중개인 역할을하여 직접 연결되지 않고 통신 할 수 있습니다. 반대편에서 이벤트 핸들러는 단일 응용 프로그램 내에서 이벤트를 처리하는 데 사용됩니다. 응용 프로그램의 한 부분이 다른 부분에 반응 할 수있는 이벤트를 제기 할 수있는 게시자 수용자 모델을 용이하게합니다.
자원 :
이 서비스는 백그라운드에서 작업을 실행하여 사용자 상호 작용에 중점을두기 위해 응용 프로그램을 확보합니다. 데이터 처리, 자동 전자 메일 또는 정기적 인 정리에 관계없이 배경 서비스는 이러한 작업이 사용자 경험을 늦추거나 방해하지 않도록합니다.
자원 :
단위 테스트는 코드의 고립 된 부분에 중점을두고 통합 테스트를 통해 다른 부품이 함께 잘 작동하도록하며 엔드 투 엔드 테스트는 애플리케이션 내의 전체 사용자 여정을 검증합니다. 그들은 함께 안전망을 형성하여 버그를 일찍 잡아 디버깅을 단순화하며 코드베이스를 강력하고 유지 관리 할 수 있도록합니다.
여기에서 알아야합니다.
자원 :
이 도구는 응용 프로그램의 성능, 사용자 동작 및 오류율에 대한 실시간 통찰력을 제공하여 문제가 완전한 문제로 확대되기 전에 문제를 해결할 수 있습니다.
모니터링은 서비스 및 시스템의 건강 및 가용성에 중점을 두며, 종종 사전 정의 된 조건에 대한 경고를 유발합니다.
원격 측정법은 시스템에서 데이터를 수집, 프로세스 및 전송하여 패턴, 추세 및 이상을 분석 할 수 있습니다.
자원 :
컨테이너 솔루션은 .NET 응용 프로그램, 라이브러리 및 런타임을 격리 된 컨테이너로 캡슐화합니다. 이를 통해 여러 개발 및 생산 환경에서 일관성을 유지하여 의존성 문제를 해결합니다. 계층화 된 파일 시스템과 같은 기능을 사용하면 ASP.NET, .NET Core 또는 기타 .NET 서비스 용 컨테이너 이미지를 쉽게 관리하여 빌드 시간 및 리소스 활용을 최적화 할 수 있습니다.
자원 :
클라우드 제공 업체는 API 계층을 제공하여 인프라를 추상화하고 보안 및 청구 경계를 기반으로 제공합니다. 클라우드는 데이터 센터의 서버에서 실행되지만 추상화는 단일 "플랫폼"또는 대규모 응용 프로그램과 상호 작용하는 것처럼 보입니다. 클라우드 제공 업체와 신속하게 지원, 구성 및 안전한 리소스를 제공하는 기능은 현대적인 DevOps의 엄청난 성공과 복잡성의 핵심이었습니다.
시장에서 가장 인기있는 클라우드 제공 업체는 Google Cloud 뿐만 아니라 AWS 및 Azure 입니다.
여기에서 사용자 및 관리, 네트워크, 가상 서버 등을 관리하는 방법을 알아야합니다.
자원 :
CI/CD는 건물, 테스트 및 배치 단계를 간소화 된 오류 방지 파이프 라인으로 자동화합니다. 이는 더 빠른 릴리스, 버그 수정 및 기능 개발에 집중할 시간을 의미합니다.
여기에서 방법을 알아야합니다.
자원 :
유용한 .NET 라이브러리. 모든 라이브러리가 모든 사람이 사용하는 것은 아니며 주로 작업하는 프로젝트에 따라 다릅니다.
이 외에도 다음을 알아야합니다.
성능은 .NET 응용 프로그램에서 필수적인 역할을합니다. 여기에서 알아야합니다.
이 도구를 사용하면 코드에있는 다양한 성능 병목 현상을 식별하고 디버깅 할 수 있습니다. 이를 위해 다음과 같은 다른 도구를 사용할 수 있습니다.
도구와 함께 .NET의 다양한 성능 모범 사례를 알고 있어야합니다.
캐싱 (MEM 메모리 캐시 또는 redis)
데이터베이스 최적화 (쿼리 최적화, 적절한 인덱싱, 연결 풀링)
비동기 프로그래밍 (모든 CPU를 오프로드하여 DB, 파일 시스템, Ext. Systems에 광범위하거나 I/O 바인딩 작업)
엔티티 프레임 워크를 현명하게 사용합니다 (열망하는 로딩, 예측 및 컴파일 쿼리와 같은 최적화 사용)
메모리 관리 (값 유형을 사용하고 큰 객체 그래프로 신중하십시오. DB 연결 또는 스트림에 패턴을 사용하십시오. 복싱/박스를 피하십시오. 많은 수의 연결을 위해 문자열 대신 StringBuilder를 사용하십시오.)
HTTP 캐싱 (ETAG 사용, 최후의 수정 헤더 사용)
왕복 트립 최소화 (HTTP 요청 수 및 데이터베이스 왕복 수단을 줄이십시오)
CDNS (Content Delivery Networks) (사용자에게 더 빠른 전달을 위해 정적 자산 (CSS, JavaScript, 이미지)을 오프로드하여 CDN으로 오프로드)
압축 (데이터 전송 크기를 줄이기 위해 HTTP 응답에 대한 GZIP 또는 BROTLI 압축 활성화)
로깅 및 추적 (생산에서 과도한 로깅을 피하십시오. 마이크로 서비스를 통해 분산 추적을 사용하십시오.)
병렬 처리 및 동시성 (병렬 클래스 또는 작업 병렬 라이브러리 (TPL)를 사용하여 CPU 결합 작업에 대한 병렬 처리 및 멀티 스레딩 사용)
리소스 최적화 (로드 시간을 줄이기 위해 웹의 이미지 및 자산 최적화)
SSL에 대한 http2 (이제 페이지 컨텐츠에 대한 지능적인 결정)
성능 측정 및 모니터링 (사용 대 진단 도구, 앱 통찰력 또는 BenchmarkDotnet 사용)
사용자 span <> 컬렉션 대신 (스팬은 연속적인 메모리 섹션을 나타낼 수 있습니다. 이것은 우리가 배열을 통해 작동하는 데 사용할 수 있음을 의미합니다)
보안은 응용 프로그램 개발에서 필수적인 역할을합니다. .NET 세계에서 보안의 가장 중요한 측면은 다음과 같습니다.
인증 및 승인 개념 :
암호화 및 데이터 보호 개념 :
로드맵을 개선 할 수 있다고 생각되면 업데이트가있는 PR을 열고 문제를 제출하십시오. 또한, 나는 이것을 계속 개선 할 것이므로, 당신은이 저장소도 주연시켜야합니다.
Milan Milanović 박사 - 개발자 기술을위한 3MD 및 Microsoft MVP의 CTO.