.NET Core, .NET Framework 및 Xamarin의 차이점은 무엇입니까?


362

Microsoft는 이제 .NET 제품군에 .NET Core, .NET Framework 및 Xamarin (Mono)을 보유하고 있습니다.

여기에는 많은 중복이있는 것 같습니다. 이러한 유형의 .NET의 차이점은 무엇입니까? .NET Framework 또는 Xamarin 대신 프로젝트에서 .NET Core를 언제 사용해야합니까?


2
좋은 질문! 다음은 .net 프레임 워크 및 .net 코어에 대한 보충 기사입니다. pogsdotnet.blogspot.sg/2017/11/… 감사합니다!
Allan Chua

답변:


269

여기 문서에 따라 다음 6 가지 일반적인 시나리오에서 .NET Framework 또는 Xamarin 대신 .NET Core를 사용해야 합니다 .

1. 크로스 플랫폼 요구

플랫폼 (Windows, Linux 및 MacOS)에서 실행할 수 있어야하는 응용 프로그램 (웹 / 서비스)을 보유하는 것이 목표라면 분명히 .NET 에코 시스템에서 최선의 선택은 .NET Core를 런타임 (CoreCLR)으로 사용하는 것입니다. ) 및 라이브러리는 크로스 플랫폼입니다. 다른 선택은 Mono Project를 사용하는 것입니다.

두 가지 선택 모두 오픈 소스이지만 .NET Core는 Microsoft에서 직접 공식적으로 지원하며 막대한 투자가 이루어질 것입니다.

여러 플랫폼에서 .NET Core를 사용하는 경우 프로젝트 관리, 디버깅, 소스 제어, 리팩토링, Intellisense를 포함한 풍부한 편집, 테스트 등을 포함한 많은 생산성 기능을 지원하는 Visual Studio IDE를 통해 Windows에서 최상의 개발 경험을 얻을 수 있습니다. 그러나 인텔리전스 및 디버깅을 포함하여 Mac, Linux 및 Windows에서 Visual Studio Code를 사용하여 풍부한 개발도 지원됩니다. Sublime, Emacs, VI 등과 같은 타사 편집자조차도 잘 작동하며 오픈 소스 Omnisharp 프로젝트를 사용하여 편집자 지능을 얻을 수 있습니다.

2. 마이크로 서비스

여러 개의 독립적이고 동적으로 확장 가능한 상태 저장 또는 상태 비 저장 마이크로 서비스로 구성된 마이크로 서비스 지향 시스템을 구축 할 때 마이크로 서비스 수준에서 서로 다른 기술 / 프레임 워크 / 언어를 사용할 수 있다는 장점이 있습니다. 따라서 시스템의 마이크로 영역 당 최상의 접근 방식과 기술을 사용할 수 있으므로 성능이 뛰어나고 확장 가능한 마이크로 서비스를 구축하려면 .NET Core를 사용해야합니다. 결국 .NET Core와 호환되지 않는 .NET Framework 라이브러리를 사용해야하는 경우에는 문제가 없습니다. .NET Framework로 해당 마이크로 서비스를 빌드 할 수 있으며 나중에 .NET으로 대체 할 수 있습니다. 핵심.

사용할 수있는 인프라 플랫폼은 많습니다. 이상적으로 크고 복잡한 마이크로 서비스 시스템의 경우 Azure Service Fabric을 사용해야합니다. 그러나 상태 비 저장 마이크로 서비스의 경우 Azure App Service 또는 Azure Functions와 같은 다른 제품을 사용할 수도 있습니다.

2016 년 6 월 현재 Azure의 모든 기술이 .NET Core를 지원하는 것은 아니지만 .NET Core가 RTM으로 출시됨에 따라 Azure의 .NET Core 지원이 크게 증가 할 것입니다.

3. 최고의 성능과 확장 성 시스템

시스템에 최상의 성능과 확장 성이 필요할 때 사용자 수에 관계없이 최고의 응답 성을 얻을 수 있다면 .NET Core와 ASP.NET Core가 실제로 빛을 발하는 곳입니다. 동일한 양의 인프라 / 하드웨어로 더 많은 일을할수록 최종 사용자에게 더 적은 비용으로 더 많은 경험을 얻을 수 있습니다.

단일 CPU에 대한 Moore의 법률 성능 향상 시대는 더 이상 적용되지 않습니다. 그러나 시스템이 성장하는 동안 더 많은 작업을 수행해야하며 기하 급수적으로 증가하는 일상적인 더 까다로운 사용자를 위해 더 높은 확장 성과 성능이 필요합니다. 궁극적으로 모든 머신 클러스터, VM 및 CPU 코어에서 효율성을 높이고 어디서나 최적화하고 확장 성을 향상시켜야합니다. 사용자 만족의 문제 만이 아닙니다. 또한 비용 / TCO에 큰 차이를 만들 수 있습니다. 따라서 성능과 확장 성을 위해 노력하는 것이 중요합니다.

언급했듯이 작은 시스템 조각을 마이크로 서비스 또는 느슨하게 결합 된 다른 접근 방식으로 분리 할 수 ​​있다면 각 작은 조각 / 마이크로 서비스를 독립적으로 발전시킬뿐만 아니라 장기적으로 더 나은 성능을 발휘할 수 있으므로 더 좋습니다. 민첩성 및 유지 관리는 물론 .NET Core와 호환되지 않는 경우 마이크로 서비스 수준에서 다른 기술을 사용할 수 있습니다. 결국에는 리팩토링하여 가능한 경우 .NET Core로 가져올 수 있습니다.

4. Mac, Linux 또는 Windows 용 명령 줄 스타일 개발.

이 방법은 .NET Core를 사용할 때 선택 사항입니다. 물론 전체 Visual Studio IDE를 사용할 수도 있습니다. 그러나 가벼운 편집기와 명령 줄을 많이 사용하여 개발하려는 개발자라면 .NET Core는 CLI를 위해 설계되었습니다. 지원되는 모든 플랫폼에서 사용할 수있는 간단한 명령 줄 도구를 제공하므로 개발자는 개발자, 실험실 또는 프로덕션 컴퓨터에 최소한의 설치로 응용 프로그램을 빌드하고 테스트 할 수 있습니다. Visual Studio Code와 같은 편집자는 개발 경험에 동일한 명령 줄 도구를 사용합니다. 또한 Visual Studio와 같은 IDE는 동일한 CLI 도구를 사용하지만 풍부한 IDE 환경 뒤에 숨 깁니다. 개발자는 이제 CLI에서 편집기, IDE에 이르기까지 툴 체인과 상호 작용하려는 수준을 선택할 수 있습니다.

5. 응용 프로그램 수준마다 .NET 버전과 함께 필요합니다.

.NET에서 서로 다른 버전의 프레임 워크에 종속성이있는 응용 프로그램을 설치하려면이 문서의 앞부분에서 설명한대로 100 % 나란히 제공하는 .NET Core를 사용해야합니다.

6. Windows 10 UWP .NET 앱.

또한 다음을 읽을 수도 있습니다.

  1. 언제 .NET Core를 사용 하지 않아야 합니까?
  2. 언제 .NET Core 대신 .NET Framework 4.x를 사용해야합니까?
  3. .NET Core 대신 Xamarin을 언제 사용해야합니까?

17
asp.net Core가 더 성능이 뛰어난 이유는 무엇입니까? 마이크로 서비스를 구축 할 때 왜 더 나은가요?
Juan Zamudio

4
이제 Mac 용 Visual Studio도 사용할 수 있습니다. 따라서 .NET Core에 대한 한 가지 긍정적 인 점이 있습니다. visualstudio.com/vs/visual-studio-mac
Husyn

8
귀하의 링크가 깨졌습니다
shaneparsons

2
@JuanZamudio 프레임 워크의 버전은 모 놀리 식 레이어로, 각각 직전 버전에 의존하고 버전 2.0으로 돌아가는 의존성 체인으로 1.1을 완전히 대체했다. 결과적으로 4.5 이상의 것을 사용 하면 2.0에 이르기까지 모든 것에 암시 적으로 의존합니다. 코어 프레임 워크는 API를 다시 작성하는 것보다 관련없는 수하물을 제거하기 위해 종속성을 리팩토링하는 것에 관한 것입니다. EF Core와 같은 것들도 크게 단순화되었습니다.
Peter Wone

설명 답변 주셔서 감사합니다
Tolga Kartal

171

Microsoft가 다음과 같이 설명합니다.

.NET Framework, .NET Core, Xamarin

.NET Framework 는 Windows와 함께 배포되는 .NET의 "전체"또는 "전통적인"맛입니다. 데스크톱 Windows 또는 UWP 앱을 빌드하거나 이전 ASP.NET 4.6 이상에서 작업 할 때 사용하십시오.

.NET Core 는 Windows, Mac 및 Linux에서 실행되는 크로스 플랫폼 .NET입니다. Docker 컨테이너 내부를 포함하여 모든 플랫폼에서 실행할 수있는 콘솔 또는 웹 앱을 빌드하려는 경우이를 사용하십시오. 현재 UWP / 데스크톱 앱은 포함되어 있지 않습니다.

Xamarin 은 iOS, Android 또는 Windows Phone 장치에서 실행할 수있는 모바일 앱을 빌드하는 데 사용됩니다.

Xamarin은 일반적으로 Mono 위에서 실행됩니다. Mono 는 Microsoft가 공식적으로 .NET Core와 크로스 플랫폼으로 가기로 결정하기 전에 크로스 플랫폼 지원을 위해 작성된 .NET 버전 인 Mono 위에서 실행됩니다 . Xamarin과 마찬가지로 Unity 플랫폼도 Mono 위에서 실행됩니다.


혼란의 일반적인 지점은 ASP.NET Core가 적합한 위치입니다. ASP.NET Core는 .NET Framework (Windows) 또는 .NET Core (cross-platform)에서 실행될 수 있습니다 ( ASP의 차이점). NET Core (.NET Core) 및 ASP.NET Core (.NET Framework)


3
누군가 .NET Core 가 크로스 플랫폼 이라고 할 때마다 새로운 개발자가 혼란스러워합니다. '.NET Core'는 UWP + ASP.NET Core 만 지원하며 ASP.NET Core 는 크로스 플랫폼이며 UWP 는 지원하지 않습니다.
Hassan Tareq '12

@HassanTareq 그것은 정확하지 않습니다. .NET Core는 Windows, Mac 또는 Linux에서 실행할 수있는 런타임 및 라이브러리를 나타냅니다. .NET Core는 크로스 플랫폼이기 때문에 ASP.NET Core는 크로스 플랫폼입니다.
Nate Barbettini

.Net 코어 ( 런타임 및 라이브러리 )가 크로스 플랫폼이지만 Mac / Linux에서는 UWP 앱을 사용할 수 없다고 언급하면 greenhorns에 도움이됩니다 . UWP 크로스 플랫폼되지 않습니다, 나는 UWP는 WPF의 크로스 플랫폼의 대안이 될 것으로 예상 (Xamarin.Forms입니다)
하산 타 레크

@HassanTareq 좋은 제안, 나는 내 대답을 편집했습니다.
Nate Barbettini

1
Xamarin Forms는 이제 하나의 코드 기반에서 거의 모든 것을 실행합니다. Windows UWP 데스크탑, WPF 데스크탑, MacOS, iOS, Android 및 Tizen (TV). 기본값은 Core 구현에서 .NET Standard를 대상으로하는 것입니다. 좋은 시간!
Sean Anderson

35

이 줄 에서 ASP.NET Core (.NET Core)와 ASP.NET Core (.NET Framework)의 차이점을 참조 할 수 있습니다.

.NET Framework, .NET Core, Xamarin

Xamarin 은 전혀 논쟁이 아닙니다. C #을 사용하여 모바일 (iOS, Android 및 Windows Mobile) 앱을 빌드하려는 경우 Xamarin이 유일한 선택입니다.

.NET Framework 는 Windows 및 웹 응용 프로그램을 지원합니다. 현재 Windows Forms, WPF 및 UWP를 사용하여 .NET Framework에서 Windows 응용 프로그램을 빌드 할 수 있습니다. ASP.NET MVC는 .NET Framework에서 웹 응용 프로그램을 작성하는 데 사용됩니다.

.NET Core 는 Windows, Mac 및 Linux를 포함한 모든 운영 체제에 대한 응용 프로그램을 빌드하기위한 새로운 오픈 소스 및 크로스 플랫폼 프레임 워크입니다. .NET Core는 UWP 및 ASP.NET Core 만 지원합니다. UWP는 Windows 10 대상 Windows 및 모바일 응용 프로그램을 구축하는 데 사용됩니다. ASP.NET Core는 브라우저 기반 웹 응용 프로그램을 작성하는 데 사용됩니다.

자세한 내용은이 링크를
참조 하십시오 https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / choosing-core-framework-server


12
  1. .NETC # 언어 기반의 생태계입니다
  2. .NET Standard.NET Ecosystem 의 표준 (즉, 사양)입니다 .

.Net 핵심 클래스 라이브러리는 .Net 표준을 기반으로합니다 . .NET 표준 당신은 독립을 실행할 수 없습니다 다른 의해 참조해야에만 클래스 라이브러리 프로젝트를 만들 수 있습니다 .NET 코어 또는 .NET 프레임 워크 는 휴대용 인 라이브러리 구현하려는 실행 project.If을 닷넷 프레임 워크 , 닷넷 CoreXamarin.Net 표준 라이브러리를 선택하십시오.

  1. .NET 프레임 워크 를 기반으로 프레임 워크 .NET 과 Windows 및 웹 응용 프로그램을 지원합니다

.NET Framework를 사용하여 실행 가능한 프로젝트 (예 : 콘솔 응용 프로그램 또는 ASP.NET 응용 프로그램)를 만들 수 있습니다.

  1. ASP.NET.NET Framework를 기반으로 구축 된 웹 응용 프로그램 개발 기술입니다.
  2. .NET 코어 도를 기반으로 프레임 워크 .NET .

Windows, Mac 및 Linux를 포함한 모든 운영 체제에 대한 응용 프로그램을 구축하는 새로운 오픈 소스 및 크로스 플랫폼 프레임 워크입니다.

  1. XamarinC #을 사용하여 크로스 플랫폼 모바일 애플리케이션 ( iOS, Android 및 Windows Mobile ) 을 개발하기위한 프레임 워크입니다

.NET 표준 의 구현 지원 [blue] 및 .NET 표준의 전체 지원을위한 최소 실행 가능 플랫폼 (최신 : [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- 지원] )


"버전 히스토리"테이블에 투표하십시오. 여러분이 재현 한 .net / standard 또는 core의 "버전 이력"이 아닙니다. 특정 .Net 표준 버전과 일치 시키려면 사용할 수있는 최소 실행 가능한 플랫폼 버전입니다. EG : Full .NET에서 .NET Standard 1.4를 지원하려면 사용할 수있는 가장 낮은 버전은 4.6.1
shawty

다운 투표가 삭제되었습니다. 이제 답변을 올바르게 업데이트하고 문서화했습니다. :-)
shawty

제가 대신 애플에서 개발할 것이라고 생각합니다.
Richard Hammond

7

.NET 5 는 2020 년 11 월에 출시 될 모든 .NET 변형의 통합 버전이므로 더 이상 변형 중에서 선택할 필요가 없습니다. 여기에 이미지 설명을 입력하십시오


1
이건 거짓말이야. .NET Core는 Linux에서 WPF / WinForms를 지원할 수 없습니다!
빈센트

사실이지만 다른 .NET 변종도 지원하지 않았습니다. .NET의 변형에 대한 선택이 사라졌습니다.
yanlend

1

.NET Core는 현재 사용중인 .NET의 현재 버전입니다 (더 많은 기능, 수정 된 버그 등).

Xamarin은 C #으로 코딩 된 크로스 플랫폼 모바일 문제에 대한 솔루션을 제공하는 플랫폼이므로 IOS에 Swift를 별도로 사용할 필요가 없으며 Android에서도 마찬가지입니다.


2
.Net Core는 Linux 또는 Linux 및 Windows에서 실행 해야하는 경우 사용해야하는 것입니다. 그러나 당신도 모노에 대해서도 그럴 수 있다고 생각합니다. 확실히 더 많은 기능이 없습니다. 정의상 이는 "코어"비트 일 뿐이며 Windows 전용 비트는 없으므로 기능이 더 적습니다. 그리고 나는 단지 추측하지만 .Net Core에 버그가 거의 없을 것 같습니다. .Net Framework는 거의 20 년 동안 전 세계에 출시되었습니다. 나는 지금이 시점에서 전투가 완고 해 졌다고 상상할 것이다. 그러나 그것은 단지 추측입니다.
Jason Boyd

확실히 더 많은 새로운 기능을 가지고 있으며 최근에는 .NET 4.8에 추가되지 않는 새로운 클래스를 추가했습니다. 또한 WPF와 WinForms를 이식했습니다. 실제로 .NET Core가 .NET Framework를 대체 할 수있는 것처럼 보입니다. 더 성능이 좋은 것 같습니다.
asdf

0

Xamarin은 전화 응용 프로그램 (IOS / Android 모두)에 사용됩니다. .NET Core는 Apache와 IIS 모두에서 작동 할 수있는 웹 응용 프로그램을 디자인하는 데 사용됩니다.

그것은 두 문장의 차이점입니다.


흠 .... 세 번째 옵션 (.net 프레임 워크)이 누락 된 것을 제외하고는 사실이 아닙니다. .NET 코어는 거의 모든 것 (웹, 데스크탑, 모바일, 클라우드, 게임, IoT 등)에서 사용될 수 있습니다. .NET Framework는 창 중심이며 완전히 닫혔습니다. Mono는 Xamarin에서 사용하는 .NET Framework의 오픈 소스 (커뮤니티 기반) 버전으로 크로스 플랫폼 모바일 툴링을 모노 위에 올려 놓았습니다. Xamarin은 결국 Blazor로 대체 될 것입니다 (현재는 pwa이지만 하이브리드는 로드맵의 일부입니다).
shox

그건 진실이야. Xamarin은 모바일 애플리케이션을위한 것입니다. 나는 그것이 곧 교체 될 것이라고 생각하지 않습니다. ASMX는 여전히 웹 서비스에 사용되며 Visual 2019에 포함되어 있습니다.
user10868910

-1

2019 년 5 월 업데이트

다음 버전 .Net 5로 업그레이드 할 때는 .Net Core 3.0 이상을 사용해야합니다. 단 하나의 통합 플랫폼 만 있으면됩니다.

앞으로 하나의 .NET이 있으며 Windows, Linux, macOS, iOS, Android, tvOS, watchOS 및 WebAssembly 등을 대상으로 사용할 수 있습니다. https://devblogs.microsoft.com/dotnet/introducing-net-5/


이 답변은 의미가 없습니다.
Kiril1512 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.