알아두면 쓸모 있는 .NET 이야기

알아두면 쓸모 있는 .NET 이야기

들어가며

2020년 11월 10일, MS(마이크로소프트)는 차세대 애플리케이션 개발플랫폼 닷넷(.NET) 5.0을 공식 발표하였습니다.

.NET - A unified platform
  • DESKTOP - WPF, Windows Forms, UWP
  • WEB - ASP.NET
  • CLOUD - Azure
  • MOBILE - Xamarin
  • GAMING - Unity
  • IoT - ARM32, ARM64
  • AI - ML.NET, NET for Apache Spark
  • .NET 5 - .NET STANDARD, INFRASTRUCTURE(Running Components, Compilers, Lanugages)
  • TOOLS - Visual Studio, Visual Studio for Mac, Visual Studio Code, Command Line Interface
[그림 1] 닷넷 5.0
(출처: https://devblogs.microsoft.com/dotnet/introducing-net-5)

이는 닷넷 진영에 있어 꽤나 의미 있는 릴리스로 볼 수 있습니다. 오랫동안 파편화되어 있던 닷넷 관련 플랫폼이 닷넷이라는 단일 명칭으로 통합된 첫 릴리스이기 때문입니다. 닷넷 5.0 출시 소식은 서버 개발 환경이 대부분 자바(Java)인 우리나라에서는 큰 반향을 일으키지 못했습니다. 하지만 세상일이란 게 한 치 앞을 예상할 수 없는 법. 향후 소프트웨어 개발플랫폼 영역에 어떤 지각변동이 일어날지 알 수 없으니 이번 기회에 닷넷에 관해 알아두는 것도 개발 상식 차원에서 의미가 있을 것으로 생각됩니다. 이에 본 아티클에서는 닷넷의 탄생부터 현재에 이르게 되는 과정을 짚어보고 전망을 살펴보겠습니다.

닷넷 프레임워크, 그 시작과 한계

개발자가 아니더라도 윈도우(Windows)에서 프로그램을 설치하거나 실행할 때 [그림 2]와 같이 닷넷 프레임워크(.NET Framework)가 설치되는 것을 본 적이 있을 것입니다. 윈도우 애플리케이션은 대부분 닷넷 프레임워크를 기반으로 개발되었습니다. 국내 소프트웨어 시장 전체에서 닷넷 프레임워크가 차지하는 비중이 크지는 않지만, 제조·의료 분야 IT 시스템에서는 비교적 활발하게 사용되고 있습니다.

Application.exe - This application could not be started.
  • This application requires one of the following versions of the .NET Framework:
  • .NETFramework,Version=v4.7.1
  • Do you want to install this .NET Framework version now?
[그림 2] 닷넷 프레임워크 설치 안내 메시지

닷넷 프레임워크는 2002년 2월 13일, MS가 내놓은 소프트웨어 플랫폼으로 C#이라는 객체지향 언어도 함께 출시하여 자바에 대항하고자 하였습니다. C# 언어는 빌드 후 IL(Intermediate Language, 중간 언어)로 변환되어 CLR(Common Language Runtime, 공통 언어 런타임)에서 실행되는 구조인데, 자바의 Bytecode와 JRE(Java Runtime Environment)로 생각하면 됩니다. 참고로 닷넷 프레임워크에서 지원하는 언어는 C#, F#, Visual Basic 등이 있습니다.

통상적으로 윈도우용 애플리케이션은 닷넷 프레임워크 기반으로 개발하는 것이 생산성이 높고 성능도 좋습니다. 또한 사용 가능한 3rd Party 라이브러리도 풍부합니다. 다만 대부분이 상용이고 윈도우 전용입니다. 이같은 닷넷 프레임워크의 한계는 애플리케이션 생태계가 웹과 모바일 중심으로 변화하면서 더욱 두드러졌습니다. 게다가 기업들은 비용 절감을 위해 리눅스를 비롯한 오픈소스 소프트웨어 도입에 적극적으로 나서게 되었습니다. 라이선스 비용이 많이 드는 윈도우 기반의 서버가 아니더라도 수준 높은 웹 애플리케이션 서비스가 가능하게 된 것입니다.

닷넷 코어의 등장 - 크로스 플랫폼, 오픈소스로

MS도 닷넷 프레임워크의 한계를 인식하고 대안을 마련하기 시작했습니다. 그 결과 2014년 닷넷 코어(.NET Core)라는 이름으로 크로스 플랫폼을 지원하는 오픈소스 프레임워크를 출시하게 됩니다. 아울러 MS는 닷넷 파운데이션(.NET Foundation)을 설립하여 오픈소스 진영으로 입지를 넓혀갑니다. 참고로 삼성전자도 닷넷 파운데이션의 기술운영위원회(Technical Steering Group)에 참여하고 있습니다. 삼성이 개발을 주도한 타이젠(Tizen) OS도 닷넷 앱을 지원합니다.

.NET 2015
  • .NET Framework - ASP.NET 5, ASP.NET 4.6, WPF, Windows Forms
  • .NET Core - ASP.NET 5, .NET Native, ASP.NET 5 for Mac and Linux
  • Common - Runtime(Next gen JII, SIMD), Compilers(.NET Compiler Platform, Languages innovation), NuGet packages(.NET Core 5 Libraries, .NET Framework 4.6 Libraries)
  • .NET foundation
[그림 3] 닷넷 코어
(출처: https://devblogs.microsoft.com/dotNET/NET-core-is-open-source)

MS는 닷넷 코어 출시와 함께 닷넷 표준 API 스펙인 닷넷 스탠다드(.NET Standard)도 발표하였습니다. 개발자가 닷넷 스탠다드 API만을 사용하여 라이브러리를 빌드해 배포하면 해당 닷넷 스탠다드 버전을 지원하는 닷넷 환경에서는 어디서든 참조 및 실행이 가능합니다. 그러므로 다양한 플랫폼에서 공통적으로 사용하기 위한 라이브러리는 닷넷 스탠다드를 타깃으로 개발할 것을 권장하고 있습니다.

App Models
  • .NET Framework - WPF, Windows Forms, Console, ASP.NET
  • .NET Core - Console, ASP.NET Core
  • Xamarin - iOS, Mac OS, Android
Base Libraries
  • .NET Framework - .NET Framework BCL
  • .NET Core - .NET Core BCL
  • Xamarin - Mono BCL
[그림 4] 닷넷 코어 및 닷넷 스탠다드
(출처: https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/september/NET-standard-demystifying-NET-core-and-NET-standard)

.NET으로 대동단결

2020년 MS는 닷넷 프레임워크 4.8이 닷넷 프레임워크의 마지막 릴리스라고 발표하였습니다.

Note
  • .NET Framework 4.8 is the last version of .NET Framework, and no further versions will be released. However, .NET Framework will continue to be serviced with monthly security and reliability bug fixes. Additionally, it will continue to be included with Windows, with no plans to remove it. You don't need to migrate your .NET Framework apps, but for new development, use .NET 5.0 or later.
[그림 5] 닷넷 프레임워크 4.8 릴리스 공지
(출처: https://docs.microsoft.com/en-us/dotNET/framework/whats-new)

그동안 닷넷 프레임워크와 닷넷 코어로 나누어 지원하던 플랫폼을 닷넷(.NET)이라는 단일 이름으로 통일하기로 한 것입니다. 그 시작 버전이 5.0인 것은 닷넷 코어의 최신 버전이 3.x이고 닷넷 프레임워크의 최신 버전이 4.8인 탓에 개발자 혼란을 줄이기 위해 이 둘을 아우르는 버전을 채택한 것이라고 합니다.

닷넷 코어로 시작한 MS의 크로스 플랫폼 전략은 닷넷 5.0 출시로 새로운 전환기를 맞게 되었습니다. 클라우드 네이티브(Cloud Native) 시대, MSA(Microservices Architecture)의 유행 속에서 뒤늦은 감이 있지만 서비스 개발을 위한 선택지의 하나로 닷넷도 이름을 올릴 수 있게 된 것입니다. (사실 닷넷 코어로도 이미 크로스 플랫폼 서비스 개발을 지원하기는 했습니다.)

마치며

개인적으로는 닷넷의 미래 경쟁력이 꽤 있다고 생각합니다. 기술적인 면은 물론이고 MS의 풍부한 SDK 지원 역량(Visual Studio, Visual Studio For Mac, Visual Studio Code)과 Azure를 기반으로 한 클라우드와의 손쉬운 연동 등이 강점이 될 수 있습니다. 아울러 MSDN(Microsoft Developer Network)에 누적된 광범위한 기술 문서, FAQ 및 예제 등은 다른 플랫폼에 익숙한 개발자들이 닷넷으로 이동하는데 드는 어려움을 크게 줄여줄 것으로 생각됩니다. 특히 자바 개발자들도 적응하는 데 큰 무리가 없을 것입니다. C#의 문법은 객체지향 언어인 자바와 비슷하고, 패키지 관리는 누겟(Nuget)으로 하는데 자바의 메이븐(Maven)과 같은 개념으로 생각하면 됩니다.

이제 닷넷이라고 하면 윈도우만 떠올려서는 안 됩니다. 바야흐로 닷넷은 맥(Mac), 리눅스 등 다양한 플랫폼에서 동작하고 개발할 수 있는 프레임워크가 되었으며 크로스 플랫폼, 오픈소스와 같이 핫한 키워드들에 보다 가까워졌습니다. MSA로 다양한 서비스를 개발하는 환경에 있어서도 닷넷은 Spring Boot, Node.js, Python과 더불어 좋은 대안이 될 수 있을 것입니다. 향후 이어질 닷넷의 새로운 행보와 흥미로운 변화를 주목해 보시길 바랍니다.

# References
[1] https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/september/net-standard-demystifying-net-core-and-net-standard
[2] https://devblogs.microsoft.com/dotNET/NET-core-is-open-source/
[3] https://dotnetfoundation.org/blog/2016/06/27/samsung-join-tsg
[4] https://dotnetfoundation.org/about/technical-steering-group
[5] https://docs.tizen.org/application/dotnet/index
[6] https://devblogs.microsoft.com/dotnet/introducing-net-standard/



▶  해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶  해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


공유하기 열기
허형석
허형석 IT 테크놀로지 전문가

에스코어㈜ 소프트웨어사업부 개발플랫폼그룹

소프트웨어 엔지니어링과 개발 도구, 개발 플랫폼에 관심이 많은 개발자입니다.