.NET Core 정보About .NET Core

.NET Core에는 다음과 같은 특징이 있습니다..NET Core has the following characteristics:

  • 플랫폼 간: Windows, macOS 및 Linux 운영 체제에서 실행됩니다.Cross-platform: Runs on Windows, macOS, and Linux operating systems.
  • 아키텍처 간에 일관됨: x64, x86 및 ARM을 비롯한 여러 아키텍처에서 동일한 동작을 사용하여 코드를 실행합니다.Consistent across architectures: Runs your code with the same behavior on multiple architectures, including x64, x86, and ARM.
  • 명령줄 도구: 로컬 개발 및 연속 통합 시나리오에서 사용할 수 있는 편리한 명령줄 도구를 포함합니다.Command-line tools: Includes easy-to-use command-line tools that can be used for local development and in continuous-integration scenarios.
  • 유연한 배포: 앱이나 설치된 side-by-side(사용자 또는 시스템 수준 설치)에 포함할 수 있습니다.Flexible deployment: Can be included in your app or installed side-by-side (user-wide or system-wide installations). Docker 컨테이너에서 사용될 수 있습니다.Can be used with Docker containers.
  • 호환 가능: .NET Core는 .NET Standard를 통해 .NET Framework, Xamarin 및 Mono와 호환됩니다.Compatible: .NET Core is compatible with .NET Framework, Xamarin, and Mono, via .NET Standard.
  • 오픈 소스: .NET Core 플랫폼은 MIT 및 Apache 2 라이선스를 사용하는 오픈 소스입니다.Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. .NET Core는 .NET Foundation 프로젝트입니다..NET Core is a .NET Foundation project.
  • Microsoft에서 지원됨: .NET Core는 .NET Core 지원에 따라 Microsoft에서 지원됩니다.Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support.

언어Languages

C#, Visual Basic 및 F# 언어를 사용하여 .NET Core에 대한 애플리케이션 및 라이브러리를 작성할 수 있습니다.C#, Visual Basic, and F# languages can be used to write applications and libraries for .NET Core. 이러한 언어는 즐겨 찾는 텍스트 편집기나 다음과 같은 IDE(통합 개발 환경)에서 사용할 수 있습니다.These languages can be used in your favorite text editor or Integrated Development Environment (IDE), including:

OmniSharpIonide 프로젝트의 참가자가 이 통합의 일부를 제공합니다.This integration is provided, in part, by the contributors of the OmniSharp and Ionide projects.

APIAPIs

.NET Core는 다음과 같은 여러 시나리오에서 API를 노출합니다..NET Core exposes APIs for many scenarios, a few of which follow:

.NET Core는 .NET Standard 사양을 구현하여 .NET Framework 및 Mono API에서 호환성을 제공합니다..NET Core provides compatibility with .NET Framework and Mono APIs by implementing the .NET Standard specification.

프레임워크Frameworks

여러 프레임워크가 .NET Core를 기반으로 빌드되었습니다.Multiple frameworks have been built on top of .NET Core:

컴퍼지션Composition

.NET Core는 다음과 같은 부분으로 구성됩니다..NET Core is composed of the following parts:

  • .NET Core 런타임은 형식 시스템, 어셈블리 로드, 가비지 수집기, 네이티브 interop, 기타 기본 서비스를 제공합니다.The .NET Core runtime, which provides a type system, assembly loading, a garbage collector, native interop, and other basic services. .NET Core 프레임워크 라이브러리는 기본 데이터 형식, 앱 컴퍼지션 형식, 기본 유틸리티를 제공합니다..NET Core framework libraries provide primitive data types, app composition types, and fundamental utilities.
  • ASP.NET 런타임은 웹앱, IoT 앱, 모바일 백 엔드 등의 최신 클라우드 기반 인터넷 연결 애플리케이션을 빌드하기 위한 프레임워크를 제공합니다.The ASP.NET runtime, which provides a framework for building modern cloud-based internet connected applications, such as web apps, IoT apps, and mobile backends.
  • .NET Core 개발자 환경을 사용할 수 있도록 하는 .NET Core CLI 도구 및 언어 컴파일러(RoslynF#)입니다.The .NET Core CLI tools and language compilers (Roslyn and F#) that enable the .NET Core developer experience.
  • dotnet 도구는 .NET Core 앱 및 CLI 도구를 시작하는 데 사용됩니다.The dotnet tool, which is used to launch .NET Core apps and CLI tools. 런타임을 선택 및 호스트하고, 어셈블리 로드 정책을 제공하며, 앱과 도구를 시작합니다.It selects the runtime and hosts the runtime, provides an assembly loading policy, and launches apps and tools.

이러한 구성 요소는 다음과 같은 방법으로 배포됩니다.These components are distributed in the following ways:

  • .NET Core 런타임 - .NET Core 런타임 및 프레임워크 라이브러리가 포함되어 있습니다..NET Core Runtime -- includes the .NET Core runtime and framework libraries.
  • ASP.NET Core 런타임 - ASP.NET Core 및 .NET Core 런타임 및 프레임워크 라이브러리가 포함되어 있습니다.ASP.NET Core Runtime -- includes ASP.NET Core and .NET Core runtime and framework libraries.
  • .NET Core SDK - .NET CLI 도구, ASP.NET Core 런타임 및 .NET Core 런타임 및 프레임워크가 포함되어 있습니다..NET Core SDK -- includes the .NET CLI Tools, ASP.NET Core runtime, and .NET Core runtime and framework.

소스 열기Open source

.NET Core는 오픈 소스(MIT 라이선스)이며 2014년 Microsoft에 의해 .NET Foundation에 제공되었습니다..NET Core is open source (MIT license) and was contributed to the .NET Foundation by Microsoft in 2014. 현재 가장 많이 사용되는 .NET Foundation 프로젝트 중 하나입니다.It's now one of the most active .NET Foundation projects. 개인, 교육 또는 상업용으로 개인 및 회사에서 사용할 수 있습니다.It can be used by individuals and companies, including for personal, academic, or commercial purposes. 여러 회사에서 앱, 도구, 새 플랫폼, 호스팅 서비스의 일부로 .NET Core를 사용합니다.Multiple companies use .NET Core as part of apps, tools, new platforms, and hosting services. 이러한 회사 중 일부는 GitHub에서 .NET Core에 대한 중요한 정보를 제공하고 .NET Foundation Technical Steering Group(.NET Foundation 기술 방향 설정 그룹)의 일부로 제품 판매에 대한 지침을 제공합니다.Some of these companies make significant contributions to .NET Core on GitHub and provide guidance on the product direction as part of the .NET Foundation Technical Steering Group.

뛰어난 적응성Designed for adaptability

.NET Core는 다른 .NET 제품과 매우 유사하지만 고유한 제품으로 빌드되었습니다..NET Core has been built as a very similar but unique product compared to other .NET products. 새 플랫폼과 워크로드에 광범위하게 적응되도록 설계되었으며, 사용 가능한 여러 OS 및 CPU 포트가 있고 더 많은 포트로 포팅될 수도 있습니다.It was designed to enable broad adaptability to new platforms and workloads and it has several OS and CPU ports available (and it may be ported to many more).

제품은 여러 조각으로 구분되어 다양한 시점에 다양한 부품을 새 플랫폼에 적용할 수 있습니다.The product is broken into several pieces, enabling the various parts to be adapted to new platforms at different times. 런타임 및 플랫폼별 기본 라이브러리는 하나의 단위로 이식해야 합니다.The runtime and platform-specific foundational libraries must be ported as a unit. 플랫폼 제약 없는 라이브러리는 구성에 따라 모든 플랫폼에서 있는 그대로 작동합니다.Platform-agnostic libraries should work as-is on all platforms, by construction. 개발자 효율성을 높이기 위해 플랫폼별 구현을 줄이려는 프로젝트 성향이 있으므로, 가능한 경우 항상 플랫폼 중립 C# 코드를 사용하여 알고리즘이나 API를 전체 또는 부분적으로 구현합니다.There's a project bias towards reducing platform-specific implementations to increase developer efficiency, preferring platform-neutral C# code whenever an algorithm or API can be implemented in-full or in-part that way.

일반적으로 사용자는 여러 운영 체제를 지원하기 위해 .NET Core를 구현하는 방법을 질문합니다.People commonly ask how .NET Core is implemented in order to support multiple operating systems. 또한 별도의 구현이 있는지 또는 조건부 컴파일이 사용되는지에 대해서도 질문합니다.They typically ask if there are separate implementations or if conditional compilation is used. 둘 다 조건부 컴파일에 대한 강력한 편견이 있습니다.It's both, with a strong bias towards conditional compilation.

대부분의 CoreFX가 모든 플랫폼에서 공유되는 플랫폼 중립 코드임을 다음 차트에서 확인할 수 있습니다.You can see in the following chart that the vast majority of CoreFX is platform-neutral code that is shared across all platforms. 플랫폼 중립 코드는 모든 플랫폼에서 사용할 수 있는 이식 가능한 단일 어셈블리로 구현할 수 있습니다.Platform-neutral code can be implemented as a single portable assembly that is used on all platforms.

CoreFX: 플랫폼별 코드 줄

Windows 및 Unix 구현은 크기가 비슷합니다.Windows and Unix implementations are similar in size. CoreFX에서 Microsoft.Win32.Registry와 같은 일부 Windows 전용 기능만 구현하고 Unix 전용 개념은 많이 구현하지 않으므로, Windows 구현이 더 큽니다.Windows has a larger implementation since CoreFX implements some Windows-only features, such as Microsoft.Win32.Registry but doesn't yet implement many Unix-only concepts. Linux 및 macOS 특정 구현은 크기가 거의 비슷하지만, 대부분의 Linux 및 macOS 구현이 Unix 구현에서 공유된다는 것도 확인할 수 있습니다.You'll also see that the majority of the Linux and macOS implementations are shared across a Unix implementation, while the Linux and macOS-specific implementations are roughly similar in size.

.NET Core에는 플랫폼별 라이브러리와 플랫폼 중립 라이브러리가 혼합되어 있습니다.There's a mix of platform-specific and platform-neutral libraries in .NET Core. 몇 가지 예제에서 패턴을 확인할 수 있습니다.You can see the pattern in a few examples:

다른 .NET 구현과 비교Comparisons to other .NET implementations

기존 .NET 구현과 비교하면 .NET Core의 크기와 모양을 더 쉽게 파악할 수 있습니다.It's probably easier to understand the size and shape of .NET Core by comparing it to existing .NET implementations.

.NET Framework와 비교Comparison with .NET Framework

.NET은 Microsoft가 2000년에 처음 발표한 후 발전해 왔습니다..NET was first announced by Microsoft in 2000 and then evolved from there. .NET Framework는 Microsoft에서 거의 20년 가까이 만들어낸 기본 .NET 구현입니다.The .NET Framework has been the primary .NET implementation produced by Microsoft during that nearly two decade period.

.NET Core와 .NET Framework 간의 주요 차이점은 다음과 같습니다.The major differences between .NET Core and the .NET Framework:

  • 앱 모델 - .NET Core는 일부 .NET Framework 앱 모델을 지원하지 않습니다.App-models -- .NET Core doesn't support all the .NET Framework app-models. 특히, ASP.NET Web Forms 및 ASP.NET MVC는 지원하지 않지만 ASP.NET Core MVC는 지원합니다.In particular, it doesn't support ASP.NET Web Forms and ASP.NET MVC, but it supports ASP.NET Core MVC. .NET Core 3.0부터 .NET Core는 Windows에서만 WPF와 Windows Forms도 지원합니다.And starting with .NET Core 3.0, .NET Core also supports WPF and Windows Forms on Windows only.
  • API - .NET Core에는 팩터링이 다른 .NET Framework 기본 클래스 라이브러리의 대량 하위 집합이 포함됩니다(핵심 사례에서 어셈블리 이름이 다르고, 형식에서 노출된 멤버가 다름).APIs -- .NET Core contains a large subset of .NET Framework Base Class Library, with a different factoring (assembly names are different; members exposed on types differ in key cases). 이러한 차이로 인해 소스를 .NET Core로 포팅하도록 변경해야 하는 경우도 있습니다.In some cases, these differences require changes to port source to .NET Core. 자세한 내용은 .NET 이식성 분석기를 참조하세요.For more information, see The .NET Portability Analyzer. .NET Core는 .NET Standard API 사양을 구현합니다..NET Core implements the .NET Standard API specification.
  • 하위 시스템 -- .Net Core는 더 간단한 구현 및 프로그래밍 모델 구축을 위해 .NET Framework에 하위 시스템의 하위 집합을 구현합니다.Subsystems -- .NET Core implements a subset of the subsystems in the .NET Framework, with the goal of a simpler implementation and programming model. 예를 들어 리플렉션은 지원되지만 CAS(코드 액세스 보안)는 지원되지 않습니다.For example, Code Access Security (CAS) isn't supported, while reflection is supported.
  • 플랫폼 -- .NET Framework는 Windows와 Windows Server를 지원하는 반면 .NET Core는 macOS 및 Linux도 지원합니다.Platforms -- The .NET Framework supports Windows and Windows Server while .NET Core also supports macOS and Linux.
  • 오픈 소스 -- .NET Core는 오픈 소스이며, .NET Framework의 읽기 전용 하위 집합은 오픈 소스입니다.Open Source -- .NET Core is open source, while a read-only subset of the .NET Framework is open source.

.NET Core는 고유하며 .NET Framework 및 기타 .NET 구현과 현저한 차이가 있지만, 소스 또는 이진 공유 기술을 사용하여 이러한 구현 간에 코드를 간단하게 공유할 수 있습니다.While .NET Core is unique and has significant differences to the .NET Framework and other .NET implementations, it's straightforward to share code between these implementations, using either source or binary sharing techniques.

.NET Core는 side-by-side 설치를 지원하고 그 런타임은 .NET Framework와 완전히 독립적이므로 .NET Framework가 설치된 머신에 아무 문제 없이 설치할 수 있습니다.Because .NET Core supports side-by-side installation and its runtime is completely independent of the .NET Framework, it can be installed on machines with .NET Framework installed without any issues.

Mono와 비교Comparison with Mono

Mono는 원본 플랫폼 간 .NET 구현입니다.Mono is the original cross-platform implementation of .NET. .NET Framework의 오픈 소스 대안으로 시작되었으며, iOS 및 Android 디바이스가 보편화되면서 모바일 디바이스 대상 프로그램으로 전환되었습니다.It started out as an open-source alternative to .NET Framework and transitioned to targeting mobile devices as iOS and Android devices became popular. .NET Framework의 커뮤니티 복제본으로 생각할 수 있습니다.It can be thought of as a community clone of the .NET Framework. Mono 프로젝트 팀은 호환되는 구현을 제공하기 위해 Microsoft에서 게시한 오픈 .NET 표준(특히 ECMA 335)을 사용했습니다.The Mono project team relied on the open .NET standards (notably ECMA 335) published by Microsoft to provide a compatible implementation.

.NET Core와 Mono 간의 주요 차이점은 다음과 같습니다.The major differences between .NET Core and Mono:

  • 앱 모델 - Mono는 Xamarin 제품을 통해 .NET Framework 앱 모델의 하위 집합(예: Windows Forms)과 모바일 개발을 위한 몇 가지 추가 모델(예: Xamarin.iOS)을 지원합니다.App-models -- Mono supports a subset of the .NET Framework app-models (for example, Windows Forms) and some additional ones for mobile development (for example, Xamarin.iOS) through the Xamarin product. .NET Core는 Xamarin을 지원하지 않습니다..NET Core doesn't support Xamarin.
  • API -- Mono는 .NET Framework API의 큰 하위 집합을 지원하며, 동일한 어셈블리 이름 및 팩터링을 사용합니다.APIs -- Mono supports a large subset of the .NET Framework APIs, using the same assembly names and factoring.
  • 플랫폼 -- Mono는 여러 플랫폼 및 CPU를 지원합니다.Platforms -- Mono supports many platforms and CPUs.
  • 오픈 소스 -- Mono와 .NET Core 둘 다 MIT 라이선스를 사용하며 .NET Foundation 프로젝트입니다.Open Source -- Mono and .NET Core both use the MIT license and are .NET Foundation projects.
  • 포커스 -- 최근 몇 년 간 Mono의 주요 포커스는 모바일 플랫폼인 반면, .NET Core의 포커스는 클라우드 및 데스크톱 워크로드입니다.Focus -- The primary focus of Mono in recent years is mobile platforms, while .NET Core is focused on cloud and desktop workloads.

미래The future

.NET Core의 다음 릴리스인 .NET 5는 플랫폼 통합을 나타낸다고 발표되었습니다.It was announced that .NET 5 will be the next release of .NET Core and represents a unification of the platform. 이 프로젝트는 다음과 같은 몇 가지 주요 방법으로 .NET을 개선하려고 합니다.The project aims to improve .NET in a few key ways:

  • 어디서나 사용할 수 있고 일관성 있는 런타임 동작 및 개발자 환경을 제공하는 단일 .NET 런타임 및 프레임워크를 생성합니다.Produce a single .NET runtime and framework that can be used everywhere and that has uniform runtime behaviors and developer experiences.
  • .NET Core, .NET Framework, Xamarin, Mono를 활용하여 .NET의 기능을 확장합니다.Expand the capabilities of .NET by taking the best of .NET Core, .NET Framework, Xamarin and Mono.
  • 개발자(Microsoft 및 커뮤니티)가 함께 작업하고 확장할 수 있으며 모든 시나리오를 개선하는 단일 코드 베이스에서 해당 제품을 빌드합니다.Build that product out of a single code-base that developers (Microsoft and the community) can work on and expand together and that improves all scenarios.

.NET 5와 관련된 계획에 대한 자세한 내용은 .NET 5 소개를 참조하세요.For more details about what's being planned for .NET 5, see Introducing .NET 5.