.NET 표준과 .NET 코어 비교
.NET Standard와 .NET Core의 차이점에 대해 읽었지만, 무엇이 다른지, 또는 언제 .NET Standard 라이브러리 프로젝트를 선택해야 하는지, 그리고 언제 .NET Core 라이브러리 프로젝트를 선택해야 하는지 정말 모르겠습니다.
.NET Standard는 사용하는 플랫폼에 관계없이 API 집합을 항상 사용할 수 있도록 하는 것입니다(이 플랫폼이 선택한 .NET Standard 버전과 호환되는 한).이는 .NET Standard의 클래스 라이브러리를 만든 다음 선택한 .NET Standard 버전과 호환되는 모든 플랫폼에서 사용할 수 있음을 의미합니다.
.NET Core를 사용하면 크로스 플랫폼용으로도 사용할 수 있다고 읽었기 때문에 .NET Core 라이브러리를 선택하면 .NET Standard처럼 많은 플랫폼에서도 사용할 수 있을 것 같습니다.
그래서 마지막에는, 저는 차이를 보지 못합니다.어떤 것을 언제 사용해야 합니까?그들 사이의 차이점은 무엇입니까?
저는 당신의 의심을 더 명확히 하고 존 스키트의 답변을 연장하도록 노력할 것입니다.
.NET Standard는 사양이므로 특정 .NET Standard 버전용으로 컴파일된 라이브러리를 다른 .NET Standard 구현에서 사용할 수 있습니다.
다른 의견에서 말했듯이, .NET 표준과 다른 .NET 표준 구현(.NET Core, .NET Framework 등) 간의 관계에 대한 좋은 비유는 David Fowler의 이 요지입니다: .NET 표준 버전은Interfaces프레임워크는 이러한 인터페이스의 구현입니다.
이 단순화된 다이어그램은 이 관계를 이해하는 데 도움이 될 수 있습니다.
이 되는 것은 무엇이든지.NetCore10에 액세스할 수 있습니다.INetStandard15API 및 NetCore10 특정 API(예:DotNetHostPolicy).
물론 이 라이브러리는 다른 용도로 사용될 수 없습니다.INetStandard15구현)NetCore10는 로변할 수없니다로 할 수 없습니다.NetFramework462또는Mono46).
대신 액세스 권한이 필요한 경우INetStandard15API(그리고 구체적인 프레임워크 대신 그 사양을 대상으로 함) 당신의 라이브러리는 그것을 구현하는 모든 프레임워크에 의해 사용될 수 있습니다.NetCore10,NetFramework462아래)
참고: 원래의 비유에서 David Fowler는 .NET Standard 버전과 프레임워크 구현 모두에 인터페이스를 사용했습니다.대신 인터페이스와 클래스를 사용하는 것이 더 직관적이고 사양과 구체적인 구현 간의 관계를 더 잘 나타낸다고 생각합니다.
.NET Core는 .NET Standard를 구현한 것입니다.여러 운영 체제에서 사용할 수 있지만, 이는 다릅니다. .NET Standard의 다른 구현도 있습니다.
따라서 .NET Core 라이브러리를 만들면 .NET Core에 구현되었지만 .NET Standard의 일부가 아닌 항목에 액세스할 수 있으며, Xamarin, Tizen, 전체 .NET 데스크톱 프레임워크 등과 같은 .NET Standard의 다른 구현과 라이브러리가 호환되지 않습니다.
간단히 말해서, 휴대성을 극대화하려면 라이브러리를 .NET Standard로 설정하십시오.
.NET 표준은 .NET 구현에서 사용할 수 있도록 고안된 .NET API의 규격입니다.이를 통해 모든 .NET 구현에 대해 동일한 BCL API 집합을 정의할 수 있습니다.
.NET Core는 .NET Standard의 이러한 구현 중 하나입니다. .NET Framework는 .NET Standard의 또 다른 구현입니다.
.NET 블로그의 이미지
Federicos 답변은 각 프레임워크가 버전에 따라 어떻게 진화하는지에 대한 그래픽 개요를 제공합니다.Microsoft Docs의 아래 다이어그램을 살펴 보십시오.
.NET Standard를 타겟팅하면 플랫폼 지원이 증가하는 반면 .NET Core(또는 .NET Framework)와 같은 특정 .NET 플랫폼을 타겟팅하면 해당 플랫폼에 대한 모든 플랫폼 기능을 사용할 수 있습니다.
.NET Core Class 라이브러리는 기본적으로 API가 더 적은 .NET Framework 라이브러리의 하위 집합입니다..NET Core Class 라이브러리를 고수하면 런타임 간에 코드를 공유하기가 어렵습니다.이 코드는 필요한 API가 없기 때문에 다른 런타임(Mono for Xamarin)에서 작동하지 않을 수 있습니다.이를 해결하기 위해 사용할 수 있는 API를 알려주는 일련의 사양인 .NET Standard가 있습니다..NET Standard의 주요 목적은 런타임 간에 코드를 공유하는 것입니다.또한 이 사양은 모든 런타임에 구현되는 것이 중요합니다. (.NET Framework, .NET Core 및 Mono for Xamarin)
따라서 라이브러리를 .NET Core 프로젝트에만 사용할 것이 확실하다면 .NET Standard를 무시할 수 있지만 코드가 .NET Framework 또는 Mono for Xamarin에서 사용될 가능성이 조금이라도 있다면 .NET Standard를 고수하는 것이 좋습니다.
또한 .NET Standard의 상위 버전에는 더 많은 API가 포함되어 있지만 하위 버전은 더 많은 플랫폼에서 지원됩니다.따라서 런타임 간에 공유할 .NET Standard 라이브러리를 만든 경우 가능한 한 가장 낮은 버전을 대상으로 하여 가장 많은 플랫폼에 도달할 수 있습니다.예를 들어 .NET Framework 4.5 및 .NET Core 1.0에서 실행하려는 경우 사용할 수 있는 가장 높은 .NET Standard 버전은 .NET Standard 1.1입니다.자세한 내용은 설명서의 이 훌륭한 표를 참조하십시오.
PS: 또한 라이브러리를 .NET Standard로 변환하려면 .NET Portability Analyzer를 사용하면 됩니다.
.NET Standard는 모든 .NET 구현이 제공해야 하는 API의 규격입니다..NET 제품군에 일관성을 제공하며 모든 .NET 구현에서 사용할 수 있는 라이브러리를 구축할 수 있습니다.공유 구성요소를 구축하기 위해 PCL을 대체합니다.
.NET Core는 ASP.NET Core를 사용하여 콘솔 애플리케이션, 웹 애플리케이션 및 클라우드 서비스를 구축하는 데 최적화된 .NET Standard의 구현입니다.SDK에는 Visual Studio 개발 외에도 전체 명령줄 기반 개발 워크플로우를 지원하는 강력한 툴이 함께 제공됩니다.여러분은 그것들에 대해 aka.ms/netcore 과 aka.ms/netstandardfaq 에서 더 배울 수 있습니다.
위의 내용은 이 질문에서 논의된 대부분의 내용에 대한 매우 명확한 설명과 함께 Microsoft(MSDN - 2017년 9월)의 다음과 같은 매우 유용한 기사에서 찾을 수 있습니다: .NET Standard - .NET Core 및 .NET Standard.
간단히 말해서, .NET 표준은 dll로 컴파일되는 클래스 라이브러리 프로젝트를 작성하는 데 사용됩니다. .NET Core는 모든 운영 체제(Windows, Linux, MacOS)에서 실행될 수 있는 실제 웹 애플리케이션을 개발하는 데 사용될 수 있습니다. (NET Core 3에서 마이크로소프트는 WPF를 사용하여 데스크톱 앱을 개발하는 기능을 제공합니다.그러나 지금까지 이 앱들은 플랫폼을 넘나들 수 없으며 윈도우 시스템에서만 실행될 것입니다.나중에 마이크로소프트에서도 크로스 플랫폼으로 만들 수 있음) .NET 표준 라이브러리/dll은 .NET(.NET 프레임워크, .NET Core)를 사용하는 모든 응용 프로그램에서 사용할 수 있습니다. 이는 .NET 표준을 .NET 프레임워크와 .NET 코어 모두에서 사용할 수 있음을 의미합니다.
.NET Framework를 말씀하시는 건가요?.NET 표준은 .NET Framework, .NET Core 및 Xamarin과 같은 구현체이기 때문입니다.
.NET Core는 리눅스에서 호스팅할 수 있기 때문에 매우 좋아합니다(내 경험으로는 enginx 사용).IIS에서만 호스팅할 수 있는 .NET 프레임워크와는 다릅니다.이 경우 예산 호스팅을 고려할 수 있습니다(Windows Server는 비용이 많이 들기 때문에).
개발 환경의 관점에서, .넷코어는 경량입니다.따라서 IDE(비주얼 스튜디오뿐만 아니라)에 VSCode, Sublime을 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/44085424/net-standard-vs-net-core
'programing' 카테고리의 다른 글
| 다른 지점으로 전환하려면 어떻게 해야 합니까? (0) | 2023.05.25 |
|---|---|
| C++ 표준::쌍의 C# 아날로그는 무엇입니까? (0) | 2023.05.25 |
| Node.js에서 npm 모듈을 제거하려면 어떻게 해야 합니까? (0) | 2023.05.25 |
| "*ngIf If"를 사용하려면 어떻게 해야 합니까? (0) | 2023.05.25 |
| 목표-C에서 클래스에 대한 개인 메서드를 정의하는 가장 좋은 방법 (0) | 2023.05.25 |


