.NET은 다양한 종류의 애플리케이션을 빌드하기 위한 무료 플랫폼 간 오픈 소스 개발자 플랫폼입니다. C#이 가장 인기 있는 여러 언어로 작성된 프로그램을 실행할 수 있습니다. 많은 대규모 앱에서 프로덕션에 사용되는 고성능 런타임에 의존합니다.
.NET을 다운로드하고 첫 번째 앱 작성을 시작하는 방법을 알아보려면 시작하기를 참조하세요.
.NET 플랫폼은 생산성, 성능, 보안 및 안정성을 제공하도록 설계되었습니다.
가비지 수집기(GC)를 통해 자동 메모리 관리를 제공합니다. GC 및 엄격한 언어 컴파일러를 사용하기 때문에 형식이 안전하며 메모리가 안전합니다.
동시성을 async
기본 형식을 통해 /await
Task
제공합니다. 여기에는 광범위한 기능이 있고 여러 운영 체제 및 칩 아키텍처의 성능에 최적화된 대규모 라이브러리 집합이 포함되어 있습니다.
.NET에는 다음과 같은 디자인 포인트가 있습니다.
- 생산성은 런타임, 라이브러리, 언어 및 도구가 모두 개발자 사용자 환경에 기여하는 전체 스택입니다.
- 안전 코드 는 기본 컴퓨팅 모델이지만 안전하지 않은 코드 는 추가 수동 최적화를 가능하게 합니다.
- 정적 코드와 동적 코드 가 모두 지원되어 광범위한 고유 시나리오 집합을 사용할 수 있습니다.
- 네이티브 코드 상호운용 및 하드웨어 본질 기능은 비용이 낮고 원시 API 및 명령에 대한 액세스 충실도가 높습니다.
- 코드는 플랫폼 (OS 및 칩 아키텍처)에서 이식 가능하지만 플랫폼 대상을 지정하면 특수화 및 최적화가 가능합니다.
- 프로그래밍 도메인(클라우드, 클라이언트, 게임)에서의 적응성은 범용 프로그래밍 모델의 특수한 구현으로 실현됩니다.
- OpenTelemetry 및 gRPC와 같은 업계 표준은 맞춤형 솔루션보다 선호됩니다.
.NET은 Microsoft와 글로벌 커뮤니티가 공동으로 유지 관리합니다. 정기적인 업데이트를 통해 사용자는 안전하고 안정적인 애플리케이션을 프로덕션 환경에 배포할 수 있습니다.
구성 요소
.NET에는 다음 구성 요소가 포함됩니다.
- 런타임 -- 애플리케이션 코드를 실행합니다.
- 라이브러리 -- JSON 구문 분석과 같은 유틸리티 기능을 제공합니다.
- 컴파일러 -- C# (및 기타 언어) 소스 코드를 (런타임) 실행 코드로 컴파일합니다.
- SDK 및 기타 도구 - 최신 워크플로를 사용하여 앱을 빌드하고 모니터링할 수 있습니다.
- 앱 스택(예: ASP.NET Core 및 Windows Forms)을 사용하여 앱을 작성할 수 있습니다.
런타임, 라이브러리 및 언어는 .NET 스택의 핵심 요소입니다. .NET 도구와 같은 상위 수준 구성 요소 및 앱 스택(예: ASP.NET Core)은 이러한 핵심 요소를 기반으로 합니다. C#은 .NET의 기본 프로그래밍 언어이며 대부분의 .NET은 C#으로 작성됩니다.
C#은 개체 지향이며 런타임은 개체 방향을 지원합니다. C#에는 가비지 수집이 필요하며 런타임은 추적 가비지 수집기를 제공합니다. 라이브러리(및 앱 스택)는 개발자가 직관적인 워크플로에서 알고리즘을 생산적으로 작성할 수 있도록 하는 개념 및 개체 모델로 이러한 기능을 형성합니다.
핵심 라이브러리는 수천 가지 형식을 노출하며, 그 중 상당수는 C# 언어와 통합되고 연료가 됩니다. 예를 들어 C#의 foreach
문을 사용하면 임의의 컬렉션을 열거할 수 있습니다. 패턴 기반 최적화를 사용하면 컬렉션을 List<T>
간단하고 효율적으로 처리할 수 있습니다. 리소스 관리가 가비지 수집에 맡겨질 수도 있지만, IDisposable
및 using
명령문에서의 직접적인 언어 지원을 통해 신속한 정리가 가능합니다.
동시에 여러 작업을 수행할 수 있도록 지원하는 것은 거의 모든 워크로드의 기본 사항입니다. UI 응답성을 유지하면서 백그라운드 처리를 수행하는 클라이언트 애플리케이션, 수천 개의 동시 요청을 처리하는 서비스, 수많은 동시 자극에 응답하는 디바이스 또는 컴퓨팅 집약적 작업의 처리를 병렬화하는 고성능 컴퓨터가 될 수 있습니다. 비동기 프로그래밍 지원은 C# 프로그래밍 언어의 일류 기능으로, 비동기 작업을 쉽게 작성하고 작성할 수 있는 키워드와 언어가 제공하는 모든 제어 흐름 구문의 모든 이점을 누릴 수 있는 키워드를 제공합니다 async
await
.
형식 시스템은 안전, 설명성, 역동성 및 네이티브 상호 운용을 균등하게 지원하는 널리 제공됩니다. 무엇보다도 형식 시스템은 개체 지향 프로그래밍 모델을 사용하도록 설정합니다. 여기에는 형식, (단일 기본 클래스) 상속, 인터페이스(기본 메서드 구현 포함) 및 개체 방향에서 허용하는 모든 형식 계층화에 대한 합리적인 동작을 제공하는 가상 메서드 디스패치가 포함됩니다. 제네릭 형식 은 유비쿼터스이며 하나 이상의 형식으로 클래스를 특수화할 수 있습니다.
.NET 런타임은 가비지 수집기를 통해 자동 메모리 관리를 제공합니다. 모든 언어의 경우 메모리 관리 모델이 가장 정의되는 특성일 수 있습니다. .NET 언어의 경우 마찬가지입니다. .NET에는 자체 튜닝 및 추적 GC가 포함되어 있습니다. 일반적인 경우에는 "자동으로" 사용하도록 하면서, 보다 극단적인 워크로드에는 구성 옵션을 제공하는 것을 목표로 합니다. 현재 GC는 수많은 워크로드에서 수년간의 투자와 학습의 결과입니다.
값 형식 및 스택 할당 메모리 블록은 .NET의 GC 관리형 형식과는 달리, 데이터와 네이티브 플랫폼 상호 운용성에 대해 보다 직접적이고 낮은 수준의 제어를 제공합니다. 정수 형식과 같은 .NET의 기본 형식 대부분은 값 형식이며 사용자는 비슷한 의미 체계를 사용하여 고유한 형식을 정의할 수 있습니다. 값 형식은 을 통해 완전히 지원됩니다. NET의 제네릭 시스템은 제네릭 형식과 같은 List<T>
값 형식 컬렉션의 오버헤드가 없는 플랫 메모리 표현을 제공할 수 있음을 의미합니다.
리플렉션 은 "데이터로서의 프로그램" 패러다임으로, 프로그램의 한 부분이 어셈블리, 형식 및 멤버 측면에서 다른 부분을 동적으로 쿼리하고 호출할 수 있도록 합니다. 지연 바인딩된 프로그래밍 모델 및 도구에 특히 유용합니다.
예외는 .NET의 기본 오류 처리 모델입니다. 예외는 오류 정보를 메서드 서명에 표시하거나 모든 메서드에서 처리할 필요가 없다는 이점이 있습니다. 적절한 예외 처리는 애플리케이션 안정성에 필수적입니다. 앱이 충돌하지 않도록 하려면 코드에서 예상되는 예외를 의도적으로 처리할 수 있습니다. 크래시된 앱은 정의되지 않은 동작을 가진 앱보다 더 안정적이고 진단 가능합니다.
ASP.NET Core 및 Windows Forms와 같은 앱 스택은 하위 수준 라이브러리, 언어 및 런타임을 기반으로 빌드하고 활용합니다. 앱 스택은 앱이 생성되는 방식과 실행 수명 주기를 정의합니다.
SDK 및 기타 도구를 사용하면 개발자 데스크톱과 CI(연속 통합) 모두에서 최신 개발자 환경을 사용할 수 있습니다. 최신 개발자 환경에는 코드를 빌드, 분석 및 테스트할 수 있는 기능이 포함됩니다. .NET 프로젝트는 NuGet 패키지 복원 및 종속성 빌드를 오케스트레이션하는 단일 dotnet build
명령으로 빌드할 수 있습니다.
NuGet은 .NET의 패키지 관리자입니다. 여기에는 많은 시나리오에 대한 기능을 구현하는 수십만 개의 패키지가 포함되어 있습니다. 대부분의 앱은 일부 기능에 대해 NuGet 패키지를 사용합니다. NuGet 갤러리는 Microsoft에서 유지 관리합니다.
무료 및 오픈 소스
.NET은 무료 오픈 소스이며 .NET Foundation 프로젝트입니다. .NET은 Microsoft와 GitHub의 커뮤니티가 여러 리포지토리에서 유지 관리합니다.
.NET 원본 및 이진 파일은 MIT 라이선스로 라이선스가 부여됩니다. Windows에 추가 라이선스가 적용됩니다.
지원
.NET은 여러운영 체제 에서 .NET을 실행할 수 있고 최신 상태로 유지되도록 하는 여러 조직에서 지원됩니다. Arm64, x64 및 x86 아키텍처에서 사용할 수 있습니다.
.NET의 새 버전은 릴리스 및 지원 정책에 따라 매년 11월에 릴리스됩니다. 패치 화요일(두 번째 화요일)에 매월 업데이트 되며, 일반적으로 태평양 표준시 오전 10시에 업데이트됩니다.
.NET 에코시스템
.NET에는 여러 변형이 있으며 각각 다른 유형의 앱을 지원합니다. 여러 변형의 이유는 부분 기록, 부분 기술입니다.
.NET 구현:
- .NET Framework -- 원래 .NET입니다. Windows 및 Windows Server의 광범위한 기능에 액세스할 수 있습니다. 유지 관리에서 적극적으로 지원됩니다.
- Mono - 원래 커뮤니티 및 오픈 소스 .NET입니다. .NET Framework의 플랫폼 간 구현입니다. Android, iOS 및 WebAssembly에 대해 적극적으로 지원됩니다.
- .NET(Core) - 최신 .NET. .NET을 위한 크로스 플랫폼 및 오픈 소스 구현으로, 클라우드 시대에 맞게 설계되었으면서도 .NET Framework와 상당한 호환성을 유지합니다. Linux, macOS 및 Windows에 대해 적극적으로 지원됩니다.
다음 단계
.NET