안녕하세요, MoonLight입니다.
이번 Post에서는 MS에서 .Net이라는 이름을 달고 출시한 다양한 소프트웨어 개발 플랫폼들을 알아보도록 하겠습니다.
한 번씩은 이름을 다 들어보셨을 것 같은데, 각 항목들을 발전과정과 차이점을 알고 있으면 도움이 될 것 같습니다.
추가로, 장단점과 선택 기준에 대해서도 알아보고 마무리 하겠습니다.
1. .NET Framework
.NET Framework는 마이크로소프트가 2002년에 출시한 소프트웨어 프레임워크로, 주로 윈도우 플랫폼에서 애플리케이션을 개발하고 실행하는 데 사용됩니다.
이 프레임워크는 CLR(Common Language Runtime)이라는 런타임 환경을 제공하여, 다양한 프로그래밍 언어(C#, VB.NET 등)로 작성된 코드가 공통된 방식으로 실행될 수 있도록 합니다.
.NET Framework는 Windows Forms, WPF(Windows Presentation Foundation), ASP.NET Web Forms, WCF(Windows Communication Foundation) 등 다양한 애플리케이션 모델을 지원하며, 데스크톱 및 웹 애플리케이션 개발에 널리 사용되어 왔습니다.
하지만, 처음 출시되었던 시기에 비해서 점점 다양한 운영체제와 Mobile과 같은 다양한 Device의 등장으로 인해서 점점 한계를 드러내고 있었습니다.
2. .NET Core
.NET Core는 2016년에 처음 출시된 마이크로소프트의 오픈 소스 크로스 플랫폼(윈도우, 리눅스, macOS 지원) 프레임워크입니다.
확장성과 고성능을 목표로 설계되었으며, 클라우드 및 컨테이너 기반의 현대적인 애플리케이션 개발에 최적화되어 있습니다.
.NET Core는 ASP.NET Core, Entity Framework Core 등을 포함하며, 명령줄 인터페이스(CLI)를 통해 개발자들이 손쉽게 프로젝트를 생성하고 관리할 수 있다는 장점이 있습니다.
물론, NuGet 패키지 관리자를 통해서도 필요한 라이브러리를 유연하게 추가할 수 있습니다.
3. .NET Standard
.NET Standard는 다양한 .NET 구성 요소(.NET Framework, .NET Core, Xamarin 등)간에 공통적인 API 집합을 정의한 공식적인 사양입니다.
.NET Standard를 통해서 개발자는 여러 플랫폼에서 재사용 가능한 라이브러리를 작성할 수 있습니다.
또한, .NET Standard는 버전별로 지원하는 API가 달라지며, 높은 버전일수록 더 많은 API를 포함하지만 호환성은 낮아집니다.
4. 상관관계
위 그림에서 알 수 있듯이, .NET Standard는 .NET Framework, .NET Core, Xamarin과 같은 플랫폼을 아우르는 공통 라이브러리를 정의하여, 코드 재사용성을 극대화할 목적으로 만들어진 공통된 API 사양의 집합입니다
즉, .NET Standard는 개발자가 라이브러리를 작성할 때 다양한 .NET 플랫폼에서 호환될 수 있도록 도와주는 것이 주된 역할입니다.
예를 들어, .NET Standard를 기반으로 작성된 라이브러리는 모든 플랫폼에서 사용 가능합니다.
4.1. .NET Standard Example
말로 설명하면 .NET Standard가 잘 와닿지 않는것 같아서, 실제 Visual Studio에서 .NET Standard로 Platform 공통 Library를 만드는 간단한 과정을 보여드리겠습니다.
1) Project 만들기
위 그림과 같이 .Net Standard Class Library를 만드는 Project를 선택합니다.
2) 구성
일반적인 구성으로 진행합니다.
3) 대상 Framework
대상 Framework은 .Net Standard 2.0 이상으로 선택하시면 될 것입니다.
4) 구현
Library로 사용할 기능을 구현합니다.
5) 결과물
이제 Build를 하면 결과물이 위와 같이 DLL 파일의 형태의 Library가 생성됩니다.
이 Library는 앞서 설명했듯이, .NET의 다양한 Framework에서 공통적으로 실행될 수 있습니다.
5. 차이점 & 장단점
5.1. 차이점
특성
|
.NET Framework
|
.NET Core
|
.NET Standard
|
플랫폼 지원
|
윈도우 전용
|
크로스 플랫폼
(윈도우, 리눅스, macOS)
|
플랫폼 아님
(API 사양으로 여러 플랫폼에서
사용)
|
오픈 소스 여부
|
부분적으로 공개됨
|
완전한 오픈 소스(GitHub에서 개발)
|
사양이므로 코드가 아님
|
애플리케이션 유형
|
데스크톱, 웹, 서비스 등
|
웹, 클라우드, 컨솔 애플리케이션 등
|
라이브러리 개발에 초점
|
업데이트 주기
|
느림
|
빠름
|
필요 시 업데이트
|
성능
|
안정적이나 최신 최적화 기술 미지원
|
고성능(새로운 JIT 컴파일러, GC 최적화 등)
|
성능과 직접적인 관계 없음
|
5.2. 장단점
장점
|
단점
|
|
.NET Framework
|
오랜 기간 검증된 안정성.
풍부한 라이브러리와 툴링 지원.
기존 윈도우 기반 시스템과의 높은 호환성.
|
윈도우에만 제한됨.
최신 기능 업데이트 지연.
오픈 소스 생태계와의 연계 부족.
|
.NET Core
|
크로스 플랫폼 지원으로 다양한 환경에서 실행 가능.
오픈 소스로 커뮤니티 참여 활성화.
높은 성능과 모듈화된 아키텍처.
지속적인 업데이트와 새로운 기능 도입.
|
일부 .NET Framework 기능 미지원.
기존 .NET Framework 애플리케이션 마이그레이션 필요.
|
.NET Standard
|
여러 .NET 플랫폼 간 코드 공유 용이.
라이브러리의 호환성 문제 감소.
멀티 플랫폼 지원 라이브러리 개발에 적합.
|
.NET 5 이후로는 .NET Standard 대신 .NET 5+를 직접 타겟팅 권장.
추가적인 복잡성 발생 가능.
|
6. 선택시 고려사항
어떤 Framework을 사용할 지 선택하는 경우에 아래의 사항들을 고려하시면 선택에 도움이 될 것입니다.
플랫폼 요구사항
윈도우 전용 애플리케이션이고 기존 시스템과의 호환성이 중요하다면 .NET Framework를 고려.
크로스 플랫폼 지원이 필요하다면 .NET Core 또는 최신 .NET 5+ 사용.
애플리케이션 유형
데스크톱 애플리케이션 개발 시 WPF나 Windows Forms를 사용해야 한다면 .NET Core 3.0 이상에서 지원.
웹 애플리케이션이나 클라우드 서비스 개발 시 ASP.NET Core 사용 권장.
성능 및 최신 기능
고성능과 최신 기능이 필요하다면 .NET Core 또는 .NET 5+ 선택.
라이브러리 호환성
여러 플랫폼에서 사용할 라이브러리 개발 시 .NET Standard를 사용.
하지만, .NET 5+를 타겟팅하는 것이 더 현대적인 접근법.
커뮤니티 및 지원
활발한 오픈 소스 커뮤니티와 지속적인 업데이트를 원한다면 .NET Core 선택.
마이그레이션 고려
기존 .NET Framework 애플리케이션을 .NET Core로 마이그레이션할 때 호환성 및 비용 고려 필요.
7. 결론
.NET 생태계는 다양한 요구사항을 충족시키기 위해 .NET Framework, .NET Core, .NET Standard로 구성되어 있습니다.
프로젝트의 플랫폼 요구사항, 성능 필요성, 기존 코드베이스 등을 종합적으로 고려하여 적합한 프레임워크를 선택하는 것이 중요합니다.
또한, 마이크로소프트는 .NET 5부터 .NET Core와 .NET Framework를 통합하여 하나의 단일 플랫폼으로 발전시키고 있으므로, 최신 버전을 사용하는 것도 고려해볼 만합니다.
'Development Tip' 카테고리의 다른 글
C# Application에 DLL 포함하여 Single File로 Build 하기 (0) | 2025.01.17 |
---|---|
.Net Framework / .Net Core / .Net 통합의 역사 (0) | 2025.01.17 |
Naver Cloud Platform의 API 인증키 발행방법 (0) | 2025.01.17 |
Naver Cloud Platform의 API 인증키 발행방법 (0) | 2025.01.06 |
Python 강좌 12 - File & Exception (0) | 2024.12.23 |