[C#] .Net Framework

JUYEONG·2023년 10월 11일
0

C#

목록 보기
1/2

.Net Framework란?

.Net Framework는 윈도우 앱 및 웹 서비스 빌드 및 실행을 지원하는 기술이다. 마이크로소프트 문서를 읽어보면 다음과 같은 목표를 달성하기 위해 설계 되었다고 한다.

1) 객체 코드가 로컬에서 저장 및 실행되거나 로컬에서 실행되지만 웹에 분산되어 있거나 원격으로 실행되는 경우에도 일관된 객체지향 프로그래밍(OOP) 환경을 제공한다

2) 다음과 같은 코드 실행 환경을 제공한다.

  • 소프트웨어 배포 및 버전 관리 충돌을 최소화한다.
  • 알 수 없거나 부분적으로 신뢰할 수 있는 제 3자가 만든 코드를 포함하여 코드의 안전한 실행을 촉진한다.

3) 윈도우 기반 앱,웹 기반 앱 등 매우 다양한 유형의 앱에서 개발자 환경을 일관되게 만든다.

4) .Net Framework 기반 코드가 다른 코드와 통합되도록 모든 통신을 업계 표준에 따라 구축한다.

.Net Framework 아키텍처

.Net Framework의 두 가지 주요 구성요소는 CLR(Common Language Runtime)클래스 라이브러리다.

.Net 애플리케이션은 C#, F#, Visual Basic 등 프로그래밍 언어로 작성된다. 코드는 언어에 구애받지 않고 CIL(Common Intermediate Language)로 컴파일되고 컴파일된 코드는 어셈블리(.dll 또는 .exe 확장자를 가진 파일)에 저장된다.

앱이 실행되면 CLR은 어셈블리를 가져와 JIT(Just in Time 컴파일러)를 사용하여 이를 실행 중인 컴퓨터의 특정 아키텍처에서 실행할 수 있는 기계어 코드로 변환한다.

.Net Framework 구성요소

1) CLR (Common Languge Runtime)

  • .Net Framework의 Virtual Machine 요소이다.
  • 작성한 소스코드를 OS 위에 있는 .Net Framework에서 작동하게 해준다.
  • 실행 시 코드를 관리하고 메모리 관리, 스레드 관리, 원격과 같은 핵심 서비스를 제공한다.

1-1) 아키텍처

1-2) 관리 코드

  • 런타임을 대상으로 하는 코드를 관리 코드라고 한다.
  • 관리 코드는 언어 간 통합, 언어 간 예외 처리, 강화된 보안, 버전 관리 및 배포 지원, 구성 요소 상호 작용을 위한 간단한 모델, 디버깅 및 프로파일링 서비스 등의 다양한 기능을 활용한다.
  • 관리 코드에서 서비스를 제공할 수 있게 하려면 언어 컴파일러에서 사용자 코드의 형식, 멤버 및 참조를 설명하는 메타데이터가 필요하다.
  • 메타데이터는 코드와 함께 저장되며 로드 가능한 모든 공용 언어 런타임 파일에는 메타데이터가 포함되어 있다.
  • 런타임에서는 메타데이터를 사용하여 다음과 같은 행동을 한다.
    1) 클래스를 찾아 로드
    2) 메모리에 인스턴스 배치
    3) 메서드 호출을 확인
    4) 네이티브 코드 생성
    5) 보안 강화
    6) 런타임 컨텍스트 경계 설정

2) 클래스 라이브러리

  • CLR과 긴밀하게 통합되는 재사용 가능한 형식의 컬렉션이다.
  • 클래스 라이브러리는 개체 지향적이며 자체 관리 코드가 기능을 파생하는 형식을 제공한다
  • 이를 통해 .NET Framework 유형을 쉽게 사용할 수 있을 뿐만 아니라 .NET Framework의 새로운 기능을 배우는 데 소요되는 시간도 단축된다.
  • 타사 구성 요소는 .NET Framework의 클래스와 원활하게 통합된다.
  • 제공되는 라이브러리를 활용해 콘솔 앱, GUI(Winform), WPF, 웹 (ASP .NET) 등 다양한 서비스를 개발할 수 있다.

출처 : Microsoft Docs
https://learn.microsoft.com/en-us/dotnet/framework/get-started/overview
https://learn.microsoft.com/ko-kr/dotnet/standard/clr

0개의 댓글

관련 채용 정보