.NET 아키텍처 구성 요소.NET architectural components

.NET 앱은 하나 이상의 .NET 구현체 로 개발하고 이 구현체에서 동작합니다.A .NET app is developed for and runs in one or more implementations of .NET. .NET 구현에는 .NET Framework와 .NET 5(및 .NET Core), Mono가 있습니다.Implementations of .NET include the .NET Framework, .NET 5 (and .NET Core), and Mono. .NET Standard라는 .NET의 여러 구현에는 공통적인 API 사양이 있습니다.There is an API specification common to multiple implementations of .NET that's called .NET Standard. 이 문서에서는 이러한 개념들을 간략하게 소개합니다.This article gives a brief introduction to each of these concepts.

.NET Standard.NET Standard

.NET Standard는 .NET 구현체의 기본 클래스 라이브러리(Base Class Library)로 구현한 API 집합입니다..NET Standard is a set of APIs that are implemented by the Base Class Library of a .NET implementation. 보다 공식적으로는, 코드를 컴파일할 수 있는 일정한 약속을 구성하는 .NET API 규격입니다.More formally, it's a specification of .NET APIs that make up a uniform set of contracts that you compile your code against. 이러한 계약은 여러 .NET 구현에서 구현됩니다.These contracts are implemented in multiple .NET implementations.

.NET Standard는 대상 프레임워크입니다..NET Standard is a target framework. .NET Standard 버전을 대상으로 하는 코드는 해당 .NET Standard 버전을 지원하는 모든 .NET 구현체에서 실행할 수 있습니다.If your code targets a version of .NET Standard, it can run on any .NET implementation that supports that version of .NET Standard.

.NET Standard는 여러 .NET 구현에서 이식성을 가능하게 하기 위해 만들어졌지만, 이제 .NET 5는 여러 플랫폼과 워크로드에서 코드를 공유하는 더 나은 방법을 제공합니다..NET Standard was created to enable portability across different .NET implementations, but now .NET 5 offers a better way to share code across multiple platforms and workloads. 자세한 내용은 .NET 5 및 .NET Standard를 참조하세요.For more information, see .NET 5 and .NET Standard.

.NET 구현체.NET implementations

.NET의 각 구현체에는 다음 구성 요소가 포함됩니다.Each implementation of .NET includes the following components:

  • 하나 이상의 런타임.One or more runtimes. 예: .NET Framework CLR, .NET 5 CLRExamples: .NET Framework CLR, .NET 5 CLR.
  • 클래스 라이브러리.A class library. 예: .NET Framework 기본 클래스 라이브러리, .NET 5 기본 클래스 라이브러리.Examples: .NET Framework Base Class Library, .NET 5 Base Class Library.
  • 필요에 따라 하나 이상의 애플리케이션 프레임워크.Optionally, one or more application frameworks. 예: ASP.NET, Windows FormsWPF(Windows Presentation Foundation)가 .NET Framework 및 .NET 5에 포함됩니다.Examples: ASP.NET, Windows Forms, and Windows Presentation Foundation (WPF) are included in the .NET Framework and .NET 5.
  • 필요에 따라 개발 도구.Optionally, development tools. 일부 개발 도구는 여러 구현체에서 공통적으로 사용할 수 있음.Some development tools are shared among multiple implementations.

Microsoft가 지원하는 네 가지 .NET 구현이 있습니다.There are four .NET implementations that Microsoft supports:

  • .NET 5(및 .NET Core) 이상.NET 5 (and .NET Core) and later versions
  • .NET Framework.NET Framework
  • MonoMono
  • UWPUWP

.NET 5는 이제 지속적인 개발의 초점이 되는 주요 구현입니다..NET 5 is now the primary implementation, the one that is the focus of ongoing development. .NET 5는 Windows 데스크톱 앱 및 크로스 플랫폼 콘솔 앱, 클라우드 서비스 및 웹 사이트와 같은 여러 플랫폼과 많은 워크로드를 지원하는 단일 코드 기반에 구축되었습니다..NET 5 is built on a single code base that supports multiple platforms and many workloads, such as Windows desktop apps and cross-platform console apps, cloud services, and websites.

.NET 5.NET 5

.NET 5는 대규모 서버 및 클라우드 워크로드를 처리하도록 설계된 .NET의 교차 플랫폼 구현입니다..NET 5 is a cross-platform implementation of .NET that is designed to handle server and cloud workloads at scale. 또한 데스크톱 앱을 포함한 다른 워크로드도 지원합니다.It also supports other workloads, including desktop apps. Windows와 macOS, Linux에서 실행됩니다.It runs on Windows, macOS, and Linux. 이는 .NET Standard를 구현하므로 .NET Standard를 대상으로 하는 코드는 .NET 5에서 실행할 수 있습니다.It implements .NET Standard, so code that targets .NET Standard can run on .NET 5. ASP.NET Core, Windows FormsWPF(Windows Presentation Foundation)는 모두 .NET 5에서 실행됩니다.ASP.NET Core, Windows Forms, and Windows Presentation Foundation (WPF) all run on .NET 5.

자세한 내용은 다음 자료를 참조하세요.For more information, see the following resources:

.NET Framework.NET Framework

.NET Framework는 2002년부터 있었던 원래 .NET 구현입니다..NET Framework is the original .NET implementation that has existed since 2002. 버전 4.5 이상은 .NET Standard를 구현하므로 .NET Standard를 대상으로 하는 코드는 .NET Framework의 해당 버전에서 실행할 수 있습니다.Versions 4.5 and later implement .NET Standard, so code that targets .NET Standard can run on those versions of .NET Framework. Windows Forms 및 WPF를 사용하는 Windows 데스크톱 개발용 API와 같이 Windows 관련 추가 API가 포함되어 있습니다.It contains additional Windows-specific APIs, such as APIs for Windows desktop development with Windows Forms and WPF. .NET Framework는 Windows 데스크톱 애플리케이션을 구축을 위해 최적화되어 있습니다..NET Framework is optimized for building Windows desktop applications.

자세한 내용은 .NET Framework 가이드를 참조하세요.For more information, see the .NET Framework guide.

MonoMono

Mono는 작은 런타임이 필요할 때 주로 사용되는 .NET 구현체입니다.Mono is a .NET implementation that is mainly used when a small runtime is required. 이는 Android, macOS, iOS, tvOS 및 watchOS에서 Xamarin 애플리케이션의 성능을 향상하는 런타임으로, 주로 작은 사용 공간에 초점을 맞춥니다.It is the runtime that powers Xamarin applications on Android, macOS, iOS, tvOS, and watchOS and is focused primarily on a small footprint. 또한 Mono에서는 Unity 엔진으로 만든 게임이 동작합니다.Mono also powers games built using the Unity engine.

Mono는 현재 게시된 .NET Standard 버전을 모두 지원합니다.It supports all of the currently published .NET Standard versions.

지금까지 Mono는 .NET Framework의 방대한 API를 구현하고 Unix에서 가장 인기 있는 기능의 일부를 따라서 만들었습니다.Historically, Mono implemented the larger API of the .NET Framework and emulated some of the most popular capabilities on Unix. 경우에 따라 Unix에서 해당 기능을 사용하는 .NET 애플리케이션을 실행하는 데도 사용됩니다.It is sometimes used to run .NET applications that rely on those capabilities on Unix.

일반적으로 Mono는 Just-In-Time 컴파일러에서 사용되지만 iOS 같은 플랫폼에 사용되는 전체 정적 컴파일러(Ahead-Of-Time 컴파일) 기능도 제공합니다.Mono is typically used with a just-in-time compiler, but it also features a full static compiler (ahead-of-time compilation) that is used on platforms like iOS.

자세한 내용은 Mono 설명서를 참조하세요.For more information, see the Mono documentation.

UWP(유니버설 Windows 플랫폼)Universal Windows Platform (UWP)

UWP는 IoT(사물 인터넷)에 대한 최신 터치 가능 Windows 애플리케이션 및 소프트웨어를 작성하는 데 사용되는 .NET의 구현입니다.UWP is an implementation of .NET that is used for building modern, touch-enabled Windows applications and software for the Internet of Things (IoT). PC, 태블릿, 휴대폰, Xbox와 같은 대상으로 지정할 수 있는 다양한 종류의 디바이스를 통합하도록 설계되었습니다.It's designed to unify the different types of devices that you may want to target, including PCs, tablets, phones, and even the Xbox. UWP는 중앙 집중식 앱 스토어, 실행 환경(AppContainer), Win32를 대체할 Windows API(WinRT) 등 많은 서비스를 제공합니다.UWP provides many services, such as a centralized app store, an execution environment (AppContainer), and a set of Windows APIs to use instead of Win32 (WinRT). 앱은 C++과 C#, Visual Basic, JavaScript로 작성할 수 있습니다.Apps can be written in C++, C#, Visual Basic, and JavaScript.

자세한 내용은 유니버설 Windows 플랫폼 소개를 참조하세요.For more information, see Introduction to the Universal Windows Platform.

.NET 런타임.NET runtimes

런타임은 관리되는 프로그램에 대한 실행 환경입니다.A runtime is the execution environment for a managed program. OS는 런타임 환경의 일부이지만 .NET 런타임의 일부는 아닙니다.The OS is part of the runtime environment but is not part of the .NET runtime. 다음은 .NET 런타임의 몇 가지 예입니다.Here are some examples of .NET runtimes:

  • .NET Framework에 대한 CLR(공용 언어 런타임)Common Language Runtime (CLR) for .NET Framework
  • .NET 5에 대한 CLR(공용 언어 런타임)Common Language Runtime (CLR) for .NET 5
  • 유니버설 Windows 플랫폼용 .NET 네이티브.NET Native for Universal Windows Platform
  • Xamarin.iOS와 Xamarin.Android, Xamarin.Mac, Mono 데스크톱 프레임워크에 대한 Mono 런타임The Mono runtime for Xamarin.iOS, Xamarin.Android, Xamarin.Mac, and the Mono desktop framework

.NET 도구 및 공통 인프라.NET tooling and common infrastructure

모든 .NET 구현체에서 동작하는 다양한 도구와 인프라 구성 요소를 사용할 수 있습니다.You have access to an extensive set of tools and infrastructure components that work with every implementation of .NET. 이러한 도구 및 구성 요소는 다음과 같습니다.These tools and components include:

  • .NET 언어 및 해당 컴파일러The .NET languages and their compilers
  • .NET 프로젝트 시스템( .csproj, .vbproj.fsproj 파일 기반)The .NET project system (based on .csproj, .vbproj, and .fsproj files)
  • 프로젝트를 빌드하는 데 사용하는 빌드 엔진 MSBuildMSBuild, the build engine used to build projects
  • .NET에 대한 Microsoft의 패키지 관리자 NuGetNuGet, Microsoft's package manager for .NET
  • CAKEFAKE 등의 오픈 소스 빌드 오케스트레이션 도구Open-source build orchestration tools, such as CAKE and FAKE

자세한 내용은 도구 및 생산성을 참조하세요.For more information, see Tools and productivity.

적용 가능한 표준Applicable standards

C# 언어 및 CLI(공용 언어 인프라) 사양은 Ecma International®을 통해 표준화됩니다.The C# Language and the Common Language Infrastructure (CLI) specifications are standardized through Ecma International®. 이러한 표준의 첫 번째 버전은 2001년 12월에 Ecma에서 게시했습니다.The first editions of these standards were published by Ecma in December 2001.

표준에 대한 후속 수정 사항은 프로그래밍 언어 기술 위원회(TC49) 내에서 TC49-TG2(C#) 및 TC49-TG3(CLI) 작업 그룹을 통해 개발되었고 이후에는 Ecma General Assembly가, 그 이후에는 ISO/IEC JTC 1이 ISO Fast-Track 프로세스를 통해 도입했습니다.Subsequent revisions to the standards have been developed by the TC49-TG2 (C#) and TC49-TG3 (CLI) task groups within the Programming Languages Technical Committee (TC49), and adopted by the Ecma General Assembly and subsequently by ISO/IEC JTC 1 via the ISO Fast-Track process.

최신 표준Latest standards

다음과 같은 공식 Ecma 문서는 C#CLI(TR-84)에서 사용할 수 있습니다.The following official Ecma documents are available for C# and the CLI (TR-84):

공식 ISO/IEC 문서는 ISO/IEC 공개적으로 사용할 수 있는 표준 페이지에서 사용할 수 있습니다.The official ISO/IEC documents are available from the ISO/IEC Publicly Available Standards page. 이러한 링크는 해당 페이지에서 직접 제공됩니다.These links are direct from that page:

  • 정보 기술 - 프로그래밍 언어- C# : ISO/IEC 23270:2018Information technology - Programming languages - C#: ISO/IEC 23270:2018
  • 정보 기술 - CLI(공용 언어 인프라) 파티션 I ~ VI: ISO/IEC 23271:2012Information technology — Common Language Infrastructure (CLI) Partitions I to VI: ISO/IEC 23271:2012
  • 정보 기술 - CLI (공용 언어 인프라) - 파티션 IV XML 파일에서 파생된 정보에 대한 기술 보고서: ISO/IEC TR 23272:2011Information technology — Common Language Infrastructure (CLI) — Technical Report on Information Derived from Partition IV XML File: ISO/IEC TR 23272:2011

참조See also