>  기사  >  백엔드 개발  >  C# 고급 프로그래밍(1)-.NET 아키텍처

C# 고급 프로그래밍(1)-.NET 아키텍처

黄舟
黄舟원래의
2017-03-20 11:15:261301검색

1.1 C#.NET과의 관계

 C#은 단독으로 사용할 수 없으며 .NET Framework와 함께 사용해야 합니다.

  (1) C#의 아키텍처와 방법론은 .NET 기본 방법론을 반영합니다.

 (2) 대부분의 경우 C#의 특정 언어 기능은 .NET 기능에 의존하거나 .NET 기본 클래스에 의존합니다.

.NET에서 지원되는 일부 기능은 C#에서는 지원되지 않습니다. .NET에서는 지원되지 않지만 C# 언어에서는 지원되는 다른 기능이 있습니다.

1.2 공용 언어 런타임(CLR)

 1.2.1 플랫폼 독립성

핵심 .NET Framework의 런타임 환경은 CLR(공용 언어 런타임) 또는 .NET 런타임이라고 합니다.

CLR의 제어 하에 실행되는 코드를 일반적으로 관리 코드라고 합니다.

.NET에서 코드를 컴파일하는 방법:

1단계: 소스 코드를 Microsoft 중간 언어(IL)로 컴파일합니다.

*IL은 JAVA의 바이트코드와 유사합니다.

2단계: CLR은 IL을 플랫폼별 코드로 컴파일합니다.

1.2.2 성능 향상

JIT(Just-In-Time 컴파일러)는 애플리케이션이 실행될 때 컴파일하므로 JIL은 이를 알고 있습니다. 정확히 어떤 유형의 프로세서에서 프로그램이 실행되는지에 따라 해당 프로세서에 맞게 최적화하여 성능을 향상시킬 수 있습니다.

 1.2.3 언어 상호 운용성

 Visual Basic 2013, Visual C++ 2013, Visual F#, COM 및 COM+, Windows 런타임.

1.3 중급언어

중급언어의 주요 특징:


    • IL은 일반적으로 모호한 데이터 유형 에 대한 작업을 허용하지 않지만, 유형 안전성을 강제하면 대부분의 경우 성능이 저하되는 것처럼 보입니다. 아래에서는 유형 안전성에 의존하는 .NET에서 제공하는 서비스로부터 더 많은 이점을 얻습니다. 이러한 서비스에는 다음이 포함됩니다. >

    • 값 유형(값 유형), 변수는 데이터를 직접 저장하고 중간 언어는 스택에 저장됩니다(참조 유형에서 필드로 선언된 경우 더미에 인라인으로 저장됩니다).
    • 참조 유형(참조 유형), 변수는 주소만 저장하고 참조 유형의 인스턴스는 항상 "관리형 힙"이라는 메모리 영역에 저장됩니다.
    • 강제 입력
    • 언어 상호 운용성의 진정한 의미 언어 사용 수업은 다음과 같아야 합니다. 다른 언어로 작성된 클래스와 직접 통신하기 위해 작성되었습니다. 이러한 도구는 Visual Studio IDE에서 제공됩니다(CLR 아님).
    • 객체 지향

      및 인터페이스 사용

    • 값 유형 참조 유형 간의 중요한 차이점.

    • 언어 상호 운용성에 있어 강력한 데이터 입력의 중요성

      클래스가 인스턴스에서 파생되거나 인스턴스를 포함하는 경우 다른 클래스의 경우 다른 클래스에서 사용하는 모든 데이터 유형을 알아야 하기 때문에 언어 상호 운용성이 매우 중요합니다.

.NET의 솔루션


  • 공통 유형 시스템(CTS)



CTS는 중간 언어에서 사용할 수 있는 사전 정의된 데이터를 정의합니다. , .NET Framework를 대상으로 하는 모든 언어는 궁극적으로 이러한 유형을 기반으로 하는 컴파일된 코드를 생성할 수 있습니다.

CTS를 사용하면 자신만의 코드 유형을 정의할 수도 있습니다.

CTS의 계층 구조는 중간 언어의 단일성을 반영합니다. 의 객체 지향 접근 방식을 계승합니다.


    • 공용 언어 사양(CLS)


CLS가 아닌 코드를 작성하는 것은 허용되지만 그렇게 한다고 해서 IL이 컴파일된다는 보장은 없습니다. 코드는 언어 상호 운용성을 완벽하게 지원합니다.

    • 가비지 수집

    • 보안

    • 애플리케이션 도메인

    • 가비지 수집기는 .NET에서 메모리 관리에 사용되며, 특히 애플리케이션 도메인에 필요한 메모리를 복원할 수 있습니다. 응용 프로그램을 실행 중입니다.

    • 관리되는 힙에서 참조되지 않는 객체를 확인하고 삭제하세요.

    • 예외를 사용하여 오류 처리

    • 속성 사용

위 내용은 C# 고급 프로그래밍(1)-.NET 아키텍처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.