윈도우 데스크탑 프로그램 가상서버 버전 질문

어디다가 질문해야할 지 몰라서 여기가 가장 적합한 것 같아서 질문 올려봅니다.

cafe24 윈도우 가상서버 호스팅으로 윈도우 서버를 하나 구한다음에
거기다가 winform이고 .net4.6 버전으로 개발한 프로그램을 돌리고 있는데요,

그런데 .net4.6은 지원이 중단된 상태이고 cafe24 가상서버 os가 windows server 2016 standard이고
.net 버전을 높이면 동작하지 않는다고 하더라구요 그래서 inform말고 WPF나 WinUI 3으로 개발을 해서
서버에 올려놓고 사용해보고 싶은데 이때 버전을 타는지, 하위호환여부가 궁금하고
서버비용은 간단한 프로그램인지라 월 3만원내외로 생각하고 있습니다.

그래서 질문은 가상서버 호스팅이나 클라우드 서버 중 괜찮은게 뭐가 있을지 답변부탁드립니다
1번은 가격
2번은 초기 세팅이 쉬운편이면 좋겠습니다

2개의 좋아요

가상서버 os라고 하면 , 일단
접속 권한이 있어서 원격접속이 가능한 OS라는 상태이신건가요?
그럼 게스트 OS인 2016에 대한 제어권은 전부 글쓴이분께 있으시다는건데,
보통 2016 이전에 심지어 지금 노후화되어 교체예정중인 저희 쪽 2008 서버도
닷넷 4.8까지 업데이트로 자동으로 올라가있거든요…
혹시 한번 확인해보시겠어요?

게다가 보안상의 이유를 들더라도 닷넷 업데이트는 하시는게 좋지 않을까 싶은데…

1개의 좋아요

image
확인해보니까 현재 4.7버전이 설치되어있네요

그런데 이서버말고 서버를 새로 구축할생각이고 개발은 WPF 또는 WinUI 3을 할 생각인데
이 경우에 서버세팅을 어떻게하는게 합리적인지 궁금합니다…
비용은 월 3만원내외정도 생각하고있고
cafe24같은데서 가상서버 호스팅을 쓸지 아니면 클라우드 서버를 사용할지가 1차 고민이고
2차로 1차에서 결정을 했다면 어떤 플랫폼을 사용하는게 괜찮을지 요 두가지가 고민이네요

2개의 좋아요

일단 시중에 나와있는 Windows 서버 호스팅은 설치된 OS가 서버 버전인데, Windows Server 2008 이래로 클라이언트 OS랑 100% 호환된다고 보장하기 어렵습니다. 가장 대표적으로, 멀티미디어나 유저 레벨 API가 서버의 경우 빠져있을 수 있고 (이 경우는 일단 Windows Server가 Full Mode로 설치가 되있어야 함을 전제로 Desktop Experience 구성 요소를 추가 설치해야 하는 경우입니다), 더 나아가서 아예 데스크톱 셸을 빼고 설치하는게 마이크로소프트 기본 설정이자 공식 권장 구성이기까지 합니다. (이 경우는 Core 모드라고 불리며, 공식적으로 Core 모드에서 Full Mode로 스위칭할 수 있는 기능은 빠져있습니다.)

그렇다보니, 오히려 호환성 면에 있어서는 Windows Forms가 제일 호환성이 좋고 (단 이것도 COM, DCOM, ActiveX 호스팅이 끼면 서버 환경에서는 100% 호환을 장담할 수 없습니다.), WPF의 경우 애니메이션이나 그래픽 가속이 RDP 환경에서 뭉개질 수 있음을 인지하셔야 합니다. 그리고 WinUI의 경우 가장 최신 버전인 Windows Server 2022라고 할지라도 지원되지 않습니다. 기술적으로 Windows Server 2022는 여전히 Windows 10 코드 베이스를 기반으로 하고 있기 때문에 그렇습니다. WinUI 3가 타겟으로 삼는 Windows 11 코드 베이스를 기반으로 하는 Windows Server는 아직 출시되지 않았고, 향후에 어떻게 될지 조차도 논의가 불분명한 상태이기까지 합니다.

참고: Question: What Windows Server operating system is supported? · Issue #3370 · microsoft/microsoft-ui-xaml · GitHub

클라이언트 애플리케이션을 RDP나 VNC 등의 원격 제어 툴을 통해서 스트리밍하는 방식으로 제공하는 것은 여러모로 불편하고 비용이 많이 드는 작업이 될텐데요, 그럼에도 이 방식으로 애플리케이션을 배포해야 하는 시나리오를 좀 더 알려주시면 유익한 논의가 될 것 같습니다.

4개의 좋아요

상세한답변 감사드립니다
딱히 저 방식으로 해야해서 그런것은 아니었고, 그저 처음에 가상서버를 접해서 사용하기 시작하면서 애플리케이션을 가상서버에 배포하는 방식을 썼었습니다
원래 원했던것은 애플리케이션을 사용하는 사용자가 컴퓨터를 잘 모르더라도 사용할 수 있게하는 것인데 처음에 윈폼으로 개발을 시작했다보니 이게 계속 이어졌습니다.
그러다가 최근에 와서 WPF와 WinUI를 써보고싶은데 현재 서버환경에서는 사용가능여부가 궁금했었구요

사실 접근성을 높이려면 웹으로 개발하는게 맞는거같긴한데 써먹어온게 윈폼인지라 질문드려봤네요ㅠ

3개의 좋아요

그러셨군요. 말씀하신대로 웹 애플리케이션 (닷넷 기준으로는 ASP.NET Core와 Blazor)으로 제공하는 것이 여러모로 가장 이상적인 형태일 것입니다.

그러나 레거시 코드를 계속 유지해야 하거나, 비즈니스 로직이 다중 사용자를 고려한 것이 아니라서 윈도우 애플리케이션의 형태를 계속 유지할 필요가 있다면, 무설치 애플리케이션으로 패키징하는 것이 가장 접근성이 좋을 것 같습니다.

정말 다행히도 닷넷 프레임워크가 내장되지 않은 윈도우 OS는 이제 없습니다. (혹시나 아직도 윈도우 2000, 윈도우 XP, 윈도우 비스타, 윈도우 7을 지원해야 한다면 기술적인 유연성이 크게 떨어지게 됩니다.) 그래서 최신 기술을 써야 할 필요성이 강하지 않다면 오히려 닷넷 프레임워크 기반의 윈폼이나 WPF 기반으로 애플리케이션을 만들어서 배포하는 것이 사용자에게 제일 높은 접근성을 보장하는 수단이라고 할 수 있고, 최신 기술을 쓴다면 역시 닷넷 6 (짝수 버전이 장기 지원판이기 때문에)를 사용하는 것이 안정적이라고 할 수 있습니다.

윈폼의 경우 또한 생각해보셔야 할 점이 있습니다. 요즈음은 윈도우 OS 역시도 High DPI가 기본입니다. 윈폼이 처음 개발될 때는 96dpi로 고정된 레이아웃 시스템을 사용했지만, 윈도우 10 이후부터는 N배수 늘리기로 레이아웃이 정배수가 아닌 가변 배수로 늘어나도록 고해상도 지원을 대응하는 경우가 많아졌습니다. 이 때 윈폼은 이런 동적 레이아웃 시스템에 취약한 설계를 가지고 있어, 배포되는 곳에 따라서는 레이아웃이 크게 망가져서 UI때문에 고민이 커지는 경우도 있습니다.

물론 이런 부분을 예방하기 위해 닷넷 프레임워크 2.0 때부터 테이블 레이아웃 패널 같은 UI를 체계적으로 잡아주는 컨테이너 컨트롤들이 조기에 포함되긴 했지만, WPF 만큼의 유연함이 없고, 레이아웃이 복잡해지면 모든 렌더링을 윈도우 메시지로 처리하는 윈폼의 특성 상, 그래픽 가속의 혜택을 받지 못하고 제한된 성능으로 그래픽을 그려야하기 때문에 깜빡임 현상이나 CPU 사용률 상승, 혹은 애플리케이션 성능 저하가 더 커지게 됩니다. (익히 나오는 더블 버퍼링 이야기는 그리는 방식에서 빚어지는 비효율성, 대표적으로 러시아 페인트공 알고리즘 딜레마를 면하기 위한 해결책이죠.)

간단한 애플리케이션을 넘어서서 점점 워크로드가 커지고 복잡해진다면 그런 맥락에서 WPF로 전환하는 것이 좋을 수 있다는 이야기가 그 때문에 나온다고 보시면 될 것 같습니다. :smiley:

이와 같은 배경을 깔고 어떤 선택을 하는 것이 더 합리적이고 효율적인지도 같이 고민해보시면 좋을 것 같아 추가로 답글을 드립니다.

5개의 좋아요

말씀해주신 내용대로 CPU사용률 상승이나 성능저하는 한번 겪어본 이슈인데, WPF는 확실히 고려해볼 가치가 충분해보입니다
추가로 상세한답변 감사드립니다!

3개의 좋아요