6. .NET Framework에서 .NET으로의 전환
기존에 존재하는 .NET Framework App을 새로운 .NET 버전으로 전환하는 것은 선택의 문제입니다. 예를 들어 비교적 적은 방문자를 유지하고 있는 .NET Framework의 Web 서비스의 경우 현재 상태로 아무런 문제가 없다면 굳이 전환이 필요하지 않을 수 있지만 Windows Server에서의 비용 문제로 인해 Linux Server로 서버를 이전하고자 하는 경우라면 전환에 필요한 비용이 많지 않다면 오히려 전환이 이득이 될 수 있습니다.
● 전환 가능한 Application의 유형
.NET은 Windows, Linux, MacOS등에서 실행이 가능한 것으로 아래 유형을 지원하고 있습니다. 기존의 Application이 Windows를 벗어나 다른 OS에서 실행이 되어야 하는 경우라면 아래 프로젝트 유형 안에서 전환을 선택할 수 있습니다.
- ASP.NET Core MVC
- ASP.NET Core Web API
- ASP.NET Core SignalR
- Console Application
기존 Application이 Windows전용의 Application이라면 아래 프로젝트 유형 중에서 전환을 선택할 수 있습니다.
- Windows Forms
- Windows WPF
전환 목표가 Cross-platform으로서의 Descktop이나 Mobile을 목표로 하는 Application이라면 아래 유형중에서 전환을 선택할 수 있습니다.
- Xamarin (Android 또는 iOS)
- .NET MAUI (Windows 또는 MacOS, Android, iOS 등)
기존 Application이 다음과 같은 유형의 Application이라면 전환은 불가능하며 새로운 유형으로의 재개발을 추진해야 합니다.
- ASP.NET Web Forms → ASP.NET Core Razor Pages 혹은 Blazor 사용
- Windows Communication Foundation (WCF) → ASP.NET Core gRPC를 사용(단, .NET을 사용하면서 WCF의 유지가 가능한 CoreWCF이라는 오픈소스 프로젝트로 가 존재하므로 참고하시기 바랍니다.)
- Silverlight → .NET MAUI 사용
Silverlight나 ASP.NET Web Forms의 경우 현재 상태에서는 .NET으로의 전환은 사실상 불가능하며 Windows Forms나 WPF application의 경우 Windows 기반을 유지할 수 있다면 새로운 API와 더 나은 성능을 제공받을 수 있으므로 .NET으로의 전환은 훌륭한 선택이 될 수 있습니다.
기존의 ASP.NET MVC와 ASP.NET Web API의 경우에는 .NET으로의 전환을 선택하게 되면 Windows는 물론이고 Linux나 macOS 등 다양한 platform에서 실행이 가능한 혜택을 누릴 수 있으며 Linux, Docker를 사용한 개발이 가능함과 웹서비스를 위한 쿠버 네티스(Kubernete)를 사용할 수 있습니다.
이는 레거시에서 Windows전용이던 상황을 벗어나 더 비용효과적이며 더 가벼운 platform사용을 가능하게 하는데 여전히 Windows Server에서 Hosting 되어야 하는 상황이라고 하더라도 IIS의 의존성을 벗어나 고성능의 Kestrel혹은 기타 다른 Web Server를 사용할 수 있습니다.
● .NET Framework와 .NET의 차이
.NET | .NET Framework |
NuGet package로의 배포가 가능하며 실행에 필요한 .NET버전에 맞는 Library들과 함께 단순 복사형태로도 배포가 가능합니다. 또한 배포된 각각의 Application들은 독립적으로 실행될 수 있습니다. | System에 의존적으로 배포되며 Global Assembly Cache (GAC)와 같은 일련의 Assembly들을 공유합니다. 따라서 공유되는 Assembly에서의 문제는 다른 Application에 전역적으로 영향을 줄 수 있습니다. |
component단위의 계층구조를 통해 실행이 가능한 범위 안에서 가능한한 작은 단위의 배포가 가능합니다. | 단일적이며 획일적인 배포만 가능합니다. |
ASP.NET Web Forms과 오래된 기술이 제거되었고 AppDomains, .NET Remoting, binary serialization와 같은 비cross-platform기술또한 제거되었습니다. | ASP.NET Core MVC와 같은 최신 .NET과 유사한 몇몇 기술들과 더불어 ASP.NET Web Forms과 같은 오래된 기술들도 같이 유지함으로서 Framework의 안정성이 떨어지고 경량화를 유지할 수 없습니다. |
● .NET 이식성 분석기(.NET Portability Analyzer)
마이크로소프트는 기존 .NET Framework Application을 .NET으로 전환하기 위한 보고서를 생성하는 도구를 제고하고 있습니다.
.NET 이식성 분석기 - .NET | Microsoft Docs
● .NET 업그레이드 도우미(.NET Upgrade Assistant)
마이크로소프트는 기존 레거시 .NET Framework Application을 .NET으로 전환해주는 홀륭한 도구인 .NET 업그레이드 도무이 도구를 제공하고 있으며 아래 유형의 Application에서 사용이 가능합니다.
• ASP.NET MVC
• Windows Forms 또는 WPF
• Console Application
• Class Library
해당 도구는 아래 명령을 통해 설치가 가능하며
dotnet tool install -g upgrade-assistant |
아래 홈페이지에서 해당 도구를 어떻게 사용할 수 있는지 확인할 수 있습니다.
.NET 업그레이드 도우미 개요 - .NET Core | Microsoft Docs
'.NET' 카테고리의 다른 글
[.NET] 닷넷 Type 사용하기 - 2. 날짜와 시간 (0) | 2022.06.26 |
---|---|
[.NET] 닷넷 Type 사용하기 - 1. 숫자, 문자열 (0) | 2022.06.26 |
[.NET] 닷넷 - 4. Decompiling (0) | 2022.06.24 |
[.NET] 닷넷 - 3. 배포하기 (0) | 2022.06.24 |
[.NET] 닷넷 - 2. .NET components (0) | 2022.06.24 |