3. 닷넷(.NET) Framework
C# 을 공부하다는 것은, 닷넷(.NET) 프레임워크를 공부한다는 의미다.
학습방향
프레임워크란 무엇인가?
프로그래밍에서 프레임워크는 왜 중요한가?
.NET 플랫폼에서 프레임워크를 이해해야 하는 이유는?
Visual Studio 살펴보기
개발 프레임워크 선택
프레임워크(Framework)
의미
- [어원] 'FRAME (틀, 규칙)' + 'WORK (작업)'
- 시스템
시스템은 왜 사용할까?
- 프렌차이즈는 매장 인테리어부터, 메뉴구성, 결제시스템, 접객 및 운영 방법까지 모든 것을 제공해 준다.
- 제조공정 - 분업과 대량생산, 그리고 생산 효율 향상
프레임워크 예
버튼, 폼 양식, 다이얼로그 등과 같이 자주 사용되는 UI를 미리 구현해서 제공하는 프레임워크이다.
프레임워크와 라이브러리 차이
프로그래밍 언어도, 정해진 문법과 규칙이 있으나 이를 프레임워크라고 하지 않는다.
라이브러리 역시 마찬가지다. 라이브러리는 실행 가능한 소스 코드의 집합일 뿐이다.
프로그래밍 언어와 라이브러리는 개발자의 의도에 맞춰 프로그램의 순서와 흐름을 선택하고 수정할 수 있다.
반면, 프레임워크는 문법적 규칙 뿐만 아니라, 프로그램의 동작 및 사용 순서와 실행 흐름까지 강제한다.
어플리케이션에 버튼을 구현한다면, 개발자는 UI 프레임워크가 만들어 놓은 버튼을 사용하고,정해진 사용 규칙에 맞춰 구현하며, 가능한 범위 내에서 수정할 수 있다.
프렌차이즈 매장에서 정해진 인테리어와 레시피만 사용하는 것과 같다.
프레임워크가 제공하는 미리 만들어진 도구나 구조를 사용해 개발한다면, 좀 더 빠르고 효율적인 애플리케이션 개발이 가능함으로 생산성을 비약적으로 향상 시킬 수 있다.
닷넷(.NET) 프레임워크
닷넷(.NET)과 C#의 관계
C# 을 공부하다는 것은, 닷넷(.NET) 프레임워크를 공부한다는 의미다.
C# 닷넷 프레임워크를 위해 만든 언어다.
MS 는 닷넷에 새로운 기능이 추가될 때마다 그것을 이용할 수 있는 가장 첫 번째 언어로 C#을 발전시킨다.
닷넷 버전 | 닷넷 업데이트 | C# 반영 |
1.0 ~ 1.1 | 최초 등장 | C# 1.0 발표 |
2.0 | 제네릭 제공 | 제네릭, 익명 함수 문법 추가 |
3.0 ~ 3.5 | LINQ, WCF, WPF, WF | 표현식 확장 메서드, 익명 타입 문법 추가, LINQ 구문을 언어단계 지원 |
4.0 | DLR | 동적 언어와의 바인딩 지원, Dynamic 예약어 추가 |
4.5 | 비동기 지원 | 비동기를 위한 async/await 예약어 추가 |
4.6 | 로슬린 컴파일러, RyuJIT 도입 | |
4.7 ~ 4.8 | 윈도우 기본 설치 | 4.8 이후 닷넷 마지막 배포 버전 |
닷넷(.NET) 프레임워크란?
닷넷(.NET) 프레임워크는 1)응용 소프트웨어 개발 환경이자 2)가상 머신을 통한 실행 환경이다.
- 응용 소프트웨어 개발을 위해 문자열, 날짜, 숫자 등에 대한 형식과 파일 읽기 및 쓰기, 데이터베이스에 연결, 그리기 등을 위한 API가 포함된 클래스 라이브러리를 제공한다.
- 공용 언어 런타임(CLR)은 실행 중인 애플리케이션을 처리하는 실행 엔진으로서 스레드 관리, 가비지 수집, 형식 안전성, 예외 처리 등의 서비스를 제공한다.
.NET 애플리케이션은 C#, F# 또는 Visual Basic 프로그래밍 언어로 작성된다.
코드는 언어에 관계없이 CIL(공용 중간 언어)로 컴파일된다.
컴파일된 코드는 .dll 또는 .exe 파일 확장명의 실행파일 형태로 (어셈블리) 저장됩니다.
앱이 실행될 때 CLR은 어셈블리를 가져와 JIT(Just-In-Time Compiler)를 사용하여 앱이 실행 중인 컴퓨터의 특정 아키텍처에서 실행할 수 있는 기계어로 변환한다.
닷넷(.NET) 프레임워크 변화
2020년 11월 10일, MS는 차세대 애플리케이션 개발플랫폼 닷넷(.NET) 5.0을 공식 발표하였다.
이전가지의 닷넷(.NET) 프레임워크는 파편화 되어 있었다.
- 윈도우 플랫폼 프레임워크 .NET Framework
- 크로스 플랫폼 프레임워크 .NET Core
- 모바일 플랫폼 프레임워크 Xamarin/Mono
닷넷(.NET) 으로 프레임워크가 통합되며, 닷넷은 다양한 유형의 애플리케이션을 빌드하기 위한 무료 플랫폼 간 오픈 소스 개발자 플랫폼으로 진화하고 있다.
.NET을 사용하면 여러 언어, 편집기 및 라이브러리를 사용하여 웹, 모바일, 데스크톱, 게임, IoT 등을 빌드할 수 있습니다.
닷넷(.NET) 아키텍처
닷넷(.NET)의 프로그래밍 언어
- C#(C 샵으로 발음)
- C++/CLI 지원(최신)
- F#(F 샵으로 발음)
- Visual Basic
- 공용 언어 인프라(CLI) 언어
애플리케이션 모델 프레임워크
- 프레임워크: 개발자 도구 및 라이브러리의 모음
- 웹 애플리케이션
- 모바일 애플리케이션(iOS 및 Android)
- 데스크톱 애플리케이션
- 기타 애플리케이션
닷넷(.NET) 런타임
- 공용 언어 런타임(CLR)
- CIL(Common Intermediate Language)
- JIT(Just-In-Time) 컴파일
- .NET Native AOT
- OS가 이해할 수 있는 Native Code 로 변환
- 컴파일 타임에 중간 코드를 실행 환경에 적합한 Native Code로 컴파일을 모두 완료한다.
- .NET 7
- 윈도우, 리눅스의 x64, ARM64 프로젝트
- .NET 8
- 2023년 2월 21일 지원 확장
- 윈도우, 리눅스의 x64, ARM64 프로젝트
- 안드로이드, macOS, iOS, iOSSimulator, tvOS(ARM64만 지원), tvOSSimulator, MacCatalyst용 x64, ARM64 프로젝트도 지원
- OS가 이해할 수 있는 Native Code 로 변환
Source Code -> 컴파일(c) -> CIL Code -> JIT 컴파일(r) -> Native Code
Source Code -> 컴파일(c) -> CIL Code -> AOT 컴파일(c) -> .NET Native Code
닷넷(.NET) Standard
닷넷(.NET) 프레임워크, 코어, 자마린 별로 클래스 라이브러리를 각각 만들어서 사용했었다.
플랫폼 간에 공유 가능한 라이브러리를 제공, 생성 한다.
MAUI