닷넷 프레임워크
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
닷넷 프레임워크(.NET Framework)는 마이크로소프트가 개발한 소프트웨어 개발 플랫폼으로, 1990년대 후반부터 개발이 시작되어 2002년 첫 버전이 출시되었다. 닷넷 프레임워크는 언어에 독립적인 개발 및 실행 환경인 공통 언어 기반(CLI)을 핵심으로 하며, 메모리 관리, 형식 안전성, 상호 운용성, 보안, 성능 등 다양한 기능을 제공한다. 여러 버전을 거치며 기능이 개선되었으며, 마이크로소프트 비주얼 스튜디오 등 다양한 개발 환경에서 지원된다. 2014년부터는 일부가 오픈 소스로 공개되었으며, 마이크로소프트 외에도 Mono 등의 다른 구현체가 존재한다.
더 읽어볼만한 페이지
- 마이크로소프트 개발 도구 - 비주얼 스튜디오
비주얼 스튜디오는 마이크로소프트가 개발한 통합 개발 환경(IDE)으로, 다양한 프로그래밍 언어와 플랫폼을 지원하며 소프트웨어 개발에 필요한 도구와 기능을 제공한다. - 마이크로소프트 개발 도구 - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 닷넷 프레임워크 - 파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다. - 닷넷 프레임워크 - 유니버설 윈도우 플랫폼
유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다. - 2002년 소프트웨어 - 아이포토
아이포토는 애플에서 개발한 디지털 사진 관리 및 편집 소프트웨어로, macOS와 iOS에서 사진 관리, 편집, 공유 기능을 제공했으나 macOS 카탈리나 10.15부터 공식 지원이 중단되었다. - 2002년 소프트웨어 - 젠투 리눅스
젠투 리눅스는 다니엘 로빈스에 의해 개발된 소스 기반의 리눅스 배포판이며, 포티지 패키지 관리 시스템을 사용하여 높은 사용자 정의와 유연성을 제공하고 다양한 아키텍처를 지원한다.
닷넷 프레임워크 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발사 | 마이크로소프트 |
출시일 | 2002년 2월 13일 |
최신 버전 | 4.8.1 |
최신 버전 출시일 | 2022년 8월 9일 |
대체 대상 | .NET |
운영 체제 | 윈도우 98 이상 윈도우 NT 4.0 이상 |
플랫폼 | IA-32 x86-64 ARM |
포함 대상 | 마이크로소프트 윈도우 |
종류 | 소프트웨어 프레임워크 |
라이선스 | 혼합; 라이선스 섹션 참고 |
웹사이트 | .NET Framework 웹사이트 |
상세 정보 | |
지원 종료 | 보안 업데이트 및 버그 수정만 지원 |
2. 역사
마이크로소프트는 1990년대 후반, Next Generation Windows Services (NGWS)라는 이름으로 .NET 전략의 일환으로 닷넷 프레임워크 개발을 시작했다. 2000년 초에 .NET 1.0의 첫 번째 베타 버전이 출시되었다.[4]
2000년 8월, 마이크로소프트와 인텔은 공용 언어 인프라 (CLI) 및 C#을 표준화하기 위해 협력했다. 2001년 12월까지 두 가지 모두 ECMA 표준으로 비준되었고,[5] 2003년 4월에는 국제 표준화 기구 (ISO) 표준으로도 채택되었다.[6][7]
마이크로소프트와 파트너는 CLI 및 C#에 대한 특허를 보유하고 있지만, ECMA와 ISO는 구현에 필수적인 모든 특허를 "합리적이고 비차별적인 조건"으로 제공해야 한다고 요구했다. 기업들은 이러한 조건을 충족하고 특허를 로열티 없이 제공하기로 합의했다. 그러나 이것은 Windows Forms, ADO.NET, 및 ASP.NET을 포함하여 ECMA-ISO 표준에 포함되지 않은 .NET Framework의 일부에는 적용되지 않았다.[8]
2007년 10월 3일, 마이크로소프트는 .NET Framework 3.5 라이브러리의 소스 코드가 공개될 것이라고 발표했다.[9] 2008년 1월 16일에는 소스 코드 저장소가 온라인으로 제공되었으며 BCL, ASP.NET, ADO.NET, Windows Forms, WPF 및 XML을 포함했다. 마이크로소프트의 Scott Guthrie는 LINQ, WCF 및 WF 라이브러리가 추가될 것이라고 약속했다.[10]
2014년 11월, 마이크로소프트는 특허 부여에 대한 업데이트를 발표했다. Mono와 같은 이전 프로젝트는 마이크로소프트의 이전 부여가 "포함된 사양"의 기술에만 적용되었기 때문에 법적 회색 영역에 존재했다. 그러나 새로운 특허 약속은 사양 버전에 제한을 두지 않으며, 프로젝트에서 구현을 선택하는 경우 ECMA 그룹에서 공식적으로 지정하지 않은 MSDN에 문서화된 모든 .NET 런타임 기술까지 확장된다.[11]
2016년 3월 31일, 마이크로소프트는 마이크로소프트 빌드에서 Mono를 MIT 라이선스로 완전히 재라이선스할 것이라고 발표했다.[12] 또한 Mono에 대한 이전 특허 약속을 보완하여 "Mono를 사용, 판매, 판매 제안, 수입 또는 배포"하는 당사자에 대해 어떠한 "해당 특허"도 주장하지 않을 것이라고 밝혔다.[13][14] Mono 프로젝트가 .NET 재단에 기여했다는 발표도 있었다.[15]
2018년 12월 4일, 마이크로소프트는 WPF, Windows Forms 및 WinUI에 대한 소스 코드를 공개했다.[16]
3. 아키텍처
.NET Framework는 응용 프로그램 개발 및 실행을 위한 언어 중립적인 플랫폼을 제공한다.
.NET Framework의 핵심 구성 요소는 공통 언어 기반(CLI)이며, 마이크로소프트는 이를 공통 언어 런타임(CLR)으로 구현했다. CLI는 언어에 종속되지 않는 개발 및 실행 환경을 제공하는 것을 목표로 한다.
CLR, 어셈블리, 메타데이터, 클래스 라이브러리, C++/CLI 등에 대한 자세한 내용은 하위 섹션에서 확인할 수 있다.
3. 1. 공통 언어 기반 (CLI)
.NET 프레임워크의 가장 중요한 구성 요소는 공통 언어 기반(CLI)이다. CLI의 목적은 애플리케이션 개발 및 실행 시 언어에 종속되지 않는 플랫폼을 제공하는 것이다. 여기에는 예외 처리, 가비지 컬렉션, 보안, 호환 등을 위한 소프트웨어 콤포넌트가 포함된다. 마이크로소프트가 구현한 CLI는 공통 언어 런타임(CLR)이라고 불린다.
CLR은 다음의 5가지 주요 항목으로 구성된다.3. 2. 공통 언어 런타임 (CLR)
.NET Framework는 공용 언어 런타임(CLR)을 포함한다. CLR은 .NET Framework의 실행 엔진 역할을 하며, 메모리 관리, 형식 안전성, 예외 처리, 가비지 컬렉션, 보안 및 스레드 관리와 같은 많은 서비스를 제공한다. .NET Framework용으로 작성된 모든 프로그램은 CLR에 의해 실행된다.
.NET Framework용으로 작성된 프로그램은 공통 중간 언어 코드(CIL)로 컴파일되며, 기계어로 직접 컴파일되지 않는다. 실행 중에 아키텍처별 Just-in-time 컴파일러(JIT)가 CIL 코드를 기계어로 변환한다.
3. 3. 어셈블리
중간 언어(MSIL) 코드는 닷넷 어셈블리에 저장된다. 닷넷 어셈블리는 윈도우 구현에서 포터블 익스큐터블(PE) 파일(EXE 혹은 DLL 파일)이 된다. 닷넷 어셈블리는 소프트웨어 배포, 버전 관리, 보안 등에 있어서 .NET 유닛 역할을 한다. 어셈블리는 하나 이상의 파일로 구성되는데, 그 중 하나는 매니페스트를 반드시 포함해야 한다. 어셈블리의 완전한 이름은 간단한 텍스트 이름, 버전 번호, 문화, 공개 키 암호 방식(public key영어) 토큰 등으로 구성된다. 이름은 반드시 있어야 하지만, 나머지는 없어도 된다. 공개 키 암호 토큰은 어셈블리가 작성될 때 생성되며 어셈블리의 이름과 파일들의 내용을 대표하는 고유의 값이다. 비밀 열쇠 암호는 어셈블리 작성자에게만 알려진다. 같은 공개 열쇠 암호 토큰을 가진 두 어셈블리는 같은 어셈블리라는 것이 보장된다. 해커 등에 의해 어셈블리가 함부로 변경되면, 공개 열쇠 암호를 이용하여 어셈블리가 변경되었는지 감지할 수 있다.[17]
컴파일된 CIL 코드는 CLI 어셈블리에 저장된다. 명세에 따라 어셈블리는 PE 파일 형식으로 저장되며, 이는 Windows 플랫폼에서 모든 동적 링크 라이브러리(DLL) 및 실행 파일 EXE 파일에 공통적으로 사용된다. 각 어셈블리는 하나 이상의 파일로 구성되며, 그 중 하나는 어셈블리에 대한 메타데이터를 담고 있는 매니페스트를 포함해야 한다. 어셈블리의 전체 이름(디스크의 파일 이름과 혼동해서는 안 됨)에는 간단한 텍스트 이름, 버전 번호, 문화, 그리고 공개 키 토큰이 포함된다. 어셈블리는 동일한 전체 이름을 공유하는 경우 동일한 것으로 간주된다.
어셈블리 작성자는 강력한 이름 지정을 위해 개인 키를 사용할 수도 있다. 공개 키 토큰은 어셈블리 서명자의 실제 신원을 결정한다. 개인 키(이중 키 암호화 시스템)를 아는 사람만이 이전 버전 어셈블리와 동일한 강력한 이름을 가진 어셈블리에 서명할 수 있다. 강력한 이름 지정은 어셈블리를 전역 어셈블리 캐시에 추가하는 데 필요하다.
CIL 코드는 어셈블리 (Windows에서는 PE 형식) 안에 저장된다. 어셈블리는 배치, 버전, 보안의 단위이다.
3. 4. 메타데이터
모든 공통 중간 언어(CIL)는 닷넷 메타데이터를 통해 "스스로 기술"된다.[1] CLR은 적절한 메소드가 불리는지를 보장하기 위해 메타데이터를 검사한다.[1] 메타데이터는 보통 랭귀지 컴파일러에 의해 생성되지만, 개발자가 커스텀 애트리뷰트를 사용하여 자신만의 메타데이터를 작성할 수도 있다.[1] 메타데이터는 어셈블리에 대한 모든 정보를 담고 있다.[1]3. 5. 클래스 라이브러리
공통 언어 기반(CLI)의 기본적인 표준 라이브러리 구현을 포함하고 있는 닷넷 프레임워크 클래스 라이브러리(FCL)는 네임스페이스의 계층 구조로 구성되어 있다. 대부분의 내장 응용 프로그래밍 인터페이스(API)는 `System.*` 또는 `Microsoft.*` 네임스페이스의 일부이다. 이러한 클래스 라이브러리는 파일 읽기 및 쓰기, 그래픽 렌더링, 데이터베이스 상호 작용 및 XML 문서 조작과 같은 많은 공통 기능을 구현한다.[18] 클래스 라이브러리는 모든 CLI 호환 언어에서 사용할 수 있다. FCL은 CLI 기본 클래스 라이브러리(BCL) 및 기타 클래스 라이브러리를 구현하며, 일부는 CLI에 의해 지정되고 다른 일부는 Microsoft 고유이다.
BCL에는 전체 클래스 라이브러리의 작은 하위 집합이 포함되어 있으며 CLR의 기본 API 역할을 하는 핵심 클래스 집합이다.[18] .NET Framework의 경우 BCL에 속하는 것으로 간주되는 대부분의 클래스는 `mscorlib.dll`, `System.dll` 및 `System.Core.dll`에 있다. BCL 클래스는 .NET Framework와 .NET Compact Framework, Microsoft Silverlight, .NET Core 및 Mono를 포함한 CLI의 대체 구현에서 사용할 수 있다.
FCL은 .NET Framework와 함께 제공되는 전체 클래스 라이브러리를 나타낸다. 여기에는 BCL, Windows Forms, ASP.NET, Windows Presentation Foundation(WPF)를 포함하는 확장된 라이브러리 세트와 ADO.NET, Language Integrated Query(LINQ), Windows Communication Foundation(WCF) 및 Workflow Foundation(WF)에 대한 기본 클래스 라이브러리의 확장 기능이 포함된다. FCL은 C++와 같은 언어의 표준 라이브러리보다 범위가 훨씬 크며, 자바의 표준 라이브러리와 범위가 비슷하다.
3. 6. C++/CLI
마이크로소프트는 비주얼 스튜디오 2005에서 C++/CLI를 도입했는데, 이는 비주얼 C++ 프로그램을 닷넷 프레임워크 내에서 실행하도록 컴파일하는 언어이자 수단이다. C++ 프로그램의 일부는 여전히 언매니지드 비주얼 C++ 런타임 내에서 실행되는 반면, 특별히 수정된 부분은 CIL 코드로 변환되어 닷넷 프레임워크의 CLR에서 실행된다.
C++/CLI 컴파일러를 사용하여 컴파일된 어셈블리는 동일한 DLL에 네이티브 코드와 매니지드 코드를 모두 포함하고 있기 때문에 혼합 모드 어셈블리라고 한다.[22] 이러한 어셈블리는 .NET 디컴파일러인 .NET 리플렉터와 같은 도구가 매니지드 코드만 표시하기 때문에 리버스 엔지니어링하기가 더 복잡하다.
4. 설계 원칙
닷넷 프레임워크는 상호 운용성, 공통 실행 환경, 언어 독립성, 기본 클래스 라이브러리(BCL), 소프트웨어 배포, 보안 등 여러 가지 설계 원칙을 바탕으로 만들어졌다.
- 상호 운용성: 닷넷 프레임워크는 기존의 다른 프로그램들과도 잘 작동하도록 설계되었다. 예를 들어, COM 구성 요소와의 연결을 지원한다.
- 공통 실행 환경: 모든 닷넷 프로그램은 공통 중간 언어라는 중간 언어로 번역된 후, 실행 시점에 컴퓨터가 이해할 수 있는 코드로 바뀌어 실행된다.
- 언어 독립성: 공통 형식 시스템 덕분에 여러 프로그래밍 언어를 함께 사용할 수 있다.
- 기본 클래스 라이브러리 (BCL): 파일 처리, 그래픽, 데이터베이스 등 자주 쓰이는 기능들을 미리 만들어 놓은 클래스 라이브러리를 제공한다.
- 소프트웨어 배포: 소프트웨어 설치 시 발생할 수 있는 문제점(다른 소프트웨어와의 충돌, 보안 문제 등)을 해결하기 위한 기능을 제공한다.
- 보안: 닷넷 프레임워크는 코드에 권한을 주는 방식으로 보안을 유지한다.
이 외에도, 닷넷 프레임워크는 형식 안전성, 이식성, 메모리 관리, 성능 등 다양한 면을 고려하여 설계되었다.
4. 1. 상호 운용성
.NET 애플리케이션이나 .NET 클래스 라이브러리가 아닌 프로그램과의 상호 운용을 가능하게 하는 접근 방법을 제공한다. 예를 들어 COM 구성 요소에 대한 액세스는 `System.Runtime.InteropServices` 및 `System.EnterpriseServices` 네임스페이스를 통해 제공되며, 그 외 기능은 P/Invoke를 통해 제공된다.4. 2. 언어 독립성
닷넷 프레임워크는 공통 형식 시스템(CTS)이라는 개념을 도입했다. 공통 형식 시스템 사양에는 공통 언어 런타임에서 지원되는 데이터 형식이 정의되어 있다. 이 덕분에 여러 언어를 사용한 개발이 가능해진다.[1] 모든 CLI 호환 언어로 작성된 라이브러리와 애플리케이션 간의 형식 및 개체 인스턴스 교환을 지원한다.[1]4. 3. 형식 안전성
.NET Framework에서 사용되는 CTS와 CLR은 형식 안전성을 보장한다. 이는 잘못 정의된 캐스팅, 잘못된 메서드 호출, 객체 접근 시 메모리 크기 문제를 방지한다. 또한 대부분의 CLI 언어를 정적으로 형식화한다(형식 유추 포함 여부와 관계없이). 그러나 .NET Framework 4.0부터 동적 언어 런타임이 CLR을 확장하여 동적으로 형식화된 언어를 CLI 위에 구현할 수 있게 되었다.[1]4. 4. 이식성
마이크로소프트는 마이크로소프트 윈도우를 제외한 다른 시스템에서는 전체 프레임워크를 구현한 적이 없지만, 프레임워크가 크로스 플랫폼을 지원하도록 설계되었으며,[23] 다른 운영 체제에서도 구현이 가능하다. 마이크로소프트는 CLI(기본 클래스 라이브러리, CTS 및 CIL 포함)[24][25][26], C#[5] 및 C++/CLI[27]에 대한 사양을 ECMA 인터내셔널 (ECMA) 및 국제 표준화 기구 (ISO)에 제출하여 공식 표준으로 만들었다. 이를 통해 제3자가 다른 플랫폼에서 프레임워크와 해당 언어의 호환 가능한 구현을 만들 수 있다.크로스 플랫폼 .NET (이전의 .NET Core)은 공식적으로 여러 리눅스 배포판 및 macOS에서도 사용할 수 있다.[28]
4. 5. 보안
.NET Framework는 자체 보안 메커니즘을 갖추고 있으며, 이는 코드 접근 보안(CAS)과 유효성 검사 및 확인이라는 두 가지 특징으로 구성된다. CAS는 어셈블리의 출처(로컬 설치 또는 인터넷 다운로드 등)와 같은 증거를 기반으로 코드에 권한을 부여한다. 코드가 특정 권한을 요구하면, CLR은 호출 스택을 검사하여 각 메서드의 모든 어셈블리에 필요한 권한이 있는지 확인하고, 권한이 없는 어셈블리가 있으면 보안 예외를 발생시킨다.[17]관리 코드의 공통 중간 언어(CIL) 바이트 코드는 난독화되지 않은 경우 네이티브 코드보다 역공학이 더 쉽다.[29] .NET 디컴파일러를 사용하면 난독화되지 않은 .NET 어셈블리의 소스 코드를 쉽게 볼 수 있어[30] 영업 비밀 유출 및 라이선스 우회 가능성이 제기된다. 이를 막기 위해 마이크로소프트는 Visual Studio .NET에 Dotfuscator Community Edition을 포함시켰으며, 타사 난독화 도구도 사용 가능하다.
4. 6. 메모리 관리
CLR은 가비지 컬렉터(GC)를 통해 메모리 관리를 자동화한다. 개발자는 메모리 할당 및 해제에 대한 부담을 덜 수 있으며, CLR이 메모리를 안전하게 해제할 수 있는 시점을 감지하여 자체적으로 처리한다. .NET 형식(객체)의 인스턴스는 CLR에서 관리하는 메모리 풀인 관리 힙에 할당된다.[31] 객체에 대한 참조가 존재하면 객체는 사용 중인 것으로 간주되고, 참조가 없으면 가비지가 되어 수집 대상이 된다..NET Framework의 GC는 응용 프로그램의 스레드와 별도의 스레드에서 주기적으로 실행되며, 다음과 같은 특징을 가진다.
- 비결정적: GC는 일정량의 메모리가 사용되었거나 시스템에 메모리 압력이 충분할 때 실행되므로, 실행 시점을 정확히 예측할 수 없다.[31]
- 압축: 가비지가 보유한 메모리는 사용 가능한 공간으로 간주되지만, 이로 인해 객체 사이에 사용 가능한 공간 덩어리가 남게 된다. GC는 객체들을 함께 압축하여 관리 힙의 사용 가능한 공간을 다시 연속적으로 만든다.[31][32]
- 마크 앤 스윕: GC는 루트 집합에서 도달 가능한 모든 객체를 열거하고 도달 가능한 것으로 표시한다. 도달 가능으로 표시되지 않은 객체는 가비지로 간주한다.[31]
- 세대별: 객체에는 세대가 할당된다. 새로 생성된 객체는 세대 0, 한 번의 가비지 수집에서 살아남은 객체는 세대 1, 두 번 살아남은 객체는 세대 2로 태그된다. 높은 세대 객체는 낮은 세대 객체보다 덜 자주 가비지 수집된다. 이는 오래된 객체가 새로운 객체보다 수명이 긴 경향이 있기 때문이며, 가비지 수집의 효율성을 높인다.[34]
- 동시 가비지 수집: 최신 버전의 .NET Framework는 사용자 코드와 함께 백그라운드에서 동시 가비지 수집을 수행하여 응용 프로그램의 일시 중지 시간을 최소화한다.[33]
4. 7. 성능
.NET 프레임워크는 애플리케이션이 처음 시작될 때, CIL 코드를 JIT 컴파일러를 사용하여 실행 가능한 코드로 컴파일하고, 실행 프로그램을 .NET 네이티브 이미지 캐시에 캐시한다.[35][36] 캐싱 덕분에 애플리케이션은 이후 실행 시 더 빠르게 시작되지만, 처음 시작은 일반적으로 더 느리다. 첫 시작 속도를 높이기 위해, 개발자는 네이티브 이미지 생성기 유틸리티를 사용하여 .NET 애플리케이션을 미리 컴파일하고 캐시할 수 있다.[36]환경에 통합된 가비지 수집기는 개발자가 직접 제어할 수 없는 예기치 않은 실행 지연을 일으킬 수 있다. "대규모 애플리케이션에서는 가비지 수집기가 처리해야 하는 객체의 수가 매우 커질 수 있으며, 이는 모든 객체를 방문하고 재정렬하는 데 매우 오랜 시간이 걸릴 수 있음을 의미한다."[37]
.NET 프레임워크는 2014년 4월 Visual Studio 2013 Update 2부터 관리 코드를 통해 SSE 호출을 지원한다. 그러나 Mono는 2009년 Mono.Simd영어 네임스페이스 내에서 버전 2.2부터 SIMD 확장을 지원해 왔다.[38] Mono의 수석 개발자 미겔 데 이카자는 이 SIMD 지원이 CLR의 ECMA 표준에 채택되기를 희망한다고 밝혔다.[39] 스트리밍 SIMD 확장은 펜티엄 III의 도입 이후 x86 CPU에서 사용 가능했다. ARM 및 MIPS와 같은 다른 일부 아키텍처도 SIMD 확장을 가지고 있다. CPU가 해당 확장을 지원하지 않는 경우, 명령은 소프트웨어로 시뮬레이션된다.[40][41]
5. 버전별 주요 기능
.NET Framework는 여러 버전을 거치면서 새로운 기능이 추가되고 성능이 개선되었다. 주요 버전별 주요 기능은 다음과 같다.
버전 | 주요 기능 |
---|---|
1.0 | 닷넷 프레임워크의 핵심 구성 요소 및 기본 프로그래밍 언어를 처음으로 완성[82] |
1.1 | ADO.NET에 오라클 데이터베이스, ODBC, OLE DB 지원 추가, ASP.NET 기능 강화[82] |
2.0 | 제네릭 프로그래밍을 가능하게 하는 제네릭 도입, ADO.NET 및 ASP.NET에 새로운 프로그래밍 기술 추가, AMD64 프로세서용 버전 처음 발표, 윈도우 2000 마지막 지원[82] |
3.0 (WinFX) | 버전 2.0 기반, 윈도우 프레젠테이션 파운데이션, 윈도우 커뮤니케이션 파운데이션, 윈도우 워크플로 파운데이션, 윈도우 카드스페이스 4대 주요 기능 추가, 윈도우 XP, 윈도우 서버 2003, 윈도우 비스타에서 사용 가능[82] |
3.5 | 버전 3.0 기반, 언어 내장 쿼리 추가, C# 3.0, 비주얼 베이직 닷넷 9.0 등 기존 언어 기능 대폭 향상[82] |
4.0 | 병렬 처리를 위한 Parallel Extension 및 Parallel Linq (PLinq) 추가, C# 4.0에 다이나믹 타입 추가, 임의 정밀도 정수, 복소수 타입 추가[82] |
4.5 | 메트로 스타일 앱 개발 공식 지원, 비동기 처리 기능이 추가된 C# 5.0 및 비주얼 베이직 닷넷 지원[82] |
4.8 | 윈폼 및 WPF에서 UWP의 컨트롤을 호스팅하는 것이 가능[82] |
6. 개발 환경
마이크로소프트는 C#, VB.NET, F#, JScript .NET 컴파일러 및 SDK를 포함한 다양한 도구들을 무료로 제공한다. 이러한 도구들을 활용하여 닷넷 프레임워크 기반의 소프트웨어를 개발할 수 있다.
닷넷 프레임워크 개발을 지원하는 통합 개발 환경(IDE)으로는 비주얼 스튜디오, 비주얼 스튜디오 코드, JetBrains Rider 등이 있다. SharpDevelop(2016년 종료), 델파이 (Embarcadero Prism, 2012년 종료), Borland C# Builder (2006년 종료)와 같은 IDE들도 닷넷 프레임워크 개발을 지원했었다. 이러한 IDE들은 닷넷 프레임워크 뿐만 아니라, 호환 환경인 Mono 및 .NET Core도 지원한다.
6. 1. 통합 개발 환경 (IDE)
마이크로소프트 비주얼 스튜디오비주얼 스튜디오 코드
JetBrains Rider
SharpDevelop (2016년 종료)
델파이 - Embarcadero Prism (2012년 종료)
Borland C# Builder (2006년 종료)
위에 언급된 개발 환경들은 .NET Framework 뿐만 아니라, 호환 환경인 Mono 및 .NET Core도 지원한다.
6. 2. 기타 도구
마이크로소프트는 C#, VB.NET, F#, JScript .NET 컴파일러 및 SDK를 포함한 다양한 도구들을 무료로 제공한다. 또한, JetBrains의 ReSharper와 같은 비주얼 스튜디오 플러그인을 사용할 수 있다.7. 오픈 소스화
2014년 11월 12일, 마이크로소프트는 "Connect();" 이벤트에서 .NET Framework의 일부를 MIT 라이선스 하에 공개한다고 발표했다.[59] 공개된 항목은 다음과 같다.
항목 |
---|
.NET Framework 4.6 참조 소스 |
ASP.NET 5 |
Entity Framework 6 |
.NET Core 1.0 (발표 당시에는 5) |
.NET 컴파일러 플랫폼 ("Roslyn") |
이는 제품 수준의 구현이며, 셰어드 소스 구현은 아니다. 대상 플랫폼에는 기존의 Windows 플랫폼 외에 리눅스와 OS X도 포함된다.
.NET Framework 4.6 참조 소스가 MIT 라이선스로 공개되면서, Mono 4.0에 통합되었다.[60]
8. 마이크로소프트 이외의 구현
.NET Framework는 .NET이 출시되기 전까지 공통 언어 기반(CLI)의 주요 구현체였다. 런타임 엔진은 ECMA-ISO 사양으로 설명되어 있지만, 이에 대한 다른 구현체는 특허 문제에 얽매일 수 있다.[42] FCL은 개방형 표준으로 설명되지 않으며 저작권 제한의 대상이 될 수 있어 FCL의 대체 버전을 개발하기가 더 어렵다. 또한 FCL의 일부는 Windows 전용 기능과 동작을 가지고 있어 Windows가 아닌 플랫폼에서의 구현이 문제가 될 수 있다.
CLI은 ECMA 인터내셔널, ISO, JIS에서 표준화되어,[61][62][63] 마이크로소프트 이외의 벤더가 독자적으로 구현할 수도 있다. Xamarin의 Mono 프로젝트를 비롯하여 여러 오픈 소스 구현 프로젝트가 있다.
이 외에도 .NET Micro Framework, CrossNet,[44] .net by au 등의 대체 구현체가 있다.
8. 1. 주요 구현체
- Mono: Xamarin이 개발한 오픈 소스 구현체로, 리눅스, macOS 등 다양한 플랫폼을 지원한다. CLI 및 FCL 구현체이며 추가 기능을 제공하고, MIT 라이선스에 따라 자유 소프트웨어로 라이선스가 부여된다. C# 및 VB.NET 컴파일러도 포함한다.[42]
- .NET Core: 마이크로소프트의 크로스 플랫폼, 오픈 소스 레퍼런스 구현체이다. 2016년 6월 27일에 v1.0이 릴리스되었다.[65]
- DotGNU: CLI, FCL 일부, C# 컴파일러를 제공하는 오픈 소스 프로젝트이다. 다양한 CPU 및 운영 체제를 지원한다. 이 프로젝트는 중단되었으며, 마지막 안정적인 릴리스는 2009년에 이루어졌다.
- Shared Source CLI: 마이크로소프트의 비자유 공유 소스 구현체이다. 그러나 마지막 버전은 Windows XP SP2에서만 실행되며, 2006년 이후로 업데이트되지 않았다. 따라서 .NET Framework 버전 2.0의 모든 기능을 포함하지 않는다.[42]
- IKVM.NET: 공용 언어 런타임 상에서 Java 가상 머신의 구현을 시도하는 오픈 소스 프로젝트이다.
- .NET Micro Framework: 리소스가 매우 제한적인 장치를 위한 .NET 플랫폼이다. CLR의 소형 버전을 포함하며 C# 및 Microsoft Visual Studio를 사용하여 에뮬레이터 또는 하드웨어에서 개발 및 디버깅을 지원한다. 또한 .NET Framework 클래스 라이브러리의 하위 집합과 WPF를 기반으로 하는 GUI 프레임워크, 그리고 임베디드 애플리케이션에 특정한 추가 라이브러리를 갖추고 있다.[42]
참조
[1]
웹사이트
Download .NET Framework 4.8 Offline Installer
https://dotnet.micro[...]
2019-08-15
[2]
웹사이트
Microsoft gets on board with open source
https://opensource.c[...]
2020-01-02
[3]
웹사이트
.NET Framework & Windows OS versions
https://docs.microso[...]
2020-11-21
[4]
웹사이트
Standard ECMA-335: Common Language Infrastructure (CLI)
http://www.ecma-inte[...]
ECMA International
2005-08-31
[5]
웹사이트
Standard ECMA-334: C# Language Specification
http://www.ecma-inte[...]
Ecma International
2005-08-31
[6]
웹사이트
ISO/IEC 23271:2012 Information technology – Common Language Infrastructure
http://www.iso.org/i[...]
International Organization for Standardization
2012-03-17
[7]
웹사이트
ISO/IEC 23270:2006 – Information technology – Programming languages – C#
http://www.iso.org/i[...]
International Organization for Standardization
2008-04-01
[8]
웹사이트
Microsoft's Empty Promise
http://www.fsf.org/n[...]
2009-08-03
[9]
웹사이트
Releasing the Source Code for the NET Framework
http://weblogs.asp.n[...]
Microsoft
2010-09-15
[10]
웹사이트
.NET Framework Library Source Code now available
https://weblogs.asp.[...]
Microsoft
2008-01-16
[11]
웹사이트
Microsoft Patent Promise for .NET Libraries and Runtime Components
https://github.com/d[...]
2014-11-16
[12]
웹사이트
Xamarin's Mono runtime gets a looser license
http://www.infoworld[...]
IDG
2016-04-13
[13]
웹사이트
Xamarin now comes free with Visual Studio.
http://techreport.co[...]
2016-04-12
[14]
웹사이트
Microsoft Patent Promise for Mono
https://github.com/m[...]
2016-04-16
[15]
웹사이트
Xamarin for Everyone
2016-04-12
[16]
웹사이트
Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect 2018
https://blogs.window[...]
Microsoft
2018-12-24
[17]
웹사이트
Compiling Apps with .NET Native
https://docs.microso[...]
2017-12-02
[18]
웹사이트
Base Class Libraries Community
https://msdn.microso[...]
2008-06-01
[19]
웹사이트
.NET Platform Standard
https://github.com/d[...]
2016-04-23
[20]
웹사이트
An update on ASP.NET Core 1.0 RC2
http://www.hanselman[...]
2016-04-23
[21]
웹사이트
NuGet Gallery – Home
https://nuget.org
2021-02-21
[22]
문서
Mixed (Native and Managed) Assemblies
https://msdn.microso[...]
[23]
웹사이트
Scott Guthrie: Silverlight and the Cross-Platform CLR
https://channel9.msd[...]
Channel 9 (discussion forum)
2016-04-16
[24]
웹사이트
ECMA 335 – Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006)
http://www.ecma-inte[...]
ECMA
2008-06-01
[25]
웹사이트
ISO/IEC 23271:2006
http://standards.iso[...]
ISO Standards
2012-04-17
[26]
웹사이트
Technical Report TR/84 Common Language Infrastructure (CLI) – Information Derived from Partition IV XML File
http://www.ecma-inte[...]
ECMA
2016-04-16
[27]
웹사이트
Standard ECMA-372 C++/CLI Language Specification
http://www.ecma-inte[...]
ECMA
2008-01-16
[28]
웹사이트
.NET Goes Cross-Platform with .NET Core
https://learn.micros[...]
2024-02-19
[29]
간행물
Hype Cycle for Cyberthreats, 2006
Gartner, Inc.
2006-09
[30]
논문
Reverse Compilation Techniques
Queensland University of Technology
1994-07
[31]
웹사이트
Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework
https://msdn.microso[...]
2008-06-01
[32]
웹사이트
Garbage collection in .NET
http://www.csharphel[...]
2008-06-01
[33]
웹사이트
The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps
https://blogs.msdn.m[...]
2015-10-02
[34]
웹사이트
Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework
https://msdn.microso[...]
2008-06-01
[35]
웹사이트
Understanding .NET Just-In-Time Compilation
http://blogs.telerik[...]
2015-05-21
[36]
웹사이트
Compiling MSIL to Native Code
https://msdn.microso[...]
MSDN, Microsoft
2015-04-19
[37]
웹사이트
Understanding Garbage Collection in .NET
https://www.red-gate[...]
2009-06-17
[38]
웹사이트
Release Notes Mono 2.2 – Mono
http://www.mono-proj[...]
2016-11-22
[39]
웹사이트
Mono's SIMD Support: Making Mono safe for Gaming
Tirania.org
2008-11-03
[40]
웹사이트
Mono's SIMD Support: Making Mono safe for Gaming
https://tirania.org/[...]
2008-11-03
[41]
웹사이트
SIMD-accelerated types in .NET
https://docs.microso[...]
2022-05-06
[42]
문서
ISO 9001:2008, Foreword
[43]
웹사이트
Using VB.NET with the .NET Micro Framework «/dev/mobile
http://www.christec.[...]
2008-04-01
[44]
웹사이트
CrossNet
https://www.codeplex[...]
Codeplex.com
2012-04-17
[45]
웹사이트
Microsoft .NET Framework Redistributable EULA
https://msdn.microso[...]
Microsoft
2006-09-13
[46]
웹사이트
Announcing the release of .NET Framework 4.5 RTM – Product and Source Code
https://blogs.msdn.m[...]
Microsoft
2012-08-15
[47]
웹사이트
Announcing .NET 2015 Preview: A New Era for .NET
https://blogs.msdn.m[...]
Microsoft
2014-11-12
[48]
웹사이트
.NET Core 5
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[49]
웹사이트
.NET Micro Framework
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[50]
웹사이트
Roslyn License
https://github.com/d[...]
.NET Foundation
2020-02-05
[51]
웹사이트
ASP.NET MVC, Web API and Web Pages (Razor)
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[52]
웹사이트
ASP.NET Core License
https://github.com/a[...]
.NET Foundation
2017-07-05
[53]
웹사이트
ASP.NET Ajax Control Toolkit
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[54]
웹사이트
ASP.NET SignalR
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[55]
웹사이트
Entity Framework
https://www.dotnetfo[...]
.NET Foundation
2016-04-16
[56]
웹사이트
NuGet
https://www.dotnetfo[...]
.NET Foundation
2015-02-17
[57]
웹사이트
Microsoft .NET Framework - Microsoft Lifecycle
https://learn.micros[...]
null
[58]
웹사이트
ライフサイクルに関する FAQ - .NET Framework
https://learn.micros[...]
null
[59]
블로그
Announcing .NET 2015 Preview: A New Era for .NET | .NET Blog
https://devblogs.mic[...]
[60]
웹사이트
Mono 4.0.0 Release Notes | Mono
https://www.mono-pro[...]
[61]
웹사이트
Standard ECMA-335 Common Language Infrastructure (CLI)
http://www.ecma-inte[...]
2006-06
[62]
웹사이트
ISO/IEC 23271:2003Information technology -- Common Language Infrastructure
http://www.iso.org/i[...]
ISO/IEC JTC 1/SC 22
2006-09-27
[63]
웹사이트
Microsoft(R) .NET Frameworkの基本仕様である共通言語基盤 (CLI) がJIS X 3016として公示
http://www.microsoft[...]
2006-11-20
[64]
뉴스
「.net by au (ドットネット バイ エーユー)」の提供開始について
https://www.kddi.com[...]
KDDI
2009-01-21
[65]
웹사이트
GitHub - dotnet/core at 1.0.0
https://github.com/d[...]
[66]
웹사이트
Windows TIPS:.NET Frameworkのバージョンを整理する - @IT
https://atmarkit.itm[...]
[67]
웹사이트
.NET Framework Versions and Dependencies
https://msdn.microso[...]
[68]
웹사이트
WinFX から .NET Framework 3.0 への名前変更について
http://msdn.microsof[...]
2006-06-12
[69]
블로그
.NET Framework サポート ライフサイクル ポリシーについて (2015年10月) – Visual Studio 日本チーム Blog
https://blogs.msdn.m[...]
[70]
블로그
.NET Framework 4.6.1 is now available! - .NET Blog - Site Home - MSDN Blogs
http://blogs.msdn.co[...]
[71]
블로그
Announcing .NET Framework 4.6.2
https://blogs.msdn.m[...]
[72]
블로그
Announcing .NET Framework 4.7
https://blogs.msdn.m[...]
[73]
블로그
Announcing the .NET Framework 4.7 General Availability
https://blogs.msdn.m[...]
[74]
블로그
Announcing the .NET Framework 4.7.1
https://blogs.msdn.m[...]
[75]
블로그
Announcing the .NET Framework 4.7.2
https://blogs.msdn.m[...]
[76]
블로그
Announcing the .NET Framework 4.8
https://devblogs.mic[...]
[77]
웹사이트
.NET Core is the Future of .NET
https://devblogs.mic[...]
マイクロソフト
2019-05-06
[78]
블로그
Announcing Windows 11 Insider Preview Build 22504
https://blogs.window[...]
[79]
뉴스
Windows 11のテキスト入力にテーマ機能、絵文字パネルも強化 ~まずはプレビュー版に投入 - 窓の杜
https://forest.watch[...]
[80]
블로그
Announcing .NET Framework 4.8.1
https://devblogs.mic[...]
[81]
웹인용
Download .NET Framework 4.8 Offline Installer
https://dotnet.micro[...]
2019-08-15
[82]
문서
WinFX 문서로 들어가면 자동으로 이 문서로 넘어온다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com