반응형

✅ .NET이란?
.NET은 마이크로소프트가 개발한 개발 프레임워크로,
C#, F#, VB.NET 등의 언어로 앱, 웹, 게임, 서버, 모바일 등 다양한 프로그램을 만들 수 있게 도와주는 개발 플랫폼.
🧱 구성요소 정리
구성 요소설명
| CLR (Common Language Runtime) | .NET의 실행 엔진. C# 코드 → 중간 코드(IL) → 실행 시 JIT 컴파일 |
| BCL (Base Class Library) | 자주 쓰는 클래스들 (List, String, IO, Thread 등등) 모음 |
| 언어 지원 | C#, F#, VB.NET 등 |
| NuGet | .NET에서 사용하는 패키지 관리 시스템 |
🧰 .NET으로 만들 수 있는 것들
분야기술설명
| 웹 서버 | ASP.NET Core | 백엔드 웹 서버 |
| 데스크탑 | WinForms / WPF | 윈도우 GUI 앱 |
| 게임 | Unity (C#) | Unity 엔진은 내부적으로 .NET Mono 기반 |
| 모바일 | Xamarin, .NET MAUI | iOS/Android 앱 제작 |
| 콘솔 앱 | Console App | 간단한 터미널 기반 프로그램 |
| 클라우드 | Azure + .NET | 마이크로소프트 클라우드 플랫폼에서 사용 |
🔄 실행 과정 간단 요약
- C# 코드 작성
- 컴파일 → 중간 코드(IL) 생성
- 실행 시 CLR이 JIT 컴파일로 IL을 기계어로 바꿈
- 프로그램 동작!
JIT: Just-In-Time 컴파일. 실행할 때 필요한 부분만 컴파일함
🧪 .NET Framework vs .NET Core vs .NET (현행)
이름설명
| .NET Framework | 예전 윈도우 전용 버전 (Windows 한정) |
| .NET Core | 크로스 플랫폼 가능, 성능 향상 |
| .NET 5+ / .NET 6 / .NET 8 (현재) | 통합된 차세대 .NET. Windows, macOS, Linux 모두 지원 |
🧩 쉽게 비유하자면...
- C# = 언어
- .NET = C#이 돌아가는 무대, 플랫폼, 엔진
.NET이 그래서 정확하게 뭘 해주는걸까?
🎯 .NET이 실제로 "하는 일" 요약
✅ 1. 코드 실행 관리 (CLR)
- C#으로 짠 코드는 그냥 실행할 수 없다.
→ .NET이 IL(중간 코드) 로 바꾼 뒤,
→ CLR이라는 엔진이 그걸 실행 가능한 기계어로 바꿔서 실행한다. - 이때 가비지 컬렉션, 예외 처리, 스레드 관리 같은 것도 .NET이 자동으로 관리해줌.
📌 예시
int a = 10; Console.WriteLine(a);
→ 위 코드를 작성하면
.NET이 알아서 메모리 잡고, 출력해주고, 끝나면 메모리 정리까지 함.
✅ 2. 기본 라이브러리 제공
- List, Dictionary, File, Http, Thread, Task, DateTime, Json, Math 같은
기본 기능들을 전부 내장해서 제공한다.
📌 예시
List<int> list = new List<int>(); list.Add(5);
→ 이런 기본 자료구조를 쓸 수 있는 것도 .NET이 라이브러리로 다 제공해서임.
✅ 3. 다양한 플랫폼 지원
- .NET 하나만 배우면 다음도 전부 개발 가능:
- 웹 서버 (ASP.NET)
- 데스크탑 앱 (WPF, WinForms)
- 모바일 앱 (Xamarin, MAUI)
- 게임 (Unity)
- IoT, 콘솔 앱, 클라우드 서버 등등
✅ 4. 보안 + 성능 + 확장성 제공
- 코드가 위험한 짓(예: 메모리 침범) 안 하도록 안전한 실행환경 제공
- C++보다 느리지만, JIT 컴파일러와 최적화로 일반적으론 충분히 빠름
- NuGet으로 외부 라이브러리 쉽게 설치 가능 (게임에 DLL 넣듯이)
🔁 다시 요약하면
.NET이 해주는 일
| 코드 실행 | IL을 기계어로 바꿔서 실행 (CLR) |
| 메모리 관리 | 가비지 컬렉션으로 자동 정리 |
| 기능 제공 | 수많은 API (파일, 네트워크, 스레드 등) |
| 앱 지원 | 웹, 게임, 모바일, 데스크탑 앱 개발 가능 |
| 보안과 안정성 | 오류 방지 + 예외 처리 체계 제공 |
.NET이 여러 기능을 제공한다고 하는데..
C#에서 System 라이브러리도 .NET에서 제공하는건가?
📦 System 네임스페이스 = .NET의 핵심 라이브러리
System은 C#에서 가장 기본적으로 사용하는 .NET의 Base Class Library (BCL) 안에 포함된 최상위 네임스페이스.
즉, C# 코드에서 우리가 자주 사용하는 클래스들(문자열, 리스트, 파일 등)은 전부 .NET이 제공하는 System` 계열에 속함.
🔍 예시로 보는 System 클래스들
클래스설명
| System.Console | 콘솔 입출력 (Console.WriteLine()) |
| System.String | 문자열 처리 (Replace, Substring, Length) |
| System.Math | 수학 함수 (Math.Sqrt(), Math.Pow()) |
| System.Collections.Generic.List<T> | 제네릭 리스트 |
| System.IO.File | 파일 읽고 쓰기 |
| System.Net.Http.HttpClient | 웹 요청 보내기 |
| System.Threading.Tasks.Task | 비동기 처리 (async/await) |
📂 어디서 오느냐?
이 클래스들은 실제로는 DLL로 되어 있는 .NET 런타임 라이브러리 안에 정의되어 있음.
예를 들어:
- System.Console → System.Console.dll
- System.Collections → System.Collections.dll
- System.Runtime → System.Runtime.dll
이런 파일들이 .NET SDK에 포함되어 있고, C# 컴파일러가 이걸 자동으로 참조해줌.
⚙️ C# 언어 vs .NET 라이브러리
항목역할
| C# | 문법, if, for, class, interface, 타입 정의 방법 등 |
| .NET (System 포함) | 문자열, 리스트, 파일 등 실질적인 기능 제공 |
관련 링크
컴파일 과정
NuGet
반응형
'CS' 카테고리의 다른 글
| 더티 플래그 (Dirty Flag) (0) | 2025.08.08 |
|---|---|
| ANSI (1) | 2025.07.22 |
| 유니코드 (1) | 2025.07.10 |
| 코드 컨벤션 (Code onvention) (0) | 2025.07.07 |
| C# (0) | 2025.07.07 |