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-based, Internet-connected applications. ASP.NET Core를 사용하면 다음과 같은 작업을 수행할 수 있습니다.With ASP.NET Core, you can:

  • 웹앱 및 서비스, IoT 앱 및 모바일 백 엔드를 빌드합니다.Build web apps and services, 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 have used (and continue to use) 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 strongly 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 차이를 줄이기 위해 최선을 다하고 있습니다.We're working hard to close the API gap from .NET Framework to .NET Core. Windows 호환 팩을 통해 수천 개의 Windows 전용 API를 .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 페이지 시작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
    Blazor app Blazor 시작하기Get started with Blazor
    원격 프로시저 호출 앱Remote Procedure Call app gRPC 서비스 시작Get started with a gRPC service
  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 features that apply to all app types:

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

* 브라우저에서 수행할 새로운 웹 API 자습서가 있으며 로컬 IDE를 설치할 필요가 없습니다.* There is a new 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에서 마이그레이션Migration from the .NET Framework

ASP.NET 앱을 ASP.NET Core로 마이그레이션에 대한 참조 가이드는 <migration/proper-to-2x/index>를 참조하세요.For a reference guide to migrating ASP.NET apps to ASP.NET Core, see <migration/proper-to-2x/index>.

샘플 다운로드 방법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# 코드 조각은 다음 줄을 포함한 항목의 markdown 파일에서 참조됩니다.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: