서버 앱에 대한 .NET 5와 .NET Framework 비교.NET 5 vs. .NET Framework for server apps

서버 쪽 애플리케이션을 빌드하는 데 지원되는 두 가지 .NET 구현에는 .NET Framework 및 .NET 5(.NET Core 포함)가 있습니다.There are two supported .NET implementations for building server-side apps: .NET Framework and .NET 5 (including .NET Core). 두 구현은 여러 가지 동일한 구성 요소를 공유하므로 둘 간에 코드를 공유할 수 있습니다.Both share many of the same components and you can share code across the two. 그러나 두 구현 간에는 기본적인 차이가 있으며 수행할 항목에 따라 선택이 달라집니다.However, there are fundamental differences between the two and your choice depends on what you want to accomplish. 이 문서에서는 각각 사용하는 경우에 대한 지침을 제공합니다.This article provides guidance on when to use each.

다음과 같은 경우에는 서버 애플리케이션에 .NET 5를 사용합니다.Use .NET 5 for your server application when:

  • 플랫폼 간 요구 사항이 있습니다.You have cross-platform needs.
  • 마이크로 서비스를 대상으로 합니다.You're targeting microservices.
  • Docker 컨테이너를 사용하고 있습니다.You're using Docker containers.
  • 고성능 및 확장 가능한 시스템이 필요합니다.You need high-performance and scalable systems.
  • .NET 버전이 애플리케이션별로 함께 필요합니다.You need side-by-side .NET versions per application.

다음과 같은 경우에는 서버 애플리케이션에 .NET Framework를 사용합니다.Use .NET Framework for your server application when:

  • 앱이 현재 .NET Framework를 사용합니다(마이그레이션하는 대신 확장 권장).Your app currently uses .NET Framework (recommendation is to extend instead of migrating).
  • 앱이 .NET 5에 사용할 수 없는 타사 .NET 라이브러리 또는 NuGet 패키지를 사용합니다.Your app uses third-party .NET libraries or NuGet packages not available for .NET 5.
  • 앱이 .NET 5에 사용할 수 없는 .NET 기술을 사용합니다.Your app uses .NET technologies that aren't available for .NET 5.
  • 앱이 .NET 5를 지원하지 않는 플랫폼을 사용합니다.Your app uses a platform that doesn't support .NET 5.

.NET 5를 선택하는 경우When to choose .NET 5

다음 섹션에서는 앞에서 설명한 .NET 5를 선택해야 하는 이유에 대해 좀 더 자세히 설명합니다.The following sections give a more detailed explanation of the previously stated reasons for picking .NET 5.

플랫폼 간 요구 사항Cross-platform needs

애플리케이션(웹/서비스)이 여러 플랫폼(Windows, Linux 및 macOS)에서 실행되어야 하는 경우 .NET 5를 사용합니다.If your application (web/service) needs to run on multiple platforms (Windows, Linux, and macOS), use .NET 5.

.NET 5는 앞에서 언급한 운영 체제를 개발 워크스테이션으로 지원합니다..NET 5 supports the previously mentioned operating systems as your development workstation. Visual Studio는 Windows 및 macOS용 IDE(통합 개발 환경)를 제공합니다.Visual Studio provides an Integrated Development Environment (IDE) for Windows and macOS. 또한 macOS, Linux 및 Windows에서 실행되는 Visual Studio Code를 사용할 수 있습니다.You can also use Visual Studio Code, which runs on macOS, Linux, and Windows. Visual Studio Code는 IntelliSense 및 디버깅을 포함하여 .NET 5를 지원합니다.Visual Studio Code supports .NET 5, including IntelliSense and debugging. Sublime, Emacs 및 VI 같은 대부분의 타사 편집기는 .NET 5에서 작동합니다.Most third-party editors, such as Sublime, Emacs, and VI, work with .NET 5. 이러한 타사 편집기는 Omnisharp를 사용하여 편집기 IntelliSense를 가져옵니다.These third-party editors get editor IntelliSense using Omnisharp. 어떤 코드 편집기도 사용하지 않고, 지원되는 모든 플랫폼에서 사용할 수 있는 .NET Core CLI를 직접 사용할 수도 있습니다.You can also avoid any code editor and directly use the .NET Core CLI, available for all supported platforms.

마이크로 서비스 아키텍처Microservices architecture

마이크로 서비스 아키텍처를 사용하면 서비스 경계를 벗어나 여러 기술을 융합할 수 있습니다.A microservices architecture allows a mix of technologies across a service boundary. 이러한 기술 융합을 통해 다른 마이크로서비스나 서비스에서 작동하는 새로운 마이크로서비스에 .NET 5를 점진적으로 적용할 수 있습니다.This technology mix enables a gradual embrace of .NET 5 for new microservices that work with other microservices or services. 예를 들어 .NET Framework, Java, Ruby 또는 다른 모놀리식 기술로 개발된 서비스나 마이크로 서비스를 융합할 수 있습니다.For example, you can mix microservices or services developed with .NET Framework, Java, Ruby, or other monolithic technologies.

사용 가능한 많은 인프라 플랫폼이 있습니다.There are many infrastructure platforms available. Azure Service Fabric은 크고 복잡한 마이크로 서비스 시스템용으로 설계되었습니다.Azure Service Fabric is designed for large and complex microservice systems. Azure App Service는 상태 비저장 마이크로 서비스에 적합합니다.Azure App Service is a good choice for stateless microservices. Docker를 바탕으로 하는 마이크로 서비스 대안의 경우 컨테이너 섹션에 설명된 대로 모든 종류의 마이크로 서비스 접근 방식과 맞습니다.Microservices alternatives based on Docker fit any kind of microservices approach, as explained in the Containers section. 이러한 모든 플랫폼은 .NET 5를 지원하므로 마이크로서비스를 호스팅하는 데 적합합니다.All these platforms support .NET 5 and make them ideal for hosting your microservices.

마이크로 서비스 아키텍처에 대한 자세한 내용은 .NET 마이크로 서비스. 컨테이너화된 .NET 애플리케이션을 위한 아키텍처를 참조하세요.For more information about microservices architecture, see .NET Microservices. Architecture for Containerized .NET Applications.

컨테이너Containers

컨테이너는 일반적으로 마이크로 서비스 아키텍처와 함께 사용됩니다.Containers are commonly used in conjunction with a microservices architecture. 또한 컨테이너는 모든 아키텍처 패턴을 따르는 웹앱 또는 서비스를 컨테이너화하는 데 사용할 수 있습니다.Containers can also be used to containerize web apps or services that follow any architectural pattern. .NET Framework를 Windows 컨테이너에서 사용할 수 있지만 .NET 5의 모듈화된 간단한 특성이 컨테이너에 더 적합합니다..NET Framework can be used on Windows containers, but the modularity and lightweight nature of .NET 5 makes it a better choice for containers. 컨테이너를 만들고 배포할 때 컨테이너 이미지의 크기가 .NET Framework보다 .NET 5를 사용할 때 훨씬 더 작습니다.When creating and deploying a container, the size of its image is much smaller with .NET 5 than with .NET Framework. 플랫폼 간 사용되므로 예를 들어 서버 앱을 Linux Docker 컨테이너에 배포할 수 있습니다.Because it's cross-platform, you can deploy server apps to Linux Docker containers, for example.

Docker 컨테이너는 고유한 Linux 또는 Windows 인프라나 Azure Kubernetes Service 같은 클라우드 서비스에서 호스트할 수 있습니다.Docker containers can be hosted in your own Linux or Windows infrastructure, or in a cloud service such as Azure Kubernetes Service. Azure Kubernetes Service는 클라우드에서 컨테이너 기반 애플리케이션을 관리, 오케스트레이션 및 확장할 수 있습니다.Azure Kubernetes Service can manage, orchestrate, and scale container-based applications in the cloud.

고성능 및 확장 가능한 시스템High-performance and scalable systems

시스템에 가장 적합한 성능 및 확장성이 필요한 경우 .NET 5 및 ASP.NET Core를 선택하는 것이 최고입니다.When your system needs the best possible performance and scalability, .NET 5 and ASP.NET Core are your best options. Windows Server 및 Linux용 고성능 서버 런타임은 TechEmpower 벤치마크에서 .NET을 최상의 웹 프레임워크로 만듭니다.High-performance server runtime for Windows Server and Linux makes .NET a top performing web framework on TechEmpower benchmarks.

성능 및 확장성은 수백 개의 마이크로 서비스가 실행될 수 있는 마이크로 서비스 아키텍처와 특히 관련이 있습니다.Performance and scalability are especially relevant for microservices architectures, where hundreds of microservices may be running. ASP.NET Core를 사용할 경우 시스템은 훨씬 더 적은 수의 서버/VM(가상 컴퓨터)에서 실행됩니다.With ASP.NET Core, systems run with a much lower number of servers/Virtual Machines (VM). 감소된 서버/VM으로 인해 인프라 및 호스팅 비용이 절감됩니다.The reduced servers/VMs save costs in infrastructure and hosting.

애플리케이션 수준별 병렬 .NET 버전Side by side .NET versions per application level

다른 버전의 .NET에 대한 종속성이 있는 애플리케이션을 설치하려면 .NET 5를 사용하는 것이 좋습니다.To install applications with dependencies on different versions of .NET, we recommend .NET 5. .NET 5는 동일한 머신에서 서로 다른 버전의 .NET 5 런타임 병렬 설치를 지원합니다..NET 5 supports side-by-side installation of different versions of the .NET 5 runtime on the same machine. 이 병렬 설치는 동일한 서버에서 여러 서비스를 허용하며 각 서비스는 고유한 버전의 .NET 5(또는 .NET Core 2.1이나 3.1)에 있습니다.This side-by-side installation allows multiple services on the same server, each of them on its own version of .NET 5 (or .NET Core 2.1 or 3.1). 또한 위험을 줄이고 애플리케이션 업그레이드 및 IT 운영 비용을 절감할 수 있습니다.It also lowers risks and saves money in application upgrades and IT operations.

.NET Framework에서는 병렬 설치를 수행할 수 없습니다.Side-by-side installation isn't possible with .NET Framework. Windows 구성 요소이며 한 번에 한 버전만 머신에 존재할 수 있습니다.It's a Windows component, and only one version can exist on a machine at a time. .NET Framework의 각 버전은 이전 버전을 대체합니다.Each version of .NET Framework replaces the previous version. 최신 버전의 .NET Framework를 대상으로 하는 새 앱을 설치하는 경우 이전 버전이 바뀌기 때문에 컴퓨터에서 실행되는 기존 앱이 중단될 수 있습니다.If you install a new app that targets a later version of .NET Framework, you might break existing apps that run on the machine, because the previous version was replaced.

.NET Framework를 선택하는 경우When to choose .NET Framework

.NET 5는 새 애플리케이션 및 애플리케이션 패턴에 상당한 이점을 제공합니다..NET 5 offers significant benefits for new applications and application patterns. 그러나 .NET Framework는 많은 기존 시나리오에서 계속 자연스럽게 선택되며 .NET Framework는 모든 서버 애플리케이션에서 .NET 5로 대체되지 않습니다.However, .NET Framework continues to be the natural choice for many existing scenarios, and as such, .NET Framework isn't replaced by .NET 5 for all server applications.

현재 .NET Framework 애플리케이션Current .NET Framework applications

대부분의 경우 기존 애플리케이션을 .NET 5로 마이그레이션할 필요가 없습니다.In most cases, you don't need to migrate your existing applications to .NET 5. 대신 ASP.NET 코어에서 새 웹 서비스를 작성하는 등 기존 애플리케이션을 확장할 때 .NET 5를 사용하는 것이 좋습니다.Instead, a recommended approach is to use .NET 5 as you extend an existing application, such as writing a new web service in ASP.NET Core.

.NET 5에 사용할 수 없는 타사 라이브러리 또는 NuGet 패키지Third-party libraries or NuGet packages not available for .NET 5

.NET Standard에서는 .NET 5를 포함한 모든 .NET 구현에서 코드를 공유할 수 있습니다..NET Standard enables sharing code across all .NET implementations, including .NET 5. .NET Standard 2.0에서는 호환 모드를 통해 .NET Standard 및 .NET 5 프로젝트가 .NET Framework 라이브러리를 참조할 수 있습니다.With .NET Standard 2.0, a compatibility mode allows .NET Standard and .NET 5 projects to reference .NET Framework libraries. 자세한 내용은 .NET Framework 라이브러리 지원을 참조하세요.For more information, see Support for .NET Framework libraries.

라이브러리 또는 NuGet 패키지가 .NET Standard 또는 .NET 5에서 사용할 수 없는 기술을 사용하는 경우에만 .NET Framework를 사용해야 합니다.You need to use .NET Framework only in cases where the libraries or NuGet packages use technologies that aren't available in .NET Standard or .NET 5.

.NET 5에 사용할 수 없는 .NET 기술.NET technologies not available for .NET 5

일부 .NET Framework 기술은 .NET 5에서 사용할 수 없습니다.Some .NET Framework technologies aren't available in .NET 5. 다음 목록은 .NET 5에서 제공되지 않는 가장 일반적인 기술입니다.The following list shows the most common technologies not found in .NET 5:

  • ASP.NET Web Forms 애플리케이션: ASP.NET Web Forms는 .NET Framework에서만 사용할 수 있습니다.ASP.NET Web Forms applications: ASP.NET Web Forms are only available in .NET Framework. ASP.NET Core는 ASP.NET Web Forms에 사용할 수 없습니다.ASP.NET Core cannot be used for ASP.NET Web Forms.

  • ASP.NET 웹 페이지 애플리케이션: ASP.NET 웹 페이지는 ASP.NET Core에 포함되지 않습니다.ASP.NET Web Pages applications: ASP.NET Web Pages aren't included in ASP.NET Core.

  • WCF 서비스 구현.WCF services implementation. .NET 5에서 WCF 서비스를 사용할 수 있는 WCF 클라이언트 라이브러리가 있더라도 WCF 서버 구현은 현재 .NET Framework에서만 사용할 수 있습니다.Even when there's a WCF client library to consume WCF services from .NET 5, WCF server implementation is currently only available in .NET Framework.

  • 워크플로 관련 서비스: Windows WF(Workflow Foundation), 워크플로 서비스(단일 서비스의 WCF + WF) 및 WCF Data Services(이전의 “ADO.NET Data Services”)는 .NET Framework에서만 사용할 수 있습니다.Workflow-related services: Windows Workflow Foundation (WF), Workflow Services (WCF + WF in a single service), and WCF Data Services (formerly known as "ADO.NET Data Services") are only available in .NET Framework.

  • 언어 지원: Visual Basic 및 F#은 현재 .NET 5에서 지원되지만 일부 프로젝트 형식에서는 지원되지 않습니다.Language support: Visual Basic and F# are currently supported in .NET 5, but not for all project types. 지원되는 프로젝트 템플릿 목록은 dotnet new에 대한 템플릿 옵션을 참조하세요.For a list of supported project templates, see Template options for dotnet new.

자세한 내용은 .NET 5에서 사용할 수 없는 .NET Framework 기술을 참조하세요.For more information, see .NET Framework technologies unavailable in .NET 5.

플랫폼은 .NET 5를 지원하지 않습니다.Platform doesn't support .NET 5

일부 Microsoft 또는 타사 플랫폼에서는 .NET 5를 지원하지 않습니다.Some Microsoft or third-party platforms don't support .NET 5. 일부 Azure 서비스에서는 .NET 5에서 사용할 수 없는 SDK를 제공합니다.Some Azure services provide an SDK not yet available for consumption on .NET 5. 이러한 경우 클라이언트 SDK 대신 상응하는 REST API를 사용할 수 있습니다.In such cases, you can use the equivalent REST API instead of the client SDK.

참조See also