.NET Standard와 .NET Core의 차이점에 대해 읽었지만 차이점이 무엇인지, 언제 .NET Standard 라이브러리 프로젝트를 선택하고 언제 .NET Core 라이브러리 프로젝트를 선택해야하는지 모르겠습니다.
.NET 표준은 사용 된 플랫폼에 관계없이 (선택한 .NET 표준 버전과 플랫폼이 호환되는 한) API 세트를 항상 사용할 수 있도록하는 것입니다. 내가 실수하지 않으면 .NET Standard의 클래스 라이브러리를 만든 다음 선택한 .NET Standard 버전과 호환되는 모든 플랫폼에서 사용할 수 있습니다.
.NET Core를 사용하면 플랫폼 간 사용을위한 것이므로 .NET Core 라이브러리를 선택하면 .NET Standard와 마찬가지로 많은 플랫폼에서도 사용할 수있는 것 같습니다.
결국에는 차이점이 없습니다. 언제 사용해야합니까? 그들 사이의 차이점은 무엇입니까?
답변
나는 당신의 의심을 더 명확히하고 Jon Skeet의 답변을 확장하려고 노력할 것입니다.
.NET Standard는 사양 이므로 특정 .NET Standard 버전 용으로 컴파일 된 라이브러리를 다른 .NET Standard 구현에서 사용할 수 있습니다.
으로 내 다른 코멘트에서 말했다, .NET 표준 및 기타 .NET 표준 구현 (.NET 코어, .NET 프레임 워크, 등) 사이의 관계에 대한 좋은 비유입니다 데이비드 파울러하여이 요점은 : .NET 표준 버전은 Interfaces
프레임 워크가있는 동안, 이러한 인터페이스의 구현.
이 단순화 된 다이어그램은이 관계를 이해하는 데 도움이 될 수 있습니다.
타겟팅하는 모든 NetCore10
것은 INetStandard15
API 및 NetCore10
특정 API (예 🙂 에 액세스 할 수 DotNetHostPolicy
있습니다.
물론이 라이브러리는 다른 INetStandard15
구현 에서는 사용할 수 없습니다 ( 또는 NetCore10
로 변환 할 수 없음 ).NetFramework462
Mono46
당신은, 대신, 필요 단지에 액세스 할 경우 INetStandard15
API를 라이브러리에 의해 사용될 수있다 (및 대상 대신 구체적인 프레임 워크의 사양이 있음) 어떤 어떤 구현을 프레임 워크 ( NetCore10
, NetFramework462
, 등)
참고 : 원래 비유에서 David Fowler는 .NET 표준 버전과 프레임 워크 구현에 모두 인터페이스를 사용했습니다. 인터페이스와 클래스를 사용하는 것이 사양과 구체적인 구현 간의 관계를보다 직관적이고 더 잘 표현한다고 생각합니다.
답변
.NET Core는 .NET Standard 의 구현 입니다. 여러 운영 체제에서 사용할 수 있지만 동일하지는 않습니다. 다른 .NET 표준 구현도 있습니다.
당신이 .NET 핵심 라이브러리를 작성하는 경우 그래서, 그것은 .NET 코어에서 구현되는 것들에 액세스 할 수 있지만 것 없는 .NET 표준의 일부가 라이브러리와 호환되지 않습니다 다른 .NET 표준의 구현, Xamarin, Tizen, 전체 .NET 데스크톱 프레임 워크 등
한마디로 : 최대 이식성을 달성하려면 라이브러리를 .NET 표준으로 지정하십시오.
답변
.NET Core 클래스 라이브러리는 기본적으로 .NET Framework 라이브러리의 하위 집합이며 API가 더 적습니다. .NET Core Class 라이브러리를 고수하면 런타임간에 코드를 공유하기가 어렵습니다. 이 코드는 필요한 API가 없기 때문에 다른 런타임 (Mona for Xamarin)에서는 작동하지 않을 수 있습니다. 이 문제를 해결하기 위해 사용할 수있는 API를 알려주는 사양 세트 인 .NET 표준이 있습니다 . .NET Standard의 주요 목적은 런타임간에 코드를 공유하는 것입니다. 또한이 사양은 모든 런타임에 의해 구현되어야합니다. ( Xamarin 용 .NET Framework, .NET Core 및 Mono).
따라서 .NET Core 프로젝트에만 라이브러리를 사용한다고 확신하는 경우 .NET Standard를 무시할 수 있지만 .NET Framework 또는 Mono for Xamarin에서 코드를 사용할 가능성이 적다면 더 좋습니다. .NET 표준에 충실
또한 높은 버전의 .NET Standard에는 더 많은 API가 포함되어 있지만 더 많은 플랫폼에서 더 낮은 버전이 지원됩니다. 따라서 런타임간에 공유하려는 .NET 표준 라이브러리를 작성하면 가능한 가장 낮은 버전을 대상으로하여 가장 많은 플랫폼에 도달 할 수 있습니다. 예를 들어 .NET Framework 4.5 및 .NET Core 1.0에서 실행하려는 경우 사용할 수있는 가장 높은 .NET 표준 버전은 .NET Standard 1.1입니다. 이에 대한 자세한 내용 은 설명서에서이 훌륭한 표를 참조하십시오 .
추신 : 또한 라이브러리를 .NET 표준으로 변환하려는 경우 .NET 이식성 분석기가 도움이 될 수 있습니다.
답변
.NET Standard 는 .NET 구현에서 사용할 수있는 .NET API의 사양입니다. 이를 통해 모든 .NET 구현에 대해 균일 한 BCL API 세트를 정의 할 수 있습니다.
.NET Core 는 이러한 .NET 표준 구현 중 하나입니다. .NET Framework는 .NET Standard의 또 다른 구현입니다.
.NET 블로그의 이미지
Federicos answer 는 각 프레임 워크가 버전과 함께 어떻게 진화하는지에 대한 그래픽 개요를 제공합니다. 아래의 Microsoft Docs 다이어그램 을 살펴보십시오 .
타겟팅 .NET 표준은 이러한 .NET 코어 (또는 .NET 프레임 워크)와 같은 특정 .NET 플랫폼을 대상으로하는 반면 플랫폼 지원은 해당 플랫폼에 대한 모든 플랫폼 기능을 사용할 수를 증가시킨다.
답변
.NET Standard 는 모든 .NET 구현이 제공해야하는 API 사양입니다. .NET 제품군에 일관성을 제공하며 모든 .NET 구현에서 사용할 수있는 라이브러리를 구축 할 수 있습니다. 공유 구성 요소 빌드를위한 PCL을 대체합니다.
.NET Core 는 ASP.NET Core를 사용하여 콘솔 응용 프로그램, 웹 응용 프로그램 및 클라우드 서비스를 구축하는 데 최적화 된 .NET 표준의 구현입니다. SDK에는 Visual Studio 개발 외에도 전체 명령 줄 기반 개발 워크 플로를 지원하는 강력한 도구가 포함되어 있습니다. aka.ms/netstandardfaq 및 aka.ms/netcore 에서 자세한 내용을 확인할 수 있습니다
.
위의 질문에 언급 된 대부분의 내용에 대한 명확한 설명과 함께 Microsoft (MSDN-2017 년 9 월)의 매우 유용한 다음 기사에서 찾을 수 있습니다. .NET 표준-.NET Core 및 .NET 표준
답변
.NET Framework을 의미 했습니까? .NET 표준은 .NET Framework, .NET Core 및 Xamarin과 같은 구현이므로
Linux에서 호스팅 할 수 있기 때문에 .NET Core를 좋아합니다 (제 경험에 nginx 사용). IIS에서만 호스팅 할 수있는 .NET 프레임 워크와 다릅니다. 이 경우 호스팅 예산을 고려할 수 있습니다 (Windows 서버가 비싸기 때문에).
에서 개발 환경 관점 , 닷넷 코어는 경량입니다. 따라서 Visual Studio뿐만 아니라 IDE에도 VSCode, Sublime을 사용할 수 있습니다.
답변
간단히 말해서 .NET 표준은 dll로 컴파일되는 클래스 라이브러리 프로젝트를 작성하는 데 사용됩니다. .NET Core는 모든 운영 체제 (Windows, Linux, MacOS)에서 실행할 수있는 실제 웹 응용 프로그램 개발에 사용할 수 있습니다. .NET Core 3에서 Microsoft는 WPF를 사용하여 데스크톱 앱을 개발할 수있는 기능을 제공했지만 지금까지 이러한 앱은 플랫폼 간이 아니며 Windows 시스템에서만 실행됩니다. 향후 Microsoft는 플랫폼 간 플랫폼도 만들 수 있습니다. 라이브러리 / dll은 .NET (.NET 프레임 워크, .NET 코어)을 사용하는 모든 응용 프로그램에서 사용할 수 있습니다. 즉, .NET 표준을 .NET 프레임 워크 및 .NET 코어와 함께 사용할 수 있습니다.