닷넷 라이브러리 및 프레임워크 목록

이 문서는 CLI 언어에서 사용할 수 있는 라이브러리 목록을 담고 있다. 이러한 언어들은 소프트웨어 개발, 플랫폼 독립성, 언어 상호 운용성 및 광범위한 프레임워크 라이브러리의 기초를 제공하는 닷넷 프레임워크, 모노 또는 닷넷을 필요로 한다. (기본 클래스 라이브러리를 포함한) 표준 라이브러리는 이 문서에 포함되지 않는다.

## 서론
닷넷 프레임워크나 닷넷으로 만든 앱은 보안, 메모리 관리, 예외 처리와 같은 서비스를 제공하는 애플리케이션 가상 머신인 공통 언어 런타임(CLR)이라고 하는 소프트웨어 환경에서 실행된다. 프레임워크에는 프레임워크 클래스 라이브러리(FCL)라고 불리는 대규모 클래스 라이브러리가 포함되어 있다.

호스팅 가상 머신 덕분에 닷넷 공통 언어 기반(CLI)을 준수하는 다양한 언어들이 동일한 종류의 데이터 구조에서 작동할 수 있다. 따라서 이러한 언어들은 FCL 및 CLI 준수 언어 중 하나로 작성된 다른 닷넷 라이브러리를 사용할 수 있다. 이러한 언어의 소스 코드가 컴파일되면 컴파일러는 CLI 어셈블리에 저장되는 공통 중간 언어(CIL, 바이트코드라고도 함)로 된 플랫폼 독립적 코드를 생성한다. 닷넷 앱이 실행될 때 Just-In-Time 컴파일러(JIT)는 CIL 코드를 플랫폼별 기계어로 변환한다. 성능 향상을 위해 닷넷 프레임워크에는 기계어로의 사전 컴파일(AOT)을 수행하는 네이티브 이미지 생성기(NGEN)도 함께 제공된다.

이러한 구조는 언어 상호 운용성을 제공한다. 각 언어는 다른 언어로 작성된 코드를 사용할 수 있다. 한 언어에서 다른 언어로의 호출은 단일 프로그래밍 언어 내에서와 똑같이 이루어진다. 라이브러리가 하나의 CLI 언어로 작성되었다면 다른 CLI 언어에서도 사용할 수 있다. 또한 순수 닷넷 어셈블리로만 구성된 앱은 CLI 구현이 포함된 모든 플랫폼으로 전송되어 해당 플랫폼에서 실행될 수 있다. 예를 들어, 닷넷을 사용하여 작성된 앱은 윈도우, MacOS, 다양한 버전의 리눅스에서 실행될 수 있다.

그러나 닷넷 앱이나 그 라이브러리는 COM과 같은 네이티브 플랫폼 기능에 의존할 수도 있다. 따라서 닷넷 앱의 플랫폼 독립성은 필요한 네이티브 라이브러리를 대상 플랫폼으로 이전할 수 있는지 여부에 달려 있다. 2019년에는 닷넷 프레임워크의 윈도우 폼 및 윈도우 프레젠테이션 파운데이션 부분이 오픈 소스로 공개되었다.

### 닷넷 구현체

활발하게 개발되고 유지 관리되는 네 가지 주요 닷넷 구현체가 있다.

* **[[닷넷 프레임워크]]:** 2002년부터 존재해 온 최초의 닷넷 구현체이다. 아직 중단되지는 않았지만, 마이크로소프트는 다음 주요 버전인 5.0을 출시할 계획이 없다.
* **[[모노 (소프트웨어)|모노]]:** 지미안이 2004년에 도입한 닷넷 프레임워크의 크로스 플랫폼 구현체이다. 자유-오픈 소스이며, 현재는 마이크로소프트의 자회사인 자마린에서 개발하고 있다.
* **[[유니버설 윈도우 플랫폼]] (UWP):** UWP 앱을 빌드하는 데 사용되는 닷넷 구현체이다. PC, 태블릿, 패블릿, 휴대폰 및 엑스박스를 포함한 다양한 대상 장치 유형에 대한 개발을 통합하도록 설계되었다.
* **[[닷넷]]:** 2016년에 도입되어 처음에는 .NET Core라고 불렸던 닷넷 프레임워크의 크로스 플랫폼 재구현체이다. 자유-오픈 소스이다. 닷넷은 .NET 5 출시와 함께 닷넷 프레임워크를 계승했다.

각 닷넷 구현체는 다음 구성 요소를 포함한다.

* 하나 이상의 런타임 환경. 예: 닷넷 프레임워크용 공통 언어 런타임(CLR), 닷넷용 코어CLR
* 클래스 라이브러리

**.NET Standard**는 모든 닷넷 구현체의 기본 클래스 라이브러리에 구현된 공통 API 집합이다. 각 구현체의 클래스 라이브러리는 .NET Standard를 구현해야 하지만, 추가 API를 구현할 수도 있다. 전통적으로 닷넷 앱은 닷넷 프레임워크 4.6과 같은 특정 버전의 닷넷 구현체를 대상으로 했다. .NET Standard가 도입되면서, 앱은 특정 버전의 .NET Standard를 대상으로 할 수 있게 되었으며, 해당 표준 수준을 지원하는 모든 구현체에서 (재컴파일 없이) 사용할 수 있다. 이를 통해 서로 다른 닷넷 구현체 간의 이식성이 가능해진다.

다음 표는 .NET Standard를 준수하는 닷넷 구현체와 각 구현체가 특정 버전의 .NET Standard를 준수하게 된 버전 번호를 나열한다. 예를 들어 이 표에 따르면 .NET Core 3.0은 .NET Standard 2.1을 준수한 .NET Core의 첫 번째 버전이었다. 이는 3.0보다 높은 모든 .NET Core 버전(예: .NET Core 3.1)도 .NET Standard 2.1을 준수함을 의미한다.

## 웹 프레임워크

### [[ASP.NET]]
2002년에 처음 출시된 ASP.NET은 동적 웹 페이지를 제작하기 위한 웹 개발용 오픈 소스 서버 측 웹 애플리케이션 프레임워크이다. 마이크로소프트의 액티브 서버 페이지(ASP) 기술의 후속 제품이며 공통 언어 런타임(CLR)을 기반으로 구축되었다.

### [[ASP.NET Core]]
ASP.NET은 2016년에 엔티티 프레임워크와 같은 다른 프레임워크와 함께 모듈식 웹 프레임워크로 완전히 재작성되었다. 재작성된 프레임워크는 새로운 오픈 소스 .NET 컴파일러 플랫폼(코드명 "Roslyn"으로도 알려짐)을 사용하며 크로스 플랫폼을 지원한다. 프로그래밍 모델인 ASP.NET MVC, ASP.NET Web API 및 ASP.NET Web Pages(Razor 페이지만 사용하는 모델)는 통합된 MVC 6으로 합쳐졌다.

### [[블레이저 (웹 프레임워크)|블레이저]]
블레이저는 개발자가 ASP.NET Razor 페이지("컴포넌트")에서 C#과 HTML을 사용하여 싱글 페이지 웹 앱을 만들 수 있게 해주는 자유-오픈 소스 웹 프레임워크이다. 블레이저는 ASP.NET Core 프레임워크의 일부이다. 블레이저 서버 앱은 웹 서버에서 호스팅되는 반면, 블레이저 웹어셈블리 앱은 실행 전 클라이언트의 웹 브라우저로 다운로드된다. 또한 서버 기반 및 클라이언트 기반 애플리케이션 구성 요소를 모두 사용하는 블레이저 하이브리드 프레임워크도 사용할 수 있다.

## 수치 해석 라이브러리

### 오픈 소스 수치 해석 라이브러리

#### [[AForge.NET]]
컴퓨터 비전 및 인공지능 라이브러리이다. 대응하는 학습 알고리즘과 함께 여러 인공 신경망 구조를 가진 다수의 유전, 퍼지 로직 및 기계 학습 알고리즘을 구현한다.

#### [[ALGLIB]]
크로스 플랫폼 오픈 소스 수치 해석 및 데이터 처리 라이브러리이다. 다양한 프로그래밍 언어(C++, C#, FreePascal, Delphi, VBA)로 작성된 알고리즘 모음으로 구성되며 상용 및 GPL의 이중 라이선스를 가진다.

#### [[Math.NET Numerics]]
과학, 공학 및 일상적인 사용에서의 수치 계산을 위한 방법과 알고리즘을 제공하는 것을 목표로 한다. 다루는 주제로는 특수 함수, 선형 대수학, 확률 모델, 난수, 보간법, 적분 변환 등이 있다. MIT/X11 라이선스를 따른다.

#### [[Meta.Numerics]]
닷넷 프레임워크에서의 고급 과학 계산을 위한 라이브러리이다.

#### [[ML.NET]]
자유 소프트웨어 기계 학습 라이브러리이다. ML.NET의 프리뷰 릴리스에는 n-gram 생성과 같은 기능 공학을 위한 변환과 이진 분류, 다중 클래스 분류 및 회귀 작업을 처리하기 위한 학습기가 포함되었다. 이후 이상 탐지 및 추천 시스템과 같은 추가 기계 학습 작업이 추가되었으며, 향후 버전에는 딥러닝과 같은 다른 접근 방식이 포함될 예정이다.

### 독점 수치 해석 라이브러리

#### [[ILNumerics.Net]]
일반 수학, FFT 및 선형 대수학을 위한 고성능, 타입 안정성이 보장되는 수치 배열 클래스 및 함수 집합이다. .NET/Mono용으로 개발된 이 라이브러리는 C#에서 32비트 및 64비트 스크립트 스타일 구문, 2D 및 3D 플롯 컨트롤, 효율적인 메모리 관리를 제공하는 것을 목표로 한다. GPLv3 또는 상용 라이선스로 출시된다.

#### [[메저먼트 스튜디오|Measurement Studio]]
테스트 및 측정 애플리케이션 개발에 사용되는 UI 컨트롤 및 클래스 라이브러리의 통합 제품군이다. 해석 클래스 라이브러리는 다양한 디지털 신호 처리, 신호 필터링, 신호 생성, 피크 탐지 및 기타 일반적인 수학적 기능을 제공한다.

#### [[NMath]]
CenterSpace Software에서 개발한 닷넷 플랫폼용 수치 컴포넌트 라이브러리이다. 신호 처리(FFT) 클래스, 선형 대수학(LAPACK & BLAS) 프레임워크 및 통계 패키지를 포함한다.

## 3D 그래픽

### 오픈 소스 3D 그래픽

#### [[OpenTK|오픈 툴킷]] (OpenTK)
OpenGL, OpenGL ES 및 OpenAL을 위한 저수준 C# 바인딩이다. 윈도우, 리눅스, Mac OS X, BSD, 안드로이드 및 iOS에서 실행된다. 독립형으로 사용하거나 GUI에 통합할 수 있다.

#### [[윈도우 프레젠테이션 파운데이션]] (WPF)
마이크로소프트에서 개발한 사용자 인터페이스 렌더링용 그래픽 하위 시스템이다. 3D 렌더링 엔진도 포함하고 있다. 또한 인터랙티브 2D 콘텐츠를 3D 표면에 네이티브하게 겹칠 수 있다. 윈도우 운영 체제에서만 실행된다.

### 독점 3D 그래픽

#### [[유니티 (게임 엔진)|유니티]]
유니티 테크놀로지스에서 개발한 크로스 플랫폼 게임 엔진으로, PC, 콘솔, 모바일 장치 및 웹사이트용 비디오 게임을 개발하는 데 사용된다.

## 이미지 처리

### [[AForge.NET]]
컴퓨터 비전 및 인공지능 라이브러리이다. 다수의 이미지 처리 알고리즘과 필터를 구현한다. LGPLv3 및 부분적으로 GPLv3 라이선스로 출시된다. 라이브러리의 대부분은 C#으로 작성되어 크로스 플랫폼을 지원한다. AForge.NET의 기능은 Accord.NET 라이브러리에 의해 확장되었다.

### [[Accord.NET]]
또 다른 컴퓨터 비전 및 인공지능 라이브러리로, GNU 약소 일반 공중 사용 허가서 버전 2.1 하에 제공된다. 주로 C#으로 작성되었다.

## 그래픽 사용자 인터페이스

### [[Gtk Sharp|Gtk#]]
C로 작성된 기본 GTK 및 그놈 라이브러리를 C#으로 감싼 것이며 리눅스, MacOS 및 윈도우에서 사용할 수 있다.

### [[윈도우 폼]] (WinForms)
마이크로소프트의 GUI 프레임워크이다. 원래의 마이크로소프트 구현체는 윈도우 운영 체제에서 실행되며, 윈도우 API를 관리 코드로 래핑하여 윈도우 사용자 인터페이스 공통 컨트롤에 대한 액세스를 제공한다. 대체 구현체인 모노 구현체는 오픈 소스이자 크로스 플랫폼(윈도우, 리눅스, 유닉스 및 OS X에서 실행됨)이다. 이는 원래 구현체와 대체로 호환되지만 완벽하지는 않다. 이 라이브러리는 윈도우 의존성을 피하기 위해 C#으로 작성되었다. 2018년 12월 4일 마이크로소프트 커넥트 행사에서 마이크로소프트는 윈도우 폼을 깃허브의 프로젝트로 오픈 소스화한다고 발표했다. 이는 MIT 허가서에 따라 배포된다. 윈도우 폼은 닷넷 프레임워크를 대상으로 하는 프로젝트에서 사용할 수 있게 되었다. 그러나 이 프레임워크는 여전히 윈도우 플랫폼에서만 사용할 수 있으며, 모노의 불완전한 윈도우 폼 구현이 유일한 크로스 플랫폼 구현으로 남아 있다.

### [[윈도우 프레젠테이션 파운데이션]] (WPF)
마이크로소프트의 윈도우 기반 애플리케이션에서 사용자 인터페이스를 렌더링하기 위한 그래픽 하위 시스템이다. DirectX를 기반으로 하며, 다양한 인터페이스 요소를 정의하고 연결하기 위해 XML 기반 언어인 XAML을 사용한다. WPF 애플리케이션은 독립형 데스크톱 프로그램으로 배포하거나 웹사이트에 임베디드 개체로 호스팅할 수 있다. 2018년 12월 4일 마이크로소프트 커넥트 행사에서 마이크로소프트는 WPF를 깃허브의 프로젝트로 오픈 소스화한다고 발표했다. 이는 MIT 허가서에 따라 배포된다. 윈도우 프레젠테이션 파운데이션은 닷넷 프레임워크를 대상으로 하는 프로젝트에서 사용할 수 있게 되었다. 그러나 이 시스템은 여전히 윈도우 플랫폼에서만 사용할 수 있다.

### [[윈도우 UI 라이브러리]] (WinUI)
유니버설 윈도우 플랫폼(UWP)을 위한 마이크로소프트 UI 컨트롤 및 기능 집합이다. 2018년 12월 4일 마이크로소프트 커넥트 행사에서 마이크로소프트는 WinUI를 깃허브의 프로젝트로 오픈 소스화한다고 발표했다. WinUI는 닷넷 프레임워크를 대상으로 하는 프로젝트에서 사용할 수 있게 되었다. MIT 허가서에 따라 배포된다. 그러나 이 라이브러리는 여전히 윈도우 플랫폼에서만 사용할 수 있다.

### [[자마린|Xamarin.Forms]]
macOS, iOS, 안드로이드 및 유니버설 윈도우 플랫폼 앱에서 실행할 수 있는 네이티브 사용자 인터페이스 개발을 위한 크로스 플랫폼 UI 툴킷이다.

### [[.NET Multi-platform App UI]] (.NET MAUI)
2020년 5월에 발표된 크로스 플랫폼 UI 툴킷으로, Xamarin.Forms에서 파생되어 안드로이드, iOS, 리눅스, macOS, 타이젠 및 윈도우에서 실행할 수 있다. .NET MAUI는 닷넷 6 이상에서 실행된다. 소스 코드는 MIT 허가서에 따라 라이선스가 부여되며 깃허브에서 사용할 수 있다.

### [[아발로니아 (소프트웨어 프레임워크)|아발로니아]] (Avalonia)
윈도우, 리눅스, macOS, iOS, 안드로이드 및 웹어셈블리에서 실행할 수 있는 사용자 인터페이스 개발을 위한 오픈 소스 크로스 플랫폼 UI 툴킷이다. 소스 코드는 MIT 허가서에 따라 라이선스가 부여되며 깃허브에서 사용할 수 있다.

## 품질 보증

### [[NUnit]]
C#으로 작성되어 크로스 플랫폼을 지원하는 닷넷용 오픈 소스 유닛 테스트 프레임워크이다. XUnit 계열의 많은 프로그램 중 하나이다. MIT 허가서에 따라 라이선스가 부여된다.

## 객체 관계 매핑
닷넷 프레임워크는 버전 1.0부터 닷넷 스택의 일부인 ADO.NET을 통해 객체 관계 매핑을 위한 유틸리티를 기본적으로 제공한다. 닷넷 개발 초기에는 프레임워크의 부족한 부분을 채우기 위해 다수의 서드파티 객체 관계 라이브러리가 등장했다. 프레임워크가 발전함에 따라 닷넷 프레임워크 3.5에서 도입된 엔티티 프레임워크 및 LINQ to SQL과 같은 추가적인 객체 관계 도구가 추가되었다. 이러한 도구들은 서드파티 객체 관계 라이브러리의 중요성과 인기를 감소시켰다.

### [[엔티티 프레임워크]]
ADO.NET용 오픈 소스 객체 관계 매핑(ORM) 프레임워크이다. 원래 닷넷 프레임워크의 일부였으나, 엔티티 프레임워크 버전 6부터는 닷넷 프레임워크에서 분리되었다.

### [[NHibernate]]

NHibernate는 닷넷 플랫폼을 위한 객체 관계 매퍼이다.

## 내용주

## 각주

## 외부 링크
일반:
* .NET Open Source Developer Projects, 깃허브에서 유지 관리되는 목록

수치 해석 라이브러리:
* The Math Forum - Math Libraries, 짧은 설명이 포함된 방대한 수학 라이브러리 목록
* Guide - Math and Statistics Programming with F# 
데이터:
* Object Relational Mapping
* Comparison of Object Relational Mapping Tools for the .NET Framework

분류:프로그래밍 도구
분류:소프트웨어 목록
분류:그래픽 라이브러리
분류:라이브러리