서버 앱에 대한 .NET와 .NET Framework 비교

서버 쪽 앱을 빌드하는 데 지원되는 두 가지 .NET 구현은 다음과 같습니다.

구현 포함된 버전
.NET .NET Core 1.0~3.1, .NET 5 이상 버전의 .NET.
.NET Framework .NET Framework 1.0~4.8

두 구현은 여러 가지 동일한 구성 요소를 공유하므로 둘 간에 코드를 공유할 수 있습니다. 그러나 두 구현 간에는 기본적인 차이가 있으며 수행할 항목에 따라 선택이 달라집니다. 이 문서에서는 각각 사용하는 경우에 대한 지침을 제공합니다.

다음과 같은 경우에는 서버 애플리케이션에 .NET을 사용합니다.

  • 플랫폼 간 요구 사항이 있습니다.
  • 마이크로 서비스를 대상으로 합니다.
  • Docker 컨테이너를 사용하고 있습니다.
  • 고성능 및 확장 가능한 시스템이 필요합니다.
  • .NET 버전이 애플리케이션별로 함께 필요합니다.

다음과 같은 경우에는 서버 애플리케이션에 .NET Framework를 사용합니다.

  • 앱이 현재 .NET Framework를 사용합니다(마이그레이션하는 대신 확장 권장).
  • 앱이 .NET에 사용할 수 없는 타사 라이브러리 또는 NuGet 패키지를 사용합니다.
  • 앱이 .NET에 사용할 수 없는 .NET Framework 기술을 사용합니다.
  • 앱이 .NET을 지원하지 않는 플랫폼을 사용합니다.

.NET을 선택하는 경우

다음 섹션에서는 앞에서 설명한 .NET Framework가 아니라 .NET을 선택해야 하는 이유에 대해 좀 더 자세히 설명합니다.

플랫폼 간 요구 사항

웹 또는 서비스 애플리케이션을 여러 플랫폼(예: Windows, Linux 및 macOS)에서 실행해야 하는 경우 .NET을 사용합니다.

.NET는 앞서 언급한 운영 체제를 개발 워크스테이션으로 지원합니다. Visual Studio는 Windows 및 macOS용 IDE(통합 개발 환경)를 제공합니다. 또한 macOS, Linux 및 Windows에서 실행되는 Visual Studio Code를 사용할 수 있습니다. Visual Studio Code는 IntelliSense 및 디버깅을 포함하여 .NET을 지원합니다. Sublime, Emacs 및 VI 같은 대부분의 타사 편집기는 .NET에서 작동합니다. 이러한 타사 편집기는 Omnisharp를 사용하여 편집기 IntelliSense를 가져옵니다. 어떤 코드 편집기도 사용하지 않고, 지원되는 모든 플랫폼에서 사용할 수 있는 .NET CLI를 직접 사용할 수도 있습니다.

마이크로 서비스 아키텍처

마이크로 서비스 아키텍처를 사용하면 서비스 경계를 벗어나 여러 기술을 융합할 수 있습니다. 이러한 기술 융합을 통해 다른 마이크로서비스나 서비스에서 작동하는 새로운 마이크로서비스에 .NET을 점진적으로 적용할 수 있습니다. 예를 들어 .NET Framework, Java, Ruby 또는 다른 모놀리식 기술로 개발된 서비스나 마이크로 서비스를 융합할 수 있습니다.

사용 가능한 많은 인프라 플랫폼이 있습니다. Azure Service Fabric은 크고 복잡한 마이크로 서비스 시스템용으로 설계되었습니다. Azure App Service는 상태 비저장 마이크로 서비스에 적합합니다. Docker를 바탕으로 하는 마이크로 서비스 대안의 경우 컨테이너 섹션에 설명된 대로 모든 종류의 마이크로 서비스 접근 방식과 맞습니다. 이러한 모든 플랫폼은 .NET을 지원하므로 마이크로서비스를 호스팅하는 데 적합합니다.

마이크로 서비스 아키텍처에 대한 자세한 내용은 .NET 마이크로 서비스. 컨테이너화된 .NET 애플리케이션을 위한 아키텍처를 참조하세요.

컨테이너

컨테이너는 일반적으로 마이크로 서비스 아키텍처와 함께 사용됩니다. 또한 컨테이너는 모든 아키텍처 패턴을 따르는 웹앱 또는 서비스를 컨테이너화하는 데 사용할 수 있습니다. .NET Framework를 Windows 컨테이너에서 사용할 수 있지만 .NET의 모듈화된 간단한 특성이 컨테이너에 더 적합합니다. 컨테이너를 만들고 배포할 때 컨테이너 이미지의 크기가 .NET Framework보다 .NET을 사용할 때 훨씬 더 작습니다. 플랫폼 간 사용되므로 예를 들어 서버 앱을 Linux Docker 컨테이너에 배포할 수 있습니다.

Docker 컨테이너는 고유한 Linux 또는 Windows 인프라나 Azure Kubernetes Service 같은 클라우드 서비스에서 호스트할 수 있습니다. Azure Kubernetes Service는 클라우드에서 컨테이너 기반 애플리케이션을 관리, 오케스트레이션 및 확장할 수 있습니다.

고성능 및 확장 가능한 시스템

시스템에 가장 적합한 성능 및 확장성이 필요한 경우 .NET 및 ASP.NET Core를 선택하는 것이 최고입니다. Windows Server 및 Linux용 고성능 서버 런타임은 TechEmpower 벤치마크에서 ASP.NET Core를 최상의 웹 프레임워크로 만듭니다.

성능 및 확장성은 수백 개의 마이크로 서비스가 실행될 수 있는 마이크로 서비스 아키텍처와 특히 관련이 있습니다. ASP.NET Core를 사용할 경우 시스템은 훨씬 더 적은 수의 서버/VM(가상 컴퓨터)에서 실행됩니다. 감소된 서버/VM으로 인해 인프라 및 호스팅 비용이 절감됩니다.

애플리케이션 수준별 병렬 .NET 버전

다른 버전의 .NET에 대한 종속성이 있는 애플리케이션을 설치하려면 .NET을 사용하는 것이 좋습니다. 이러한 구현은 동일한 머신에서 서로 다른 버전의 .NET 런타임 병렬 설치를 지원합니다. 이 병렬 설치는 동일한 서버에서 여러 서비스를 허용하며 각 서비스는 고유한 버전의 .NET에 있습니다. 또한 위험을 줄이고 애플리케이션 업그레이드 및 IT 운영 비용을 절감할 수 있습니다.

.NET Framework에서는 병렬 설치를 수행할 수 없습니다. Windows 구성 요소이며 한 번에 한 버전만 머신에 존재할 수 있습니다. .NET Framework의 각 버전은 이전 버전을 대체합니다. 최신 버전의 .NET Framework를 대상으로 하는 새 앱을 설치하는 경우 이전 버전이 바뀌기 때문에 컴퓨터에서 실행되는 기존 앱이 중단될 수 있습니다.

.NET Framework를 선택하는 경우

.NET는 새 애플리케이션 및 애플리케이션 패턴에 상당한 이점을 제공합니다. 그러나 .NET Framework는 많은 기존 시나리오에서 계속 자연스럽게 선택되며 .NET Framework는 모든 서버 애플리케이션에서 .NET로 대체되지 않습니다.

현재 .NET Framework 애플리케이션

대부분의 경우 기존 애플리케이션을 .NET으로 마이그레이션할 필요가 없습니다. 대신 ASP.NET 코어에서 새 웹 서비스를 작성하는 등 기존 애플리케이션을 확장할 때 .NET을 사용하는 것이 좋습니다.

.NET에 사용할 수 없는 타사 라이브러리 또는 NuGet 패키지

.NET Standard에서는 .NET Core/5 이상을 포함한 모든 .NET 구현에서 코드를 공유할 수 있습니다. .NET Standard 2.0에서는 호환 모드를 통해 .NET Standard 및 .NET 프로젝트가 .NET Framework 라이브러리를 참조할 수 있습니다. 자세한 내용은 .NET Framework 라이브러리 지원을 참조하세요.

라이브러리 또는 NuGet 패키지가 .NET Standard 또는 .NET에서 사용할 수 없는 기술을 사용하는 경우에만 .NET Framework를 사용해야 합니다.

.NET에서 사용할 수 없는 .NET Framework 기술

일부 .NET Framework 기술은 .NET에서 사용할 수 없습니다. 다음 목록은 .NET에서 제공되지 않는 가장 일반적인 기술입니다.

  • ASP.NET Web Forms 애플리케이션: ASP.NET Web Forms는 .NET Framework에서만 사용할 수 있습니다. ASP.NET Core는 ASP.NET Web Forms에 사용할 수 없습니다.

  • ASP.NET 웹 페이지 애플리케이션: ASP.NET 웹 페이지는 ASP.NET Core에 포함되지 않습니다.

  • 워크플로 관련 서비스: Windows WF(Workflow Foundation), 워크플로 서비스(단일 서비스의 WCF + WF) 및 WCF Data Services(이전의 “ADO.NET Data Services”)는 .NET Framework에서만 사용할 수 있습니다.

  • 언어 지원: Visual Basic 및 F#은 현재 .NET에서 지원되지만 일부 프로젝트 형식에서는 지원되지 않습니다. 지원되는 프로젝트 템플릿 목록은 dotnet new에 대한 템플릿 옵션을 참조하세요.

자세한 내용은 .NET에서 사용할 수 없는 .NET Framework 기술을 참조하세요.

플랫폼이 .NET을 지원하지 않습니다.

일부 Microsoft 또는 타사 플랫폼에서는 .NET을 지원하지 않습니다. 일부 Azure 서비스에서는 .NET에서 사용할 수 없는 SDK를 제공합니다. 이러한 경우 클라이언트 SDK 대신 상응하는 REST API를 사용할 수 있습니다.

참조