ASP.NET Core 소개Introduction to ASP.NET Core

작성자: Daniel Roth, Rick AndersonShaun LuttinBy Daniel Roth, Rick Anderson, and Shaun Luttin

ASP.NET Core는 최신 클라우드 사용 인터넷 연결 앱을 빌드하기 위한 플랫폼 간 고성능 오픈 소스 프레임워크입니다.ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-enabled, Internet-connected apps. ASP.NET Core를 사용하여 다음과 같은 작업을 수행할 수 있습니다.With ASP.NET Core, you can:

  • 웹앱 및 서비스, IoT(사물 인터넷) 앱 및 모바일 백 엔드를 빌드할 수 있습니다.Build web apps and services, Internet of Things (IoT) apps, and mobile backends.
  • Windows, macOS 및 Linux에서 선호하는 개발 도구를 사용할 수 있습니다.Use your favorite development tools on Windows, macOS, and Linux.
  • 클라우드 또는 온-프레미스에 배포할 수 있습니다.Deploy to the cloud or on-premises.
  • .NET Core에서 실행합니다.Run on .NET Core.

ASP.NET Core를 선택해야 하는 이유Why choose ASP.NET Core?

수백만 명의 개발자가 ASP.NET 4.x를 사용하여 웹앱을 만들었고 지금도 만들고 있습니다.Millions of developers use or have used ASP.NET 4.x to create web apps. ASP.NET Core는 더 간결하고 모듈화된 프레임워크를 만드는 아키텍처 변경 내용이 포함된 ASP.NET 4.x의 재설계입니다.ASP.NET Core is a redesign of ASP.NET 4.x, including architectural changes that result in a leaner, more modular framework.

ASP.NET Core는 다음과 같은 이점을 제공합니다.ASP.NET Core provides the following benefits:

  • 웹 UI 및 웹 API를 동일한 과정으로 빌드합니다.A unified story for building web UI and web APIs.
  • 테스트 가능성을 고려하여 설계되었습니다.Architected for testability.
  • Razor 페이지는 더 쉽고 더 생산적으로 코딩 페이지에 초점을 맞춘 시나리오를 만듭니다.Razor Pages makes coding page-focused scenarios easier and more productive.
  • Blazor를 사용하면 JavaScript와 함께 브라우저에서 C#을 사용할 수 있습니다.Blazor lets you use C# in the browser alongside JavaScript. 모두 .NET으로 작성된 서버 쪽 및 클라이언트 쪽 앱을 공유합니다.Share server-side and client-side app logic all written with .NET.
  • Windows, macOS 및 Linux에서 개발하고 실행할 수 있습니다.Ability to develop and run on Windows, macOS, and Linux.
  • 오픈 소스이며 커뮤니티에 중점을 둡니다.Open-source and community-focused.
  • 최신 클라이언트 쪽 프레임워크 및 워크플로 개발을 통합합니다.Integration of modern, client-side frameworks and development workflows.
  • gRPC를 사용하여 RPC(원격 프로시저 호출) 서비스 호스팅을 지원합니다.Support for hosting Remote Procedure Call (RPC) services using gRPC.
  • 클라우드를 갖춘 환경 기반 구성 시스템입니다.A cloud-ready, environment-based configuration system.
  • 종속성 주입이 기본 제공됩니다.Built-in dependency injection.
  • 간단한 고성능 모듈식 HTTP 요청 파이프라인을 포함합니다.A lightweight, high-performance, and modular HTTP request pipeline.
  • 다음에서 호스트할 수 있습니다.Ability to host on the following:
  • Side-by-side 버전 관리.Side-by-side versioning.
  • 최신 웹 개발을 간소화하는 도구를 포함합니다.Tooling that simplifies modern web development.

ASP.NET Core MVC를 사용하여 웹 API 및 웹 UI 빌드Build web APIs and web UI using ASP.NET Core MVC

ASP.NET Core MVC는 Web API웹앱을 만들기 위한 기능을 제공합니다.ASP.NET Core MVC provides features to build web APIs and web apps:

클라이언트 쪽 개발Client-side development

ASP.NET Core는 Blazor, Angular, React부트스트랩 등 유명한 클라이언트 쪽 프레임워크 및 라이브러리와 원활하게 통합됩니다.ASP.NET Core integrates seamlessly with popular client-side frameworks and libraries, including Blazor, Angular, React, and Bootstrap. 자세한 내용은 ASP.NET Core Blazor 소개 및 ‘클라이언트 쪽 개발’의 관련 항목을 참조하세요.For more information, see ASP.NET Core Blazor 소개 and related topics under Client-side development.

ASP.NET Core 대상 프레임워크ASP.NET Core target frameworks

ASP.NET Core 3.x 이상에서는 .NET Core만 대상으로 지정할 수 있습니다.ASP.NET Core 3.x and later can only target .NET Core. 일반적으로 ASP.NET Core는 .NET Standard 라이브러리로 구성됩니다.Generally, ASP.NET Core is composed of .NET Standard libraries. .NET Standard 2.0으로 작성된 라이브러리는 .NET Standard 2.0을 구현하는 모든 .NET 플랫폼에서 실행됩니다.Libraries written with .NET Standard 2.0 run on any .NET platform that implements .NET Standard 2.0.

.NET Core를 대상으로 지정하면 여러 이점이 있으며 이러한 이점은 각 릴리스마다 늘어나고 있습니다.There are several advantages to targeting .NET Core, and these advantages increase with each release. .NET Framework에 비해 .NET Core를 사용하여 얻을 수 있는 몇 가지 이점은 다음과 같습니다.Some advantages of .NET Core over .NET Framework include:

  • 플랫폼 간 사용 가능.Cross-platform. Windows, macOS 및 Linux에서 실행됩니다.Runs on Windows, macOS, and Linux.
  • 향상된 성능Improved performance
  • Side-by-side 버전 관리Side-by-side versioning
  • 새로운 APINew APIs
  • 오픈 소스Open source

ASP.NET Core 앱 개발을 소개하는 자습서는 다음의 순서대로 살펴보는 것이 좋습니다.We recommend the following sequence of tutorials for an introduction to developing ASP.NET Core apps:

  1. 개발하거나 유지 관리하려는 앱 형식에 대한 자습서를 살펴보세요.Follow a tutorial for the app type you want to develop or maintain.

    앱 형식App type 시나리오Scenario 자습서Tutorial
    웹앱Web app 새로운 서버 쪽 웹 UI 개발New server-side web UI development Razor Pages 시작Get started with Razor Pages
    웹앱Web app MVC 앱 유지 관리Maintaining an MVC app MVC 시작Get started with MVC
    웹앱Web app 클라이언트 쪽 웹 UI 개발Client-side web UI development Blazor 시작하기Get started with Blazor
    Web APIWeb API RESTful HTTP 서비스RESTful HTTP services 웹 API 만들기Create a web API
    원격 프로시저 호출 앱Remote Procedure Call app 프로토콜 버퍼를 사용하는 계약 중심 서비스Contract-first services using Protocol Buffers gRPC 서비스 시작Get started with a gRPC service
    실시간 앱Real-time app 서버 및 연결된 클라이언트 간의 양방향 통신Bidirectional communication between servers and connected clients SignalR 시작하기Get started with SignalR
  2. 기본 데이터 액세스를 수행하는 방법을 보여 주는 자습서를 살펴보세요.Follow a tutorial that shows how to do basic data access.

    시나리오Scenario 자습서Tutorial
    새로운 개발New development Entity Framework Core를 사용한 Razor PagesRazor Pages with Entity Framework Core
    MVC 앱 유지 관리Maintaining an MVC app Entity Framework Core를 사용한 MVCMVC with Entity Framework Core
  3. 모든 앱 형식에 적용되는 ASP.NET Core 기본 사항의 개요를 참고하세요.Read an overview of ASP.NET Core fundamentals that apply to all app types.

  4. 관심 있는 다른 항목은 목차를 찾아보세요.Browse the table of contents for other topics of interest.

대화형 웹 API 자습서도 있습니다.†There's also an interactive web API tutorial. 개발 도구를 로컬에 설치할 필요가 없습니다.No local installation of development tools is required. 해당 코드는 브라우저로 Azure Cloud Shell에서 실행되고, 테스트에는 curl이 사용됩니다.The code runs in an Azure Cloud Shell in your browser, and curl is used for testing.

.NET Framework에서 마이그레이션Migrate from .NET Framework

ASP.NET 4.x 앱을 ASP.NET Core로 마이그레이션하기 위한 참조 가이드는 ASP.NET에서 ASP.NET Core로 마이그레이션 문서를 참조하세요.For a reference guide to migrating ASP.NET 4.x apps to ASP.NET Core, see ASP.NET에서 ASP.NET Core로 마이그레이션.

ASP.NET Core는 최신 클라우드 사용 인터넷 연결 앱을 빌드하기 위한 플랫폼 간 고성능 오픈 소스 프레임워크입니다.ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-enabled, Internet-connected apps. ASP.NET Core를 사용하여 다음과 같은 작업을 수행할 수 있습니다.With ASP.NET Core, you can:

  • 웹앱 및 서비스, IoT(사물 인터넷) 앱 및 모바일 백 엔드를 빌드할 수 있습니다.Build web apps and services, Internet of Things (IoT) apps, and mobile backends.
  • Windows, macOS 및 Linux에서 선호하는 개발 도구를 사용할 수 있습니다.Use your favorite development tools on Windows, macOS, and Linux.
  • 클라우드 또는 온-프레미스에 배포할 수 있습니다.Deploy to the cloud or on-premises.
  • .NET Core 또는.NET Framework에서 실행할 수 있습니다.Run on .NET Core or .NET Framework.

ASP.NET Core를 선택해야 하는 이유Why choose ASP.NET Core?

수백만 명의 개발자가 ASP.NET 4.x를 사용하여 웹앱을 만들었고 지금도 만들고 있습니다.Millions of developers use or have used ASP.NET 4.x to create web apps. ASP.NET Core는 보다 간결하고 모듈화된 프레임워크를 만드는 아키텍처 변경 내용이 담긴 ASP.NET 4.x의 재설계입니다.ASP.NET Core is a redesign of ASP.NET 4.x, with architectural changes that result in a leaner, more modular framework.

ASP.NET Core는 다음과 같은 이점을 제공합니다.ASP.NET Core provides the following benefits:

  • 웹 UI 및 웹 API를 동일한 과정으로 빌드합니다.A unified story for building web UI and web APIs.
  • 테스트 가능성을 고려하여 설계되었습니다.Architected for testability.
  • Razor 페이지는 더 쉽고 더 생산적으로 코딩 페이지에 초점을 맞춘 시나리오를 만듭니다.Razor Pages makes coding page-focused scenarios easier and more productive.
  • Blazor를 사용하면 JavaScript와 함께 브라우저에서 C#을 사용할 수 있습니다.Blazor lets you use C# in the browser alongside JavaScript. 모두 .NET으로 작성된 서버 쪽 및 클라이언트 쪽 앱을 공유합니다.Share server-side and client-side app logic all written with .NET.
  • Windows, macOS 및 Linux에서 개발하고 실행할 수 있습니다.Ability to develop and run on Windows, macOS, and Linux.
  • 오픈 소스이며 커뮤니티에 중점을 둡니다.Open-source and community-focused.
  • 최신 클라이언트 쪽 프레임워크 및 워크플로 개발을 통합합니다.Integration of modern, client-side frameworks and development workflows.
  • gRPC를 사용하여 RPC(원격 프로시저 호출) 서비스 호스팅을 지원합니다.Support for hosting Remote Procedure Call (RPC) services using gRPC.
  • 클라우드를 갖춘 환경 기반 구성 시스템입니다.A cloud-ready, environment-based configuration system.
  • 종속성 주입이 기본 제공됩니다.Built-in dependency injection.
  • 간단한 고성능 모듈식 HTTP 요청 파이프라인을 포함합니다.A lightweight, high-performance, and modular HTTP request pipeline.
  • 다음에서 호스트할 수 있습니다.Ability to host on the following:
  • Side-by-side 버전 관리.Side-by-side versioning.
  • 최신 웹 개발을 간소화하는 도구를 포함합니다.Tooling that simplifies modern web development.

ASP.NET Core MVC를 사용하여 웹 API 및 웹 UI 빌드Build web APIs and web UI using ASP.NET Core MVC

ASP.NET Core MVC는 Web API웹앱을 만들기 위한 기능을 제공합니다.ASP.NET Core MVC provides features to build web APIs and web apps:

클라이언트 쪽 개발Client-side development

ASP.NET Core는 Blazor, Angular, React부트스트랩 등 유명한 클라이언트 쪽 프레임워크 및 라이브러리와 원활하게 통합됩니다.ASP.NET Core integrates seamlessly with popular client-side frameworks and libraries, including Blazor, Angular, React, and Bootstrap. 자세한 내용은 ASP.NET Core Blazor 소개 및 ‘클라이언트 쪽 개발’의 관련 항목을 참조하세요.For more information, see ASP.NET Core Blazor 소개 and related topics under Client-side development.

ASP.NET Core 대상 .NET FrameworkASP.NET Core targeting .NET Framework

ASP.NET Core 2.x는 .NET Core 또는 .NET Framework를 대상으로 지정할 수 있습니다.ASP.NET Core 2.x can target .NET Core or .NET Framework. .NET Framework를 대상으로 지정한 ASP.NET Core 앱은 플랫폼 간 교차 사용이 불가능하며—Windows에서만 실행됩니다.ASP.NET Core apps targeting .NET Framework aren't cross-platform—they run on Windows only. 일반적으로 ASP.NET Core 2.x는 .NET 표준 라이브러리로 구성됩니다.Generally, ASP.NET Core 2.x is made up of .NET Standard libraries. .NET Standard 2.0으로 작성된 라이브러리는 .NET Standard 2.0을 구현하는 모든 .NET 플랫폼에서 실행됩니다.Libraries written with .NET Standard 2.0 run on any .NET platform that implements .NET Standard 2.0.

ASP.NET Core 2.x는 .NET Standard 2.0을 구현하는 .NET Framework 버전에서 지원됩니다.ASP.NET Core 2.x is supported on .NET Framework versions that implement .NET Standard 2.0:

  • .NET Framework 최신 버전을 사용하는 것이 좋습니다..NET Framework latest version is recommended.
  • .NET Framework 4.6.1 이상.NET Framework 4.6.1 and later.

ASP.NET Core 3.0 이상은 .NET Core에서만 실행됩니다.ASP.NET Core 3.0 and later will only run on .NET Core. 이 변경 사항에 대한 자세한 내용은 ASP.NET Core 3.0에 도입되는 변경 사항 개요를 참조하세요.For more details regarding this change, see A first look at changes coming in ASP.NET Core 3.0.

.NET Core를 대상으로 지정하면 여러 이점이 있으며 이러한 이점은 각 릴리스마다 늘어나고 있습니다.There are several advantages to targeting .NET Core, and these advantages increase with each release. .NET Framework에 비해 .NET Core를 사용하여 얻을 수 있는 몇 가지 이점은 다음과 같습니다.Some advantages of .NET Core over .NET Framework include:

  • 플랫폼 간 사용 가능.Cross-platform. macOS, Linux 및 Windows에서 실행됩니다.Runs on macOS, Linux, and Windows.
  • 향상된 성능Improved performance
  • Side-by-side 버전 관리Side-by-side versioning
  • 새로운 APINew APIs
  • 오픈 소스Open source

.NET Framework와 .NET Core 사이의 API 격차를 없애기 위해 Windows 호환 기능 팩을 통해 수천 개의 Windows 전용 API를 .NET Core에서도 사용할 수 있습니다.To help close the API gap from .NET Framework to .NET Core, the Windows Compatibility Pack made thousands of Windows-only APIs available in .NET Core. 이러한 API는 .NET Core 1.x에서는 사용할 수 없습니다.These APIs weren't available in .NET Core 1.x.

ASP.NET Core 앱 개발을 소개하는 자습서 및 문서는 다음의 순서대로 살펴보는 것이 좋습니다.We recommend the following sequence of tutorials and articles for an introduction to developing ASP.NET Core apps:

  1. 개발하거나 유지 관리하려는 앱 형식에 대한 자습서를 살펴보세요.Follow a tutorial for the type of app you want to develop or maintain.

    앱 형식App type 시나리오Scenario 자습서Tutorial
    웹앱Web app 새로운 개발의 경우For new development Razor Pages 시작Get started with Razor Pages
    웹앱Web app MVC 앱을 유지 관리하는 경우For maintaining an MVC app MVC 시작Get started with MVC
    Web APIWeb API 웹 API 만들기Create a web API
    실시간 앱Real-time app SignalR 시작하기Get started with SignalR
  2. 기본 데이터 액세스를 수행하는 방법을 보여 주는 자습서를 살펴보세요.Follow a tutorial that shows how to do basic data access.

    시나리오Scenario 자습서Tutorial
    새로운 개발의 경우For new development Entity Framework Core를 사용한 Razor PagesRazor Pages with Entity Framework Core
    MVC 앱을 유지 관리하는 경우For maintaining an MVC app Entity Framework Core를 사용한 MVCMVC with Entity Framework Core
  3. 모든 앱 형식에 적용되는 ASP.NET Core 기본 사항의 개요를 참고하세요.Read an overview of ASP.NET Core fundamentals that apply to all app types.

  4. 관심 있는 다른 항목은 목차를 찾아보세요.Browse the Table of Contents for other topics of interest.

†로컬 IDE를 설치할 필요 없이, 브라우저에서 모든 과정을 따라해볼 수 있는 웹 API 자습서가 제공됩니다.†There's also a web API tutorial that you follow entirely in the browser, no local IDE installation required. 해당 코드는 Azure Cloud Shell에서 실행되고, 테스트에는 curl이 사용됩니다.The code runs in an Azure Cloud Shell, and curl is used for testing.

.NET Framework에서 마이그레이션Migrate from .NET Framework

ASP.NET 앱을 ASP.NET Core로 마이그레이션하기 위한 참조 가이드는 ASP.NET에서 ASP.NET Core로 마이그레이션를 참조하세요.For a reference guide to migrating ASP.NET apps to ASP.NET Core, see ASP.NET에서 ASP.NET Core로 마이그레이션.

예제 다운로드 방법How to download a sample

대부분의 문서 및 자습서에는 예제 코드에 대한 링크가 포함되어 있습니다.Many of the articles and tutorials include links to sample code.

  1. ASP.NET 리포지토리 zip 파일을 다운로드합니다.Download the ASP.NET repository zip file.
  2. Docs-master.zip 파일의 압축을 풉니다.Unzip the Docs-master.zip file.
  3. 예제 링크의 URL을 참고하여 예제 디렉터리로 이동할 수 있습니다.Use the URL in the sample link to help you navigate to the sample directory.

예제 코드의 전처리기 지시문Preprocessor directives in sample code

다양한 시나리오를 보여주기 위해 예제 앱은 #define#if-#else/#elif-#endif 전처리기 지시문을 사용하여 예제 코드의 서로 다른 섹션을 선택적으로 컴파일하고 실행합니다.To demonstrate multiple scenarios, sample apps use the #define and #if-#else/#elif-#endif preprocessor directives to selectively compile and run different sections of sample code. 이 방법을 사용하는 예제의 경우 C# 파일 상단에 위치한 #define 지시문을 설정하여 실행할 시나리오와 연결된 기호를 정의합니다.For those samples that make use of this approach, set the #define directive at the top of the C# files to define the symbol associated with the scenario that you want to run. 일부 예제는 시나리오를 실행하기 위해 여러 파일의 맨 상단에 기호를 정의해야 합니다.Some samples require defining the symbol at the top of multiple files in order to run a scenario.

예를 들어, 다음 #define 기호 목록은 네 가지 시나리오를 사용할 수 있음을 나타냅니다(기호당 하나의 시나리오).For example, the following #define symbol list indicates that four scenarios are available (one scenario per symbol). 현재 예제 구성에서는 TemplateCode 시나리오를 실행합니다.The current sample configuration runs the TemplateCode scenario:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

ExpandDefault 시나리오를 실행하도록 예제를 변경하려면 ExpandDefault 기호를 정의하고 나머지 기호는 주석으로 처리하세요.To change the sample to run the ExpandDefault scenario, define the ExpandDefault symbol and leave the remaining symbols commented-out:

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

C# 전처리기 지시문을 사용하여 코드 섹션을 선택적으로 컴파일하는 방법에 대한 자세한 내용은 #define(C# 참조)#if(C# 참조)를 참조하세요.For more information on using C# preprocessor directives to selectively compile sections of code, see #define (C# Reference) and #if (C# Reference).

예제 코드의 지역Regions in sample code

일부 예제 앱에는 #region#endregion C# 지시문으로 둘러싸인 코드 섹션이 포함되어 있습니다.Some sample apps contain sections of code surrounded by #region and #endregion C# directives. 설명서 빌드 시스템은 렌더링된 설명서 토픽에 이러한 지역을 삽입합니다.The documentation build system injects these regions into the rendered documentation topics.

일반적으로 지역 이름에는 "snippet"이라는 단어가 포함됩니다.Region names usually contain the word "snippet." 다음 예제는 snippet_WebHostDefaults라는 지역을 보여줍니다.The following example shows a region named snippet_WebHostDefaults:

#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });
#endregion

이 C# 코드 조각은 다음 줄을 포함하고 있는 항목의 마크다운 파일에서 참조됩니다.The preceding C# code snippet is referenced in the topic's markdown file with the following line:

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]

코드를 둘러싸고 있는 #region#endregion 지시문은 안전하게 무시(또는 제거)할 수 있습니다.You may safely ignore (or remove) the #region and #endregion directives that surround the code. 항목에 설명된 예제 시나리오를 실행하려는 경우 이러한 지시문 내에서 코드를 변경하지 마세요.Don't alter the code within these directives if you plan to run the sample scenarios described in the topic. 다른 시나리오를 실험하는 경우 자유롭게 코드를 변경할 수 있습니다.Feel free to alter the code when experimenting with other scenarios.

자세한 내용은 ASP.NET 설명서에 참여: 코드 조각을 참조하세요.For more information, see Contribute to the ASP.NET documentation: Code snippets.

다음 단계Next steps

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