제공: 한빛미디어 네트워크 기사
저자: 서우석
출처: 마이크로소프트의 IT 전략과 미래
■
새로운 개발 환경, 닷넷 프레임워크
비록 Windows Forms가 윈도우 환경에서 실행되는 응용 프로그램을 개발하기 위한 도구처럼 보일지라도 마이크로소프트가 지향하는 바는 Windows Forms를 이용하여 웹 응용 프로그램을 쉽게 배포하기 위한 수단으로써 활용하는 것입니다. 즉, 윈도우 응용 프로그램 소프트웨어를 작성하기 위한 도구처럼 보이지만 실제로는 운영 환경에 종속적이지 않은 작고 가벼우면서도 빠른 클라이언트를 작성하기 위한 개발 환경인 것입니다. 이는 스마트 클라이언트를 통해서 전체적으로 다양한 형태의 클라이언트를 요구하는 시장에 능동적으로 대처하기 위한 마이크로소프트의 전략이라고도 볼 수 있습니다.
Windows Forms는Windows 응용 프로그램 개발을 위해 자주 사용되는 기능들을 미리 패키지화해둔 것입니다. 따라서 Windows Forms는 응용 프로그램 개발자를 위한 것이라고 볼 수 있습니다. 이번 섹션에서는 닷넷 프레임워크가 응용 프로그램 개발자를 위해서 제공하는 기능들에 대해서 살펴보도록 하겠습니다.
윈도우 클라이언트 개발 환경의 변화
윈도우 클라이언트 응용 프로그램 개발자(줄여서 이하, 윈도우 개발자)가 닷넷 프레임워크 개발자(줄여서 이하, 닷넷 개발자)로 넘어가는 일을 도스 환경의개발자가 윈도우 환경의 개발자로 넘어가는 일에 비유하곤 합니다. 둘 중 어느 것이 더 쉬워 보인다고 할 수는 없지만 분명한 차이가 있습니다.
도스에서 윈도우로 넘어가는 일은 굉장히 큰 변화였습니다. 우선 도스창이라는 검정색 바탕에 흰색 글자가 표시되는 환경에서 최소 256 색이 지원되는 창모드가 지원되는 환경이었으니까 말입니다. 동시에 실행되는 프로그램의 수도 많아지고 프로그램의 내부적인 실행 과정도 매우 달랐습니다. 한마디로 기존에 갖고 있던 지식을 몽땅 덜어내고 새로 시작하는 편이 더 빠를 것 같았습니다.
이에 비해서 윈도우 개발자가 닷넷 개발자로 넘어가는 일은 그리 어렵지 않습니다. 우선 외형적인 차이는 거의 없습니다. 윈도우 환경에서 실행된다는 점도 동일하고 닷넷 프레임워크를 사용했다고 해서 개발한 소프트웨어에‘닷넷 프레임워크 사용 중’이라고 표시되는 것도 아닙니다. 그럼에도 불구하고 윈도우 개발자들 중 상당수가 닷넷 개발자의 길을 선택하지 못하고 있습니다. 그렇다면 왜 그럴까요?
윈도우 개발자들은 이전부터 사용해왔던Win32 개발 환경을 계속해서 고수해야 할 것인지 아니면 새로운 닷넷 플랫폼을 위한 개발 환경을 선택해야 하는 것인지에 대한 큰 고민에 빠졌습니다. 우선 소프트웨어의 배포 문제가 가장 큰 걸림돌이었습니다. 닷넷 프레임워크를 반드시 설치해야 한다는 부담이 따랐습니다. 닷넷 프레임워크 설치 파일의 크기는 약 20MB 정도입니다.
자신이 배포해야 하는 프로그램의 크기가 2MB 정도인데 프로그램을 실행시키기 위해서 20MB에 달하는 프로그램을 설치해야 한다면 배보다 배꼽이 더 큰 경우라서 부담스러울 수밖에 없습니다. 그래서 개발자들은 우선 닷넷 프레임워크를 설치할 필요가 없을 정도로 닷넷 프레임워크가 미리 고객의 컴퓨터에 설치되기를 기다리고 있는 것입니다.
하지만 필자의 경험에 비추어 볼 때 이와 비슷한 문제가 과거에도 있었습니다. 비주얼 스튜디오 6.0으로 대표되는 MFC(Microsoft Foundation Classes) 개발 프레임워크가 있었습니다. 마이크로소프트는 MFC를 공식적으로 모든 윈도우에 설치하지 않았기 때문에 MFC를 사용하여 개발된 프로그램을 실행시키기 위해서는 반드시 MFC를 구동하기 위한 파일들을 사용자의 윈도우에 설치해야 했습니다. 파일 복사만으로 충분했다면 그나마 다행이었겠지요. 버전의 차이로 인한 충돌 문제는 훨씬 심각했습니다. 오죽하면 DLL 지옥(DLL Hell)4) 이라는 표현을 썼겠습니까?
-------------------------------------------------------------------------
▒ Note ▒
스마트 클라이언트(Smart Client)는 무엇인가요?
섹션 01의 마지막 부분에서 스마트 클라이언트에 대해서 잠깐 언급을 했었습니다. 스마트 클라이언트라는 말이 혹시‘영리한’클라이언트라는 의미일까요? 마이크로소프트에서는 스마트 클라이언트를 다음과 같이 정의하고 있습니다. “쉽게 배포 및 관리할 수 있는 클라이언트 응용 프로그램인 스마트 클라이언트는 로컬 리소스를 활용하고 분산된 데이터 소스에 인텔리전트하게 연결됨으로써 뛰어난 적응력과 대응성을 갖춘 풍부한 대화형 경험을 제공합니다.”
[그림 2] 스마트 클라이언트의 개념도
[그림 2]에서 알 수 있는 것처럼 스마트 클라이언트는 씩 클라이언트5)와 씬 클라이언트6)의 장점만을 가져온 개념입니다. 또한 기존의 클라이언트가 지원하지 못했던 여러 장치에 대한 지원이나 웹 서비스에 대한 지원을 제공합니다.
여기서 오해할 수 있는 부분이 있는데 스마트 클라이언트는 앞으로 클라이언트가 지향해야 할 개념들의 큰 틀을 지칭하는 것일 뿐 특정 응용 프로그램을 가리키지는 않습니다. 그런 면에서 보면 스마트 클라이언트가 뭔가 대단한 것을 말하는 것처럼 보이지만 한편으로는 (뚜껑을 열어보니) 별거 아니라는 생각을 하는 개발자들도 있습니다. 하지만 스마트 클라이언트를 통해서 앞으로 어떤 기능들을 지원하는 클라이언트를 만들어야 하는지에 대한 아이디어는 얻을 수 있습니다.
그렇다면 스마트 클라이언트와 Windows Forms는 어떤 관계일까요? Windows Forms는 스마트 클라이언트라는 개념을 구체화시키기 위한 도구입니다. 예를 들면, 배포의 용이성에 관한 부분은 ClickOnce(뒤에 소개합니다)를 통해서 지원하고 있으며 사용자 인터페이스도 확장 가능한 형태의 개발 구조를 채택함으로써 전문적인 개발 환경을 지원하고 있습니다.
----------------------------------------------------------------------------
개발자가 작성한 프로그램에는 아무런 문제가 없었는데도(적어도 개발자의 환경에서는 말입니다) 사용자의 컴퓨터에 설치된 환경의 특성 때문에 프로그램이 충돌하는 현상이 자주 발생했습니다. 그나마 닷넷 프레임워크는 이 문제를 해결해서 다행스러운 일이 아닐 수 없습니다.
배포 문제뿐만 아니라 닷넷 프레임워크가 윈도우 개발자에게 널리 사용되지 못하고 있는 또 다른 중요한 이유는 윈도우 개발 환경이 수 년 동안 꾸준히 발전해오면서 성숙된 개발 환경을 제공하고 있기 때문입니다. 여기서‘성숙된’개발 환경이라는 표현은 프로젝트를 통해서 구현하고자 하는 아이디어를 어려움 없이 구현할 수 있는 정도를 의미합니다.
윈도우 개발자들을 닷넷 개발자 진영으로 끌어들이는데 있어서 가장 큰 걸림돌이 비주얼 스튜디오 6.0 이라면 믿으시겠습니까? 하지만 윈도우 개발 환경은 매우 급변하고 있습니다. 오늘날에는 정교하고 안정된 소프트웨어를 만드는 것보다 적절한 시간에 제품을 출시해야 하는 요구가 빈번해졌습니다. 제품은 고객이 원하는 기능들 을 완벽하게 제공해야 함은 물론이거니와(제품의 품질 보장) 원하시는 시기에 출시(time-to-market)되어야 합니다. 그래서 모든 기능을 처음부터 구현하기 보다는 이미 완성된 기능을 구입하여 사용하고 있습니다. 이러한 변화를 기존의 Win32 개발 환경이 충분히 뒷받침해주지 못하자 개발자들은 다른 대안을 선택하기 시작했습니다. 바로‘닷넷 프레임워크’를 말입니다.
Windows Forms라는 단일화된 개발 프레임워크를 제공
자, 이제 닷넷 프레임워크에게 주어진 과제는 크게 두 가지가 있다는 것을 알았습니다. 우선 닷넷 프레임워크를 효율적으로 사용할 수 있는 윈도우 개발 환경을 제공해야 하며 기존의 윈도우 개발자들이 닷넷으로 넘어올 수 있을만한 매력적인 기능을 제공해야 합니다. 닷넷 프레임워크가 이 두 가지 과제를 어떻게 해결하고 있는지 살펴보도록 하겠습니다.
우선Windows Forms라는 단일화된 개발 프레임워크를 제공하고 있습니다. 마이크로소프트에서는 윈도우 소프트웨어가 갖추어야 할 기본적인 조건들을 명시한 사용자 인터페이스(User Interface) 규격 문서를 제공하고 있으며 Windows Forms는 그러한 기본 사항들을 따르는 소프트웨어를 개발자들이 편리하게 개발할 수 있는 환경입니다. 개발자들이 언어에 종속될 수밖에 없는 이유도 개발 프레임워크와 깊은 연관 관계가 있습니다.
예를 들면, C++ 언어를 사용하는 개발자는 MFC를 주로 사용하고 비주얼 베이직(Visual Bacic)을 사용하는 개발자는 비주얼 베이직 개발 환경을 사용합니다. 자바 역시 자바 프레임워크를 사용합니다. 이와 같은 이유 때문에 섹션 01의 Note에서 설명했던 것과 같이 개발 언어가 곧 개발 도구를 의미하는 현상이 발생하고 있는 것입니다. 당연히 언어마다 제공하는 고유한 개발 환경에 익숙해지다 보니 언어간의 벽을 허물기가 더욱더 어렵게 되는 것입니다. Windows Forms는 언어가 개발 환경에 종속되어 버리는 현상을 막기 위한 방법을 제시하고 있습니다.
Windows Forms는 윈도우 클라이언트 응용 프로그램을 개발하기 위해서 사용할 수 있는 공통된 라이브러리들의 묶음입니다. 개발자들은 자신에게 필요한 라이브러리를 자신의 언어로 사용할 수 있습니다 그렇게 함으로써 각각의 언어가 갖는 고유한 기능은 계속해서 사용하되 지원하는 기능에는 차이가 없도록 합니다. 뿐만 아니라Windows Forms는 윈도우 클라이언트 개발 시에 유용하게 사용할 수 있는 수많은 컨트롤들을 제공합니다. 그리고 개발자의 생산성을 높이기 위하여 닷넷 프레임워크는Windows Forms를 통해서 신속한 응용 프로그램 개발(RAD; Rapid Application Development) 을 지원합니다.
[그림 3]은Windows Forms를 이용하여 간단한 웹 브라우저를 구현한 모습입니다.
[그림 3] Windows Forms 기반의 웹 브라우저
비록 개념적으로는 닷넷이XML 웹 서비스를 지원하는 운영 환경이기 때문에 웹 서비스에 관련된 기능만을 지원하는 것처럼 보이지만 클라이언트 개발자들이 닷넷 프레임워크를 사용하는데 문제가 없도록 클라이언트 개발에 관련된 기능들은 대부분 지원하고 있습니다.
ClickOnce라는 배포 개념을 도입
앞서 윈도우 개발자들이 닷넷으로 넘어오지 못하는 큰 이유 중의 하나가 배포 문제 때문이라고 설명하였습니다. 필자는 마이크로소프트가 이 문제를 ‘인터넷 익스플로러의 업데이트 시(또는 다른 제품의 업데이트 시)에 닷넷도 함께 설치하는 방법으로 해결하지 않을까?’라고 생각해 본 적도 있지만 마이크로소프트는 그렇게 하지 않고 근본적인 배포라는 개념에 충실하여 문제를 해결하였습니다. 비단 닷넷 프레임워크의 배포에 관련된 문제뿐만 아니라 여러분이 작성한 소프트웨어 자체의 배포에도 여러 가지 고려해야 할 사항들이 많습니다. 그 중에서 버전 문제가 가장 어려우면서도 중요합니다. 새로운 버전으로 업데이트를 할 때 이전에 설치된 소프트웨어로 인한 문제가 발생해서는 안 되기 때문입니다.
닷넷 프레임워크 2.0은 이와 같은 문제들을 해결하기 위해서 ClickOnce라는 배포 개념을 도입하였습니다. 특히 로컬 네트워크에서의 배포만을 지원하는 것이 아니라 인트라넷을 통한 배포까지도 지원하는 것은 주목할 만합니다.
인트라넷을 통해 배포를 돕는 기능은 IT 기업 환경에서는 매우 중요합니다. 많은 버전들이 계속해서 패치되고 설치되어야 하기 때문에 항상 최신 버전의 소프트웨어를 유지해야 하는 일이 큰 부담이 되기 때문입니다.
이를 위해 ClickOnce는 기존에 설치된 제품에 대한 버전 관리는 물론, 다양한 배포 형태(로컬, 인트라넷, 웹)를 지원합니다. 무엇보다도 가장 큰 장점은 이름에서 말해주듯이 클릭 한번만으로 모든 일이 처리된다는 점입니다.
ClickOnce를 보다 전문적으로 사용하기 위해서는 비주얼 스튜디오 2005를 사용해야 합니다. 지나치게 개발 도구에 의존하는 것이 바람직한 것은 아니지만 ClickOnce 역시 사용자의 요구에 맞는 기능을 제공하기 위해서는 설정해야 하는 부분들이 많기 때문에 개발 도구를 적극적으로 활용하는 것이 좋습니다. 구더기 무서워서 장 못 담그는 일은 없어야겠습니다.
지금까지 닷넷 프레임워크가 응용 프로그램 개발자를 위해서 제공하는 기능들에 대해서 살펴보았습니다. 분명 닷넷 프레임워크는 응용 프로그램 개발자에게 충분히 매력적인 기능들을 지원하고 있습니다. 비록 Windows Forms가 윈도우 환경에서 실행되는 응용 프로그램을 개발하기 위한 도구처럼 보일지라도 마이크로소프트가 지향하는 바는 Windows Forms를 이용하여 웹 응용 프로그램을 쉽게 배포하기 위한 수단으로써 활용하는 것입니다. 즉, 윈도우 응용 프로그램 소프트웨어를 작성하기 위한 도구처럼 보이지만 실제로는 운영 환경에 종속적이지 않은 작고 가벼우면서도 빠른 응용 프로그램을 작성하기 위한 개발 환경인 것입니다. 이는 스마트 클라이언트를 통해서 다양한 형태의 응용 프로그램을 요구하는 시장에 능동적으로 대처하기 위한 마이크로소프트의 전략이라고도 볼 수 있습니다.
닷넷은 더욱더 많은 개발자들의 지원을 받아야 하므로 앞으로도 Windows Forms의 기능은 계속해서 추가될 것입니다. 클라이언트 개발에 필요한 모든 기능을 포함할 때까지 말입니다.
-----------------------------------------------------------------------------
▒ Note ▒
ClickOnce, 정말 한번만 클릭하나요?
ClickOnce 기능은 설치 시 고려해야 하는 사항들(예를 들면, 버전 관리)을 간단하게 처리함으로써 설치 과정을 크게 단순화시키기 위한 노력의 일환으로 만들어졌습니다. 그런데 ClickOnce를 이용하면 정말 한번만 클릭해도 설치가 될까요? 간단한 응용 프로그램을 만들어 본 후, 온라인으로 배포해 보았습니다.
[그림 4] ClickOnce를 통한 배포
그리고 Run 버튼을 클릭(첫번째 클릭)해 보았습니다. [그림 5]와 같이 보안에 위험이 따를 수 있다는 경고 메시지를 보여주는 창이 실행됩니다. 프로그램을 실행시키기 위해서 Run 버튼을 다시 클릭(두번째 클릭)합니다.
[그림 5] ClickOnce의 경고창
만약 Publisher(소프트웨어의 제공자)를 믿을 수 있었다면 두 번째 Run 버튼을 클릭하는 일은 없었을 수도 있습니다. 하지만, 지금 버전에서는 인터넷 익스플로러에서만 최대 두 번 클릭으로 프로그램을 설치할 수 있으며 파이어폭스(FireFox)에서는 세 번 이상 클릭해야 실행이 가능합니다. ClickOnce가 클릭 한번만으로 설치가 된다고 소개하긴 했지만(이는 마케팅적인 측면도 있습니다) 클릭 횟수가 중요한 것이 아니라 프로그램 배포를 매우 간단하게 처리하였다는 데에 큰 의미가 있다고 봅니다.
---------------------------------------------------------------------------------