.NET 프레임워크

.NET Framework
.NET 프레임워크
Microsoft .NET logo.svg
DotNet.svg
.NET Framework 컴포넌트 스택
개발자마이크로소프트
초기 릴리즈2002년 2월 13일, 20년 전(2002-02-13)
최종 릴리즈
4.8.0 빌드 4115 / 2021년 5월 1일; 15개월 전(2021-05-01)[1]
운영 체제Windows 98 이후, Windows NT 4.0 이후
플랫폼IA-32, x86-64 ARM
후계자.그물
유형소프트웨어 프레임워크
면허증.혼재, § 라이선스 참조
웹 사이트dotnet.microsoft.com Edit this on Wikidata

.NET Framework ('닷넷'으로 발음)는 주로 Microsoft Windows에서 실행되는 Microsoft가 개발소프트웨어 프레임워크입니다.이는 크로스 플랫폼으로 대체될 때까지 Common Language Infrastructure(CLI; 공통 언어 인프라스트럭처)의 주요 구현이었습니다.NET 프로젝트Framework Class Library(FCL; 프레임워크 클래스 라이브러리)라고 불리는 대규모 클래스 라이브러리가 포함되어 있으며 여러 프로그래밍 언어에 걸쳐 언어 상호 운용성(각 언어에서 다른 언어로 작성된 코드를 사용할 수 있음)을 제공합니다.용으로 작성된 프로그램.NET Framework는 CLR(Common Language Runtime)이라는 이름의 소프트웨어 환경에서 실행됩니다.CLR은 보안, 메모리 관리예외 처리와 같은 서비스를 제공하는 애플리케이션 가상 시스템입니다.따라서 를 사용하여 작성된 컴퓨터 코드입니다.NET Framework는 "관리 코드"라고 불립니다.FCL과 CLR을 조합하여를 구성합니다.NET 프레임워크

FCL은 사용자 인터페이스, 데이터 액세스, 데이터베이스 연결, 암호화, 웹 애플리케이션 개발, 수치 알고리즘네트워크 통신을 제공합니다.프로그래머는 소스 코드를 와 조합하여 소프트웨어를 만듭니다.NET Framework 및 기타 라이브러리.이 프레임워크는 Windows 플랫폼용으로 작성된 대부분의 새로운 응용 프로그램에서 사용하도록 설계되었습니다.또, Microsoft 는, 의 통합 개발 환경도 작성합니다.비주얼 스튜디오라고 불리는 NET 소프트웨어.

.NET Framework는 독자 사양의 소프트웨어로 시작되었지만, 이 회사는 첫 출시 전부터 거의 즉시 소프트웨어 스택을 표준화하려고 노력했습니다.표준화 노력에도 불구하고 개발자들, 주로 자유오픈 소스 소프트웨어 커뮤니티의 개발자들은 선택된 조건과 자유 및 오픈 소스 구현의 전망, 특히 소프트웨어 특허에 대한 불안을 표명했다.그 후 Microsoft는 변화했습니다.커뮤니티 개발 소프트웨어 프로젝트의 최신 모델을 보다 밀접하게 따르기 위한 NET 개발.이러한 [2]우려에 대처하기 위한 특허의 갱신을 포함한다.

2019년 4월 마이크로소프트는 를 출시했다.NET Framework 4.8, 독점 제품으로서 프레임워크의 마지막 버전입니다.그 이후로 그 버전에 대한 보안 및 신뢰성 버그 수정만 월별로 발표되었습니다.해당 버전에 대한 추가 변경은 [3]계획되지 않았습니다.

역사

마이크로소프트는 개발을 시작했습니다.1990년대 후반의 NET Framework는 의 일부로서, 원래는 Next Generation Windows Services(NGWS)라는 이름으로 사용되었습니다.NET 전략2000년 초까지의 첫 번째 베타버전.NET 1.0이 출시되었습니다.

2000년 8월, MicrosoftIntel공통 언어 인프라스트럭처(CLI)와 C#의 표준화에 임했습니다.2001년 12월까지, 양쪽 모두 ECMA([4][5]Ecma International) 규격이 승인되었습니다.2003년 4월에는 국제표준화기구(ISO)가 그 뒤를 이었다.ISO 표준의 현재 버전은 ISO/IEC 23271:2012 및 ISO/IEC 23270:[6][7]2006입니다.

Microsoft와 그 파트너는 CLI 및 C#의 특허를 보유하고 있지만, ECMA 및 ISO는 구현에 필수적인 모든 특허를 "합리적이고 차별적이지 않은 조건"에 따라 사용할 수 있도록 요구합니다.양사는 이러한 조건을 충족하고 특허를 로열티 없이 이용할 수 있도록 하는 데 합의했다.단, 이것은 의 부분에는 적용되지 않았습니다.NET Framework는 Windows Forms, ADO 의 ECMA-ISO 규격에 포함되지 않습니다.NETASP.NET. 이러한 분야에서 마이크로소프트가 보유한 특허는 마이크로소프트 이외의 프레임워크의 완전한 구현을 [8]방해할 수 있습니다.

2007년 10월 3일, Microsoft 는 의 소스 코드를 발표했습니다.NET Framework 3.5 라이브러리는 Microsoft Reference Source License(MS-RSL[a])[9]에서 사용할 수 있게 되었습니다.소스 코드 저장소는 2008년 1월 16일에 온라인으로 제공되었으며 BCL, ASP도 포함되어 있습니다.NET, ADONET, Windows Forms, WPF 및 XML. Microsoft의 Scott Guthrie는 LINQ, WCF 및 WF 라이브러리를 추가할 [10]것을 약속했습니다.

.NET Compact Framework 및.의 NET Micro Framework 바리안트.NET Framework는 Windows Mobile, Windows CE 및 기타 리소스가 제한된 임베디드 기기 등 기타 Microsoft 플랫폼을 지원했습니다.Silverlight는 플러그인을 통해 웹 브라우저를 지원했습니다.

Microsoft.NET Framework v4.5 로고

2014년 11월에는 마이크로소프트도 특허 부여에 대한 업데이트를 실시하여 이전 공약보다 범위를 더 넓혔습니다.Mono와 같은 이전 프로젝트는 Microsoft의 이전 보조금이 ECMA-334와 ECMA-335의 4판을 포함한 "대상 사양"의 기술에만 적용되었기 때문에 법적 회색 영역에 존재했습니다.그러나 새로운 특허 약속은 사양 버전에 제한을 두지 않으며, 심지어 어떤 버전에도 적용됩니다.ECMA 그룹에 의해 정식으로 지정되지 않은 MSDN에 문서화된 NET 런타임 테크놀로지(프로젝트가 실장하는 경우).이것에 의해, Mono등의 프로젝트에서는, 최신과 같은 기능을 유지할 수 있습니다.제4판부터 도입된 NET 기능은, 이러한 기능의 실장에 관한 특허 소송의 리스크 없이 공개되고 있습니다.새로운 허가에서는, [11]실장이 CLI 사양의 필수 부분과의 최소한의 컴플리언스를 유지할 필요가 있는 제약이 있습니다.

2016년 3월 31일 Microsoft Build에서 Microsoft는 이전에 상용 라이선스가 [12]필요했던 시나리오에서도 MIT 라이선스에 따라 Mono를 완전히 잔존시킬 것이라고 발표했습니다.마이크로소프트는 또한 Mono에 대한 이전의 특허 약속을 보완하여 "[13][14]사용, 판매, 판매, 판매, 수입 또는 배포" 당사자에 대해 어떠한 "적용 특허"도 주장하지 않겠다고 밝혔습니다.모노 프로젝트가 에 기여했다고 발표되었습니다.NET Foundation(NET 기반)이러한 개발은 2016년 2월에 시작하여 2016년 [15]3월 18일에 종료된 Xamarin의 인수에 따른 것입니다.

마이크로소프트의 보도 자료에서는 크로스 플랫폼 확약을 통해 완전히 오픈 소스의 현대적인 서버 측을 실현할 수 있게 되었음을 강조하고 있습니다.NET 스택Microsoft는 WPF, Windows Forms 및 Win의 소스 코드를 공개했습니다.2018년 [16]12월 4일 UI.

아키텍처

공통 언어 인프라스트럭처(CLI)의 개요

공통 언어 인프라스트럭처

Common Language Infrastructure(CLI; 공통 언어 인프라스트럭처)는 애플리케이션 개발과 실행을 위한 언어 중립적인 플랫폼을 제공합니다.의 핵심 측면을 구현합니다.CLI 의 범위내의 NET Framework 에서는, 이러한 기능은 1 개의 언어에 한정되지 않고, 프레임워크가 서포트하는 복수의 언어에 걸쳐 사용할 수 있습니다.

공통 언어 런타임

.NET Framework에는 Common Language Runtime(CLR)이 포함되어 있습니다.의 실행 엔진으로 기능합니다.NET Framework는 메모리 관리, 타입 세이프티, 예외 처리, 가비지 수집, 보안, 스레드 관리 의 다양한 서비스를 제공합니다.모든 프로그램이 용으로 작성되었습니다.NET Framework는 CLR에 의해 실행됩니다.

용으로 작성된 프로그램.NET Framework는 머신 코드로 직접 컴파일되는 것이 아니라 Common Intermediate Language Code(CIL; 공통 중간 언어 코드)로 컴파일됩니다.실행 중 아키텍처 고유의 JIT(Just-in-Time 컴파일러)는 CIL 코드를 머신코드로 변환합니다.

어셈블리

컴파일된 CIL 코드는 CLI 어셈블리에 저장됩니다.사양에 따라 어셈블리는 모든 DLL(Dynamic Link Library) 및 EXE 파일에 대해 Windows 플랫폼에서 공통으로 사용되는 Portable Executable(PE; 포터블 실행 파일) 형식으로 저장됩니다.각 어셈블리는 하나 이상의 파일로 구성되며, 그 중 하나는 어셈블리의 메타데이터를 포함하는 매니페스트를 포함해야 합니다.어셈블리의 전체 이름(디스크의 파일 이름과 혼동하지 않음)에는 어셈블리의 단순 텍스트 이름, 버전 번호, 문화 공개 키 토큰이 포함됩니다.어셈블리는 동일한 전체 이름을 공유하는 경우 동등한 것으로 간주됩니다.

어셈블리 작성자는 개인 키를 사용하여 강력한 이름을 지정할 수도 있습니다.공개 키 토큰은 어셈블리가 서명된 개인 키를 식별합니다.키 쌍의 작성자(일반적으로 어셈블리에 서명하는 사람)만이 이전 버전 어셈블리와 동일한 강력한 이름을 가진 어셈블리에 서명할 수 있습니다. 생성자가 개인 키를 소유하기 때문입니다.어셈블리를 글로벌 어셈블리 캐시에 추가하려면 강력한 이름이 필요합니다.

Visual Studio 2015부터.NET Native 컴파일 테크놀로지로 컴파일 할 수 있습니다.Universal Windows Platform 앱의 NET 코드는 CIL 코드가 아닌 머신 코드에 직접 입력되지만 앱은 C# 또는 Visual Basic으로 작성되어야 합니다.네트워크[17]

클래스 라이브러리

.NET Framework에는 CLI 기반의 표준 라이브러리가 구현되어 있습니다..NET Framework Class Library(FCL)는 네임스페이스 계층으로 구성됩니다.대부분의 내장 애플리케이션 프로그래밍 인터페이스(API)는 다음 중 하나에 속합니다.System.*또는Microsoft.*네임스페이스이러한 클래스 라이브러리는 파일 읽기 및 쓰기, 그래픽 렌더링, 데이터베이스 상호 작용 및 XML 문서 조작과 같은 많은 공통 기능을 구현합니다.클래스 라이브러리는 모든 CLI 준거 언어에 사용할 수 있습니다.FCL은 CLI Base Class Library(BCL; 기반 클래스 라이브러리) 및 기타 클래스 라이브러리를 구현합니다.이러한 라이브러리는 CLI에 의해 지정되며 다른 라이브러리는 Microsoft에 고유합니다.

BCL은 클래스 라이브러리 전체의 작은 서브셋을 포함하며 CLR의 [18]기본 API로 기능하는 클래스의 핵심 세트입니다..NET Framework의 경우 BCL의 일부로 간주되는 대부분의 클래스는 다음 위치에 있습니다.mscorlib.dll,System.dll그리고.System.Core.dllBCL 클래스는 에서 사용할 수 있습니다.NET Framework 및 기타 구현.NET Compact Framework, Microsoft Silverlight NET Core 및 Mono.

FCL은 에 부속되어 있는 클래스 라이브러리 전체를 의미합니다.NET 프레임워크BCL, Windows Forms, ASP 등 확장 라이브러리 세트가 포함되어 있습니다.NET 및 WPF(Windows Presentation Foundation)뿐만 아니라 기본 클래스 라이브러리 ADO에 대한 확장도 제공합니다.NET, Language Integrated Query(LINQ), Windows Communication Foundation(WCF) 및 Workflow Foundation(WF)이 있습니다.FCL은 C++와 같은 언어의 표준 라이브러리보다 훨씬 범위가 크고, Java의 표준 라이브러리와 비교해도 손색이 없습니다.

대체 실장(Silverlight 등)의 도입에 의해, Microsoft는, 소비하는 라이브러리를 복수의 플랫폼에서 실행할 수 있도록 하는 Portable Class Libraries(PCL)의 개념을 도입했습니다.가 더욱 확산됨에 따라.NET 플랫폼, PCL 어프로치의 확장에 실패했습니다(PCL은 2개 이상의 [19]플랫폼 간의 API 표면의 교차로 정의되어 있습니다).PCL의 다음 진화 단계로서를 참조해 주세요.NET Standard Library는 소급하여 작성되었습니다.System.Runtime.dllUWP 및 Silverlight에 있는 기반 API입니다.새로운 .NET 플랫폼은 기존의 서드파티 라이브러리를 재사용하여 새로운 버전 없이 실행할 수 있도록 표준 라이브러리 버전을 구현하는 것이 좋습니다..NET Standard Library를 사용하면 내의 라이브러리 및 애플리케이션모델 레이어를 개별적으로 진화시킬 수 있습니다.NET [20]아키텍처

NuGet은 모든 패키지 매니저입니다.NET 플랫폼서드파티제 라이브러리를 로 취득하기 위해서 사용합니다.글로벌 라이브러리 피드를 갖춘 NET 프로젝트([21]NuGet.org).개인 피드는 빌드 서버나 파일 시스템 디렉토리 등에 의해 개별적으로 유지 관리될 수 있습니다.

C++/CLI

Microsoft 에서는, Visual Studio 2005 C++/CLI 를 도입했습니다.Visual Studio 2005 는, 에서 동작하는 Visual C++ 프로그램을 컴파일 하는 언어 및 수단입니다.NET 프레임워크C++ 프로그램의 일부는 여전히 관리되지 않는 Visual C++ 런타임 내에서 실행되지만 특별히 수정된 부분은 CIL 코드로 변환되어 와 함께 실행됩니다.NET Framework의 CLR.

C++/CLI 컴파일러를 사용하여 컴파일된 어셈블리는 동일한 [22]DLL에 네이티브 코드와 관리 코드가 포함되어 있기 때문에 혼합 모드어셈블리라고 불립니다이러한 어셈블리는 이후 리버스엔지니어링이 더 복잡합니다.등의 NET 디컴파일러NET 리플렉터는 관리 코드만 표시합니다.

설계원칙

상호 운용성

컴퓨터 시스템은 일반적으로 새로운 응용 프로그램과 오래된 응용 프로그램 간의 상호 작용이 필요하기 때문에,NET Framework는 외부에서 실행되는 새로운 프로그램과 오래된 프로그램에서 구현된 기능에 액세스할 수 있는 수단을 제공합니다.NET 환경Component Object Model(COM) 컴포넌트에 대한 액세스는 에서 제공합니다.System. Runtime. InteropServices그리고.System. Enterprise Services프레임워크 네임스페이스입니다.기타 기능에 대한 접근은 Platform Invocation Services(P/Invoke)를 통해 이루어집니다.에의 액세스.네이티브 애플리케이션으로부터의 NET 기능은, 역방향의 P/Invoke 기능을 경유합니다.

언어의 독립성

.NET Framework는 CLR에 의해 지원되는 모든 가능한 데이터 유형과 프로그래밍 구조를 정의하고 CLI 사양에 준거한 상호 작용 방법을 정의하는 Common Type System(CTS; 공통 유형 시스템)을 도입했습니다.이 기능으로 인해,NET Framework는 라이브러리 및 응용 프로그램 간의 유형 및 개체 인스턴스 교환을 지원합니다.NET 언어

형식 안전

에서 사용되는 CTS 및 CLR.NET Framework는 유형 안전도 강화합니다.이렇게 하면 개체에 액세스할 때 잘못 정의된 캐스트, 잘못된 메서드 호출 및 메모리 크기 문제를 방지할 수 있습니다.이것에 의해, 대부분의 CLI 언어(유형 추론 유무에 관계없이)가 정적으로 입력됩니다.단, 로부터 시작합니다.NET Framework 4.0에서는 동적 언어 런타임에 의해 CLR이 확장되어 동적으로 입력된 언어를 CLI 위에 구현할 수 있게 되었습니다.

휴대성

Microsoft 는, Microsoft Windows 이외의 시스템에 완전한 프레임워크를 실장하고 있지 않습니다만, 이 프레임워크는 크로스 [23]플랫폼이 되도록 설계되어 있기 때문에, 그 외의 operating system에서도 실장할 수 있습니다(Silverlight 및 § 대체 실장 참조).Microsoft는 CLI(코어 클래스 라이브러리, CTS 및 CIL [24][25][26]포함), C#[27] 및 C++/CLI[28] 사양을 ECMA(ECMA)와 International Organization for Standardization(ISO) 양쪽에 제출하여 공식 표준으로 제공하고 있습니다.이를 통해 서드파티가 프레임워크와 그 언어의 호환 가능한 구현을 다른 플랫폼에서 작성할 수 있습니다.

보안.

.NET Framework에는 두 가지 일반적인 기능을 가진 자체 보안 메커니즘이 있습니다.Code Access Security(CAS; 코드 액세스보안) 및 검증 및 검증.CAS는 특정 어셈블리와 관련된 증거를 기반으로 합니다.일반적으로 증거는 어셈블리의 소스(로컬머신에 설치되어 있거나 인터넷에서 다운로드되어 있는지 여부)입니다.CAS는 증거를 사용하여 코드에 부여된 권한을 결정합니다.그 외의 코드에서는, 발신자 코드에 특정의 권한을 부여할 필요가 있습니다.이 요구에 따라 CLR은 콜스택 워크를 실행합니다.콜 스택 내의 각 메서드의 모든 어셈블리에 필요한 권한이 체크됩니다.어느 어셈블리에 권한이 부여되지 않으면 보안 예외가 느려집니다.

관리 CIL 바이트 코드는 난독화되지 [29]않는 한 네이티브코드보다 리버스 엔지니어링이 용이합니다.NET 디컴파일러 프로그램을 사용하면 리버스 엔지니어링 기술이 없는 개발자는 해독되지 않은 소스 코드를 볼 수 있습니다.NET 어셈블리이와는 대조적으로 네이티브 머신 코드로 컴파일된 앱은 리버스 엔지니어링이 훨씬 어려우며 소스 코드는 컴파일러 최적화와 [30]반사 부족으로 인해 거의 성공적으로 생성되지 않습니다.이로 인해 비즈니스 커뮤니티에서는 영업비밀의 손실이나 라이선스 관리 메커니즘의 바이패스에 대한 우려가 높아지고 있습니다.이를 완화하기 위해 Microsoft는 Visual Studio와 함께 Dotapsuator Community Edition을 도입했습니다.2002년 [b]이후 NET.VMware, V.i. Labs, Turbo 및 Red Gate Software와 같은 벤더가 제공하는 타사 난독화 툴도 사용할 수 있습니다.의 메서드 수준 암호화 도구.NET 코드는, SafeNet등의 벤더로부터 입수할 수 있습니다.

메모리 관리

CLR은 메모리 관리에 대한 부담으로부터 개발자를 해방합니다(완료 시 할당 및 해방).메모리를 안전하게 해방할 수 있는 타이밍을 검출함으로써 메모리 관리 자체를 처리합니다.의 인스턴스화.NET 타입(오브젝트)은 관리 대상 힙에서 할당됩니다.CLR에 의해 관리되는 메모리 풀입니다.오브젝트에 대한 참조가 존재하는 한 (직접 또는 오브젝트 그래프를 통해) 오브젝트는 사용 중인 것으로 간주됩니다.개체에 대한 참조가 없고 개체에 도달하거나 사용할 수 없는 경우 가비지가 되어 수집에 적합합니다.

.NET Framework에는 응용 프로그램 스레드와 다른 스레드에서 정기적으로 실행되는 가비지 컬렉터(GC)가 포함되어 있으며, 이 가비지 컬렉터는 사용할 수 없는 모든 개체를 열거하고 해당 개체에 할당된 메모리를 회수합니다.이것은 비결정론적 압축, 마크 스위프 가비지 콜렉터입니다.GC는 설정된 양의 메모리가 사용되고 있거나 시스템상의 메모리에 충분한 부하가 걸려 있는 경우에만 실행됩니다.메모리 회수 조건에 도달했을 때는 보증되지 않기 때문에 GC 실행은 비결정적입니다.각 .NET 응용 프로그램에는 루트 세트가 있습니다.루트 세트는 관리 대상 힙(관리 대상 개체) 상의 개체에 대한 포인터입니다.여기에는 정적 개체, 현재 범위 내의 로컬 변수 또는 메서드 매개 변수로 정의된 개체 및 CPU [31]레지스터에 의해 참조되는 개체에 대한 참조가 포함됩니다.GC가 실행되면 응용 프로그램이 일시 중지된 후 루트에서 참조되는 각 개체에 대해 루트 개체에서 도달 가능한 모든 개체를 반복적으로 열거하여 도달 가능한 것으로 표시합니다.CLI 메타데이터와 리플렉션을 사용하여 오브젝트에 의해 캡슐화된 오브젝트를 검출하고 재귀적으로 워크합니다.그런 다음 리플렉션을 사용하여 힙의 모든 개체(처음에는 연속적으로 할당됨)를 열거합니다.연결할 수 없는 개체는 모두 [31]가비지입니다.이것은 목표 [32]단계입니다.가비지가 보유한 메모리는 중요하지 않기 때문에 빈 공간으로 간주됩니다.단, 이로 인해 처음에 인접한 오브젝트 사이에 여유 공간 청크가 남습니다.그런 다음 오브젝트가 압축되어 관리 대상 힙의 빈 공간이 다시 [31][32]연속적으로 확보됩니다.개체를 이동하여 비활성화된 개체에 대한 참조는 [32]새 위치를 반영하도록 GC에 의해 업데이트됩니다.가비지 수집이 종료되면 애플리케이션이 재개됩니다.의 최신 버전.NET 프레임워크는 사용자 코드와 함께 동시 가비지 컬렉션을 사용하여 백그라운드에서 [33]수행되므로 일시 중지가 눈에 띄지 않습니다.

에서 사용되는 가비지 컬렉터.NET Framework도 세대[34]초월한 것입니다.개체에는 세대가 할당됩니다.새로 생성된 개체에는 0세대 태그가 부착됩니다.하나의 가비지 컬렉션에서 살아남은 개체는 1세대 태그가 지정됩니다.다른 컬렉션에서 살아남는 1세대 오브젝트는 2세대 오브젝트입니다.프레임워크는 최대 2세대 개체를 [34]사용합니다.상위 세대 개체는 하위 세대 개체보다 적게 수집되는 가비지입니다.따라서 오래된 개체의 수명이 새 [34]개체보다 긴 경향이 있기 때문에 가비지 수집의 효율성이 향상됩니다.대부분의 수집 실행에서 이전 개체를 무시하면 전체적으로 [34]필요한 검사 및 압축 작업이 줄어듭니다.

성능

응용 프로그램이 처음 실행되었을 때,는NET Framework는 저스트인타임 컴파일러를 사용하여 CIL 코드를 실행 가능한 코드로 컴파일하고 실행 가능한 프로그램을 에 캐시합니다.NET 네이티브 이미지 [35][36]캐시캐싱으로 인해 응용 프로그램은 후속 부팅을 위해 더 빨리 실행되지만 일반적으로 첫 번째 부팅이 더 느립니다.첫 번째 부팅 시간을 단축하기 위해 개발자는 네이티브 이미지 생성 유틸리티를 사용하여 미리 컴파일하여 캐시할 수 있습니다.NET [36]어플리케이션

환경에 통합된 가비지 컬렉터는 개발자가 직접 제어할 수 없는 예기치 않은 실행 지연을 초래할 수 있습니다."대규모 애플리케이션에서는 가비지 컬렉터가 작업해야 하는 오브젝트의 수가 매우 많아질 수 있습니다.즉,[37] 모든 오브젝트를 방문하거나 재배치하는 데 매우 오랜 시간이 걸릴 수 있습니다."

.NET Framework는 Visual Studio 2013 업데이트 2에서 2014년 4월부터 관리 코드를 통해 스트리밍 SIMD 확장(SSE) 호출을 지원합니다.단, Mono에서는 버전 2.2부터 SIMD Extensions를 지원하고 있습니다.2009년 [38]Simd 네임스페이스.Mono의 수석 개발자인 Miguel de Icaza는 이 SIMD 지원이 CLR의 ECMA [39]표준에 따라 채택되기를 희망하고 있습니다.스트리밍 SIMD 확장 기능은 Pentium III가 도입된 이후 x86 CPU에서 사용할 수 있습니다.ARM이나 MIPS 의 다른 아키텍처에도 SIMD 확장이 있습니다.CPU가 이러한 확장을 지원하지 않는 경우 소프트웨어에서 [40][41]명령이 시뮬레이션됩니다.

대체 구현

.NET Framework는 의 주요 구현이었습니다.NET 테크놀로지(릴리스까지).NET. 프레임워크의 일부에 대한 기타 구현이 존재합니다.런타임 엔진은 ECMA-ISO 사양으로 기술되어 있지만, 그 외의 실장은 특허의 문제로 인해 방해될 수 있습니다.ISO 규격에는 면책 조항이 포함될 수 있습니다.「이 문서의 일부 요소가 특허권의 대상이 될 가능성이 있습니다.ISO는 그러한 특허권의 [42]일부 또는 전부를 특정할 책임을 지지 않는다.오픈 스탠다드로 기술되어 있지 않고 저작권 제한을 받을 수 있는 FCL의 대체안을 개발하는 것은 더 어렵습니다.또한 FCL의 일부에는 Windows 고유의 기능과 동작이 있기 때문에 Windows 이외의 플랫폼에서의 실장은 문제가 될 수 있습니다.

프레임워크의 일부에 대한 대체 구현이 여기에 나열되어 있습니다.

  • .NET Micro Framework는 입니다.리소스가 극히 제한된 디바이스를 위한 NET 플랫폼.CLR의 작은 버전을 포함하고 있으며 C#에서의 개발을 지원합니다(단, 일부 개발자는 VB를 사용할 수 있었습니다).Microsoft [43]Visual Studio를 사용하는 NET은 비록 해킹의 양이 많고 기능이 제한적이지만 에뮬레이터 또는 하드웨어에서 디버깅을 수행합니다.의 서브셋도 갖추고 있습니다.NET Framework Class Library(약 420개의 메서드로 구성된 약 70개의 클래스), WPF 기반의 GUI 프레임워크 및 임베디드 애플리케이션 고유의 추가 라이브러리.
  • Mono는 CLI와 FCL을 구현하여 추가 기능을 제공합니다. 소프트웨어는 MIT 라이선스에 따라 무료 소프트웨어로 라이선스됩니다.ASP 지원이 포함되어 있습니다.NET, ADO다양한 아키텍처 및 운영체제용 NET 및 Windows Forms 라이브러리.또한 C#과 VB도 포함됩니다.NET 컴파일러
  • 포터블.NET(DotGNU의 일부)는 CLI, FCL의 일부 및 C# 컴파일러의 구현을 제공합니다.다양한 CPU와 운영체제를 지원합니다.이 프로젝트는 2009년에 마지막으로 안정 발매되면서 중단되었다.
  • Microsoft Shared Source Common Language Infrastructure는 CLR의 무료 구현입니다.단, 마지막 버전은 Windows XP SP2에서만 실행되며 2006년 이후 업데이트되지 않았습니다.따라서 버전 2.0의 모든 기능이 포함되어 있는 것은 아닙니다.NET 프레임워크
  • CrossNet은[44] CLI와 FCL의 일부를 구현한 것입니다.오픈 소스 MIT 라이센스를 사용하는 무료 소프트웨어입니다.

라이선스

Microsoft Managed Code Framework 및 그 컴포넌트는 다음과 같이 라이센스가 부여됩니다.

요소 면허증.
.NET Framework (재전송 가능한 패키지) 독자적인 소프트웨어[45]
의 소스 코드를 참조합니다.NET Framework 4.5 이전 버전 Microsoft 레퍼런스 라이선스(MS-RSL[a])[9][46]
의 소스 코드를 참조합니다.NET 프레임워크 4.6 MIT 라이선스[47]
모노 MIT[48] 라이선스
.NET(구.NET 코어)
CoreFX, CoreCLR 및 CLI
MIT[49] 라이선스
.NET 마이크로 프레임워크 Apache 라이센스 2.0[50]
.NET 컴파일러 플랫폼 (코드명 "Roslyn") MIT[51] 라이선스
ASP.NET MVC, 웹 API 및 웹 페이지(레이저) Apache 라이센스 2[52].0
ASP.NET 코어 Apache 라이센스 2[53].0
ASP.NET Ajax 제어 툴킷 BSD 라이선스[54]
ASP.NET 신호R Apache 라이센스 2[55].0
엔티티 프레임워크 Apache 라이센스 2[56].0
NuGet Apache 라이센스 2[57].0

「 」를 참조해 주세요.

메모들

  1. ^ a b 이 라이선스는 이전에는 Ms-RL로 약칭되어 있었지만, 현재는 Ms-RL로 Microsoft Recommercal Licrosoft 상호 라이선스를 참조하고 있습니다.
  2. ^ Dotphucator Community Edition 4.0

레퍼런스

  1. ^ "Download .NET Framework 4.8 Offline Installer". Microsoft. Archived from the original on August 15, 2019. Retrieved August 15, 2019.
  2. ^ "Microsoft gets on board with open source". Opensource.com. November 19, 2014. Retrieved January 2, 2020.
  3. ^ gewarren. ".NET Framework & Windows OS versions". docs.microsoft.com. Retrieved November 21, 2020.
  4. ^ "Standard ECMA-335: Common Language Infrastructure (CLI)". ecma-international.org (6 ed.). ECMA. June 2012. Archived from the original on June 29, 2013. Retrieved August 31, 2005.
  5. ^ "Standard ECMA-334: C# Language Specification". ecma-international.org (4 ed.). ECMA. June 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
  6. ^ "ISO/IEC 23271:2012 Information technology – Common Language Infrastructure". iso.org (3 ed.). International Organization for Standardization. February 13, 2012.
  7. ^ "ISO/IEC 23270:2006 – Information technology – Programming languages – C#". iso.org (2 ed.). International Organization for Standardization. January 26, 2012. Archived from the original on December 6, 2010. Retrieved April 1, 2008.
  8. ^ "Microsoft's Empty Promise". Free Software Foundation. 16 July 2009. Archived from the original on August 19, 2009. Retrieved August 3, 2009. However, there are several libraries that are included with Mono, and commonly used by applications like Tomboy, that are not required by the standard. And just to be clear, we're not talking about Windows-specific libraries like ASP.NET and Windows Forms. Instead, we're talking about libraries under the System namespace that provide common functionality programmers expect in modern programming languages
  9. ^ a b Guthrie, Scott (3 October 2007). "Releasing the Source Code for the NET Framework". Scott Guthrie's Blog. Microsoft. Archived from the original on September 7, 2010. Retrieved September 15, 2010.
  10. ^ Guthrie, Scott (January 16, 2008). ".NET Framework Library Source Code now available". Scott Guthrie's Blog. Microsoft. Retrieved February 28, 2015.
  11. ^ "Microsoft Patent Promise for .NET Libraries and Runtime Components". GitHub. Archived from the original on February 21, 2021. Retrieved November 16, 2014.
  12. ^ Krill, Paul (April 1, 2016). "Xamarin's Mono runtime gets a looser license". InfoWorld. IDG.
  13. ^ Ferraira, Bruno (March 31, 2016). "Xamarin now comes free with Visual Studio". The Tech Report. Archived from the original on April 2, 2016. Retrieved April 12, 2016.
  14. ^ "Microsoft Patent Promise for Mono". Mono on GitHub. Mono Project. 28 March 2016. Archived from the original on April 16, 2016. Retrieved April 16, 2016.
  15. ^ "Xamarin for Everyone". Xamarin Blog. Xamarin. March 31, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
  16. ^ "Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect 2018". Windows Developer Blog. Microsoft. December 4, 2018. Archived from the original on December 15, 2018. Retrieved December 24, 2018.
  17. ^ rpetrusha. "Compiling Apps with .NET Native". docs.microsoft.com. Archived from the original on December 3, 2017. Retrieved December 2, 2017.
  18. ^ "Base Class Library". Retrieved June 1, 2008.
  19. ^ ".NET Platform Standard". GitHub. Archived from the original on May 19, 2016. Retrieved April 23, 2016.
  20. ^ "An update on ASP.NET Core 1.0 RC2". Retrieved April 23, 2016.
  21. ^ "NuGet Gallery – Home". nuget.org. Archived from the original on February 21, 2021. Retrieved February 21, 2021.
  22. ^ MSDN 웨이백 머신에서 2014년 10월 22일 아카이브된 혼합(원어민관리형) 어셈블리
  23. ^ "Scott Guthrie: Silverlight and the Cross-Platform CLR". Channel 9. 30 April 2007. Archived from the original on May 22, 2015. Retrieved April 16, 2016.
  24. ^ "ECMA 335 – Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006)". ECMA. June 1, 2006. Archived from the original on June 14, 2008. Retrieved June 1, 2008.
  25. ^ "ISO/IEC 23271:2006". Standards.iso.org. September 29, 2006. Archived from the original on July 1, 2018. Retrieved April 17, 2012.
  26. ^ "Technical Report TR/84 Common Language Infrastructure (CLI) – Information Derived from Partition IV XML File". ECMA. 1 June 2006. Archived from the original on March 7, 2015. Retrieved April 16, 2016.
  27. ^ "ECMA-334 C# Language Specification". ECMA. June 1, 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
  28. ^ "Standard ECMA-372 C++/CLI Language Specification". ECMA. December 1, 2005. Archived from the original on August 10, 2008. Retrieved January 16, 2008.
  29. ^ "Hype Cycle for Cyberths, 2006", 2006년 9월, Neil McDonald, Amrit Williams, et al.에 보고된 바와 같이, Gartner, Inc.,
  30. ^ Cifuentes, Cristina (July 1994). "6: Control Flow Analysis" (PDF). Reverse Compilation Techniques (Thesis). Queensland University of Technology. Archived from the original (PDF) on 22 November 2016.
  31. ^ a b c "Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework". Archived from the original on July 3, 2007. Retrieved June 1, 2008.
  32. ^ a b c "Garbage collection in .NET". Archived from the original on May 25, 2008. Retrieved June 1, 2008.
  33. ^ "The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps". Retrieved October 2, 2015.
  34. ^ a b c d "Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework". Archived from the original on June 26, 2007. Retrieved June 1, 2008.
  35. ^ "Understanding .NET Just-In-Time Compilation". telerik.com. May 28, 2013. Archived from the original on June 11, 2013. Retrieved May 21, 2015.
  36. ^ a b 2015년 4월 19일 MSDN Microsoft Wayback Machine에서 MSIL을 네이티브 코드로 컴파일
  37. ^ "Understanding Garbage Collection in .NET". June 17, 2009.
  38. ^ "Release Notes Mono 2.2 – Mono". mono-project.com.
  39. ^ "Mono's SIMD Support: Making Mono safe for Gaming". Tirania.org. November 3, 2008. Archived from the original on November 4, 2010. Retrieved April 17, 2012.
  40. ^ "Mono's SIMD Support: Making Mono safe for Gaming – Miguel de Icaza". tirania.org. Retrieved May 6, 2022.
  41. ^ "SIMD-accelerated types in .NET". docs.microsoft.com. Retrieved May 6, 2022.
  42. ^ ISO 9001:2008, 서문
  43. ^ Fairbairn, Christopher (April 1, 2008). "Using VB.NET with the .NET Micro Framework «/dev/mobile". /dev/mobile. Archived from the original on February 27, 2018. Retrieved April 17, 2012.
  44. ^ "CrossNet". Codeplex.com. Archived from the original on January 25, 2010. Retrieved April 17, 2012.
  45. ^ "Microsoft .NET Framework Redistributable EULA". MSDN. Microsoft. Archived from the original on April 2, 2015. Retrieved February 28, 2015.
  46. ^ Bray, Brandon (August 15, 2012). "Announcing the release of .NET Framework 4.5 RTM – Product and Source Code". .NET Framework Blog. Microsoft. Archived from the original on October 4, 2016. Retrieved August 18, 2016.
  47. ^ "Announcing .NET 2015 Preview: A New Era for .NET". .NET Framework Blog. Microsoft. November 12, 2014. Archived from the original on August 19, 2016. Retrieved August 18, 2016.
  48. ^ "Xamarin for Everyone". Xamarin Blog. Microsoft. April 17, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
  49. ^ ".NET Core 5". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
  50. ^ ".NET Micro Framework". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
  51. ^ "Roslyn License". GitHub. .NET Foundation. February 5, 2020. Archived from the original on March 24, 2018. Retrieved April 14, 2018.
  52. ^ "ASP.NET MVC, Web API and Web Pages (Razor)". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
  53. ^ "ASP.NET Core License". GitHub. .NET Foundation. July 5, 2017. Archived from the original on February 21, 2021. Retrieved April 14, 2018.
  54. ^ "ASP.NET Ajax Control Toolkit". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
  55. ^ "ASP.NET SignalR". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
  56. ^ "Entity Framework". dotnetfoundation.org. .NET Foundation. Archived from the original on 18 April 2016. Retrieved 16 April 2016.
  57. ^ "NuGet". dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.

외부 링크