안녕하세요 ![]()
.Net Dev 에 올리는 첫 글이라 매우 두근두근 하네요…!
저는 장비 회사에서 c# 으로 윈도우 어플리케이션을 개발 하고 있는 5년차 으린이 엔지니어 입니다.
최근에 팀 내부에서 Winform 으로 개발했던 프로그램을 WPF 로 전환해서 개발중인데
그 과정을 공유하고 기록하고 싶어서 글을 쓰게 됐습니다 ![]()
바야흐로… 저는 입사하고 첫 프로그램 개발을 Winform 으로 시작했습니다
그런데 Winform 로 개발하는 것에 익숙해지기 전,
새로운 기술에 대한 거부감이 없고 오히려 사랑하시는(?) 진보적인 팀장님께서 추후 Maui 로 넘어가기 위해 Xaml 를 경험할 겸 WPF 로 개발을 해보자고 선언 하셨고, 당시 꼬마 개발자였던 저는 C# 언어도 제대로 다룰지 모르지만 그저 팀장님의 열정을 존경하며 WPF 로 넘어가 어설프게나마 MVVM 이라는 디자인 패턴을 사용해서 프로그램을 개발했었습니다. GUI 보다 제어 로직이 중요한 장비 업계에서 프론트 영역에도 깊은 관심을 갖는다는 것이 당시 저에게 ‘배울게 많겠다’ 라는 생각이 들게 해주었고 열정있게 임했던것 같아요 ㅎㅅㅎ
하지만… 당시 꼬마 개발자인 저는 MVVM 이라는 패턴을 ‘왜 쓰는지’, ‘어떻게 쓰는건지’ 에 대해 심도있게 생각하지 못했고 WPF 로 개발을 한다면 MVVM 은 무적권 써야해!! 라는 생각만으로
View - ViewModel - Model 이라는 틀에 갖혀 개발을 했었습니다.
MVVM 에 대한 이런 얉은 이해력으로는 기존 프로그램에 있는 제어 로직을 패턴을 지키며 사용하기 어려웠고 어찌저찌 프로그램을 개발하긴 했지만 아무래도 개발 일정 안에 WPF 로는 완성도 있게 만들 수 없겠다 싶어 다시 Winform 으로 넘어가 작업 했었어요ㅜ
그러다 4년차 쯤 되니 프로그램을 개발할때 유지보수와 같은 프로그램 안정화에 관심을 쏟을 수 있게 되었고Winform 으로는 어느정도 편하게 개발 할 수 있게 됐을때
팀장님께서 내부 프로그램 모듈화 및 리팩토링을 공표하셨고, 해결해야 될 고민 중 하나인
’ 과금 하지 않고 어떻게 하면 프로그램을 이쁘고 보기 좋게 만들 수 있을까’ 를 팀원들과 토론 하던 와중
’ 어차피 Maui 로 넘어가는 것이 최종 목표라면 초반에 고생하더라도 이번기회에 WPF 로 내부 프로그램을 개편하죠!! ’ 라고 겨우 찍먹만 해본 제가 Winform 개발자만 있는 팀원들을 향해 외쳐버렸었죠…
그렇게 온 팀원이 WPF 프로그램 개발에 착수하게 되었고
골치아픈 일거리를 던져버린것 같아 (실제로 맞기도하고…)
도움이 되고자 이전에 WPF 로 개발했었던 경험을 토대로 ‘MVVM 이라는게 무엇인지’ ,
그리고 MVVM 만으로는 역설적이지만 MVVM 패턴을 고수하기 힘들다는걸 느껴봤기에
MVVM + DI 아키텍처 구상, DTO 개념 등을 공부 및 공유해가며 개발한지도 언 반년이 지났네요…!
장비업계 프로그램을 개발하는거니까 아무래도 나중에 양산에서 GUI 로직 수정이 어려우면
WPF 장점 따위는 알고싶지도 않게 될 수도 있으니, WPF 에서도 쉽게 GUI 로직을 수정할 수 있도록 MVVM 을 지키며 구현하는걸 염두해 두며 개발하다 보니까 예전에는 안보이던 바인딩의 장점, MergedDictionaries 의 활용, attached property 의 확장성 그리고 무엇보다도 커스텀 컨트롤의 높은 자유도가 보였고 어느 방면에선 Winform 보다 WPF 가 더 편하다고 느껴지기도 하더라구요 ![]()
큼큼… 주저리 주저리 얘기가 길어졌는데
결론은 장비 업계에서 Winform 을 벗어나 WPF 로 개발 한다는 건 정말 어려운 일이었지만 공부할수록 단점보다 장점이 더 많이 보이고 있어서 힘들지만 즐겁게 일하고 있네요
언능 개발중인 내부 프로그램이 빛을 내길 바라면서 ,
읽어주셔서 감사해요 ![]()
