메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

새로운 개발 환경, 닷넷 프레임워크

한빛미디어

|

2006-03-16

|

by HANBIT

12,639

저자: 서우석
출처: 마이크로소프트의 IT 전략과 미래


만약 여러분이 마이크로소프트라는 회사에 관심이 있다면 한번쯤은 닷넷에 대해서 들어보았을 것입니다. 닷넷은 XML 웹 서비스를 사용하여 서로 다른 시스템을 통합할 수 있는 환경을 의미하지요. 또한 여기서 언급되는 XML은 데이터 교환 양식의 표준을, 웹 서비스는 인터넷 환경에서 제공되는 서비스를 의미합니다. 마이크로소프트는 닷넷을 기반으로 하여 지금까지 사용되어 왔던 클라이언트/서버 환경이 아닌 서비스 지향적인 컴퓨팅 환경을 만들어 나가려고 하고 있습니다.

그렇다면 닷넷은 마이크로소프트만의 기술일까요?

그렇지 않습니다. 닷넷은 눈에 보이는 어떤 기술을 의미하지 않습니다. 앞서 정의한 것처럼 XML 웹 서비스를 위한 운영 환경을 총칭하는 새로운 컴퓨팅 개념을 표현하기 위하여 마이크로소프트가 만들어낸 용어일 뿐입니다. 따라서, 마이크로소프트는 닷넷의 개념을 구체화하기 위한 무언가가 필요했습니다. 이를 위해 마이크로소프트는 닷넷의 뼈대를 구성한다는 의미를 갖는‘닷넷 프레임워크’라는 개발 환경을 제공하고 있습니다. 이 챕터에서는 닷넷에서 작동하는 서비스 및 응용 프로그램을 개발하기 위한 닷넷 프레임워크와 닷넷 프레임워크 2.0을 완벽하게 지원하는 개발 도구인 비주얼 스튜디오 2005에 대해서 살펴보도록 하겠습니다. 그리고 마이크로소프트가 닷넷 프레임워크와 비주얼 스튜디오 2005로 달성하고자 하는 궁극적인 목표는 무엇인지 조명해 보겠습니다.

■ Section 1

새로운 개발 환경, 닷넷 프레임워크

-----------------------------------------------------------------------------------------
비록 닷넷을 마이크로소프트가 정의하였지만 개념 자체는 이미 예전부터 업계에서 회자되어 왔던 개념입니다. 다만 얼마나 효율적으로 그러한 개념을 구현할 수 있느냐가 업계의 주요 관심사였습니다. 그런 의미에서 봤을 때 닷넷 프레임워크는 닷넷을 충실히 지원하고 있는 개발 환경이라고 볼 수 있습니다.
-----------------------------------------------------------------------------------------

이번 섹션의 주제인 닷넷 프레임워크를 살펴보기 전에 먼저 닷넷1)이 무엇인지 살펴보도록 하겠습니다. 흔히 닷넷과 닷넷 프레임워크를 동일한 개념으로 이해하고 있지만 엄격하게 말하자면 다른 개념입니다.

닷넷, 과연 실패인가?

닷넷은 2000년에 처음으로 세상에 모습을 드러냈습니다. 그런데 6년이 지난 지금까지‘닷넷이 무엇인지’에 대해서 설명해야 하다니, 마이크로소프트가 출시한 제품 중에 이렇게 오랫동안 홍보해야 했던 제품이 있었나 싶을 정도입니다. 마이크로소프트가 닷넷을 출시하던 초기에는 닷넷을 알리기 위해서 많은 노력을 기울였습니다. 그리고 그러한 홍보 전략은 어느 정도 맞아 들어가는 듯 했습니다. 닷넷에 관한 책들이 무수히 쏟아져 나왔고 온통 닷넷 얘기뿐이었습니다. 하지만 닷넷에 대한 관심은 점차 줄어들기 시작했습니다.

대부분의 개발자들은 닷넷 프레임워크를 사용하지 않고 Win32 API를 사용하여 제품을 개발하였습니다. 닷넷이 매력적으로 보이긴 했지만 지금까지 개발해온 제품을 재개발하는 일을 끔찍한 일로 받아들였기 때문이지요. 어떤 이는 이렇게 말하기도 합니다. “마이크로소프트조차도 닷넷에서 작동하는 제품을 개발하지 않는데 누가 개발하겠느냐?”고 말입니다.

그렇다면 마이크로소프트의 닷넷 전략은 실패한 것일까요? 이 물음에 대해 저는 그렇지는 않다고 생각합니다. 그래서, 필자는 몇 년째 닷넷 세미나를 진행해 오는 동안 세미나에 참석한 분들께 닷넷을 장기적으로 봐줄 것을 부탁했었습니다.“첫 술에 배부를 수 없다”라는 말씀을 드렸습니다. 물론 지금처럼 오랜 시간이 걸릴 것이라고는 저 자신도 미처 생각하지 못했지만 머지 않아 닷넷이 윈도우 개발 환경을 대체할 수 있을 것이라고 말해 왔습니다. 어쩌면 마이크로소프트 역시 닷넷이 기존의 운영 환경을 빠르게 대체할 수는 없을 것이라고 생각했던 것으로 보입니다. 마이크로소프트가 처음 닷넷을 출시한 후 지속적으로 기능을 업데이트하는 모습을 보면서 이런 추정을 하게 되었습니다.

마침내 약 6년여에 걸친 마이크로소프트의 노력은 닷넷 2.0의 출시라는 결실을 맺었습니다. 또한 닷넷의 저변화라는 측면에 있어서도 비록 기존의 운영환경을 완전히 닷넷으로 가져오지는 못했지만 새로 시작하는 프로젝트 중 많은 수가 닷넷을 사용하는 성과를 거두고 있습니다.2) 마이크로소프트는 닷넷 2.0의 출시와 함께‘제 2의 닷넷 붐’을 조성하려 하고 있습니다. 가장 눈에 띄는 행보는 닷넷 2.0을 기반으로 하는 여러 가지 제품들(비주얼 스튜디오 2005, SQL 서버 2005 등)을 쏟아내고 있다는 점입니다.

한편, 마이크로소프트는 닷넷을 처음으로 출시했던 때와 달리 이번에는 닷넷 자체를 알리기보다는 닷넷을 기반으로 한 다른 서비스들에 대한 홍보에 주력하고 있습니다. 사람들이 은근히 반감을 갖는 닷넷을 부각시키기보다는 서비스 자체를 부각시킴으로써 닷넷이 자연스럽게 사용되도록 하는 묘안을 생각해낸 것입니다. 마이크로소프트는 닷넷의 판매에 목적을 두고 있지 않습니다. 마이크로소프트는 닷넷을 가능한 많이 보급시키는데 그 목적을 두고 있습니다. 어떻게 보면, 닷넷이 마이크로소프트가 향후 달성하고자 하는 목표를 위한 기술적인 인프라로서 서서히 자리잡고 있기 때문에 굳이 닷넷만을 강조할 필요성이 없는 것일 수도 있습니다.

처음에는 닷넷 자체가 큰 이슈였지만 오늘날에는 닷넷 자체에 대해서 자세하게 알지 못해도 자신에게 맞는 닷넷 기반의 서비스를 얼마나 잘 사용하느냐가 더 큰 이슈가 되었습니다. 이는 마치 윈도우에 대해서 잘 알면 윈도우 프로그램을 잘 작성하는데 도움이 되겠지만 설령 윈도우에 대해서 잘 모른다고 하더라도 필요한 API들을 잘 활용할 수 있으면 원하는 소프트웨어를 작성할 수 있는 것과 같습니다.

새로운 개발 환경, 닷넷 프레임워크

닷넷 프레임워크는 마이크로소프트가 지향하고 있는 닷넷의 모습을 구현하기 위한 개발 환경입니다. 이제‘들어가는 말’에서 정의한 닷넷을 좀 더 구체화시켜 보겠습니다. 다음과 같이 정의할 수 있겠네요.

“닷넷은 곧 XML 웹 서비스를 의미하며 XML 웹 서비스는 운영체제, 장치 또는 프로그래밍 언어에 관계없이 인터넷을 통해 응용 프로그램에서 데이터를 통신하고 공유하기 위한 수단입니다.”

닷넷에 관한 이와 같은 정의는 굉장히 많은 내용들을 포괄적으로 포함하고 있습니다. 그런데 솔직히 무슨 말인지 쉽게 다가오지가 않습니다. 이 정의를 이해하기 위해 핵심적인 문장을 뽑아보면 다음과 같습니다.

• XML 웹 서비스를 의미하며
• 운영체제에 관계없이
• 장치에 관계없이
• 프로그래밍 언어에 관계없이
• 인터넷을 통해
• 응용 프로그램에서 데이터를 통신하고 공유하기 위한 수단

하나씩 살펴보겠습니다. 첫번째 문장은 이미 앞에서 살펴봤습니다. XML은 데이터 교환 양식의 표준을, 웹 서비스는 인터넷 환경에서 제공되는 서비스를 의미합니다.

두번째 문장인 ‘운영체제에 관계없이’라는 말은 매우 당돌한 표현입니다. 마이크로소프트는 분명 윈도우라는 운영체제를 만들어서 파는 회사입니다. 그런데도‘운영체제에 관계없이’라는 표현을 사용하다니요. 또 다른 윈도우를 만들겠다는 말일까요? 이 말은 기존의 운영체제(윈도우나 리눅스 등) 위에 또 다른 가상의 운영체제를 제공하겠다는 의미입니다. 그럼, 이렇게 해서 뭐가 좋아질까요? 우선 운영체제에 의존하지 않기 때문에 닷넷 프레임워크로 개발을 하면 어디서든지 사용될 수 있습니다. 한마디로 닷넷이라는 운영체제로 통일이 된다고 할 수 있겠습니다.

운영체제에 상관없기 때문에 자연스럽게 세번째 문장인‘장치에 관계없이’ 라는 표현이 맞아 들어 갑니다. 장치를 사용하기 위해서는 장치를 관리하는 운영체제가 있어야 하는데 닷넷은 운영체제 위에 있는 가상의 운영체제를 나타내기 때문에 자연스럽게 장치에 독립적일 수밖에 없습니다. 이를 위해서 닷넷 프레임워크는 [그림 1]과 같이 윈도우보다 상위 계층에 공용 언어 런타임(Common Language Runtime)이라는 가상의 운영체제를 제공하고 있습니다.




[그림 1] 닷넷 프레임워크 2.0의 구조


네번째 문장인 ‘프로그래밍 언어에 관계없이’는 개발자가 그야말로“만세~”를 부를만한 사항입니다. 아! 그렇지 않을 수도 있겠군요. 개발자들은 자신이 사용하는 언어에 대한 자부심이 강하기 때문에(혹자는‘언어의 선택은 종교의 선택과 같다’고까지 말하더군요), 어떤 언어를 사용하더라도 같은 기능을 구현할 수 있다면 자존심이 구겨질 수도 있습니다. 하지만 언어의 선택이 곧 구현 가능한 소프트웨어의 범위를 제한하는 시대는 이미 갔습니다.

그렇다면 닷넷 프레임워크는 어떻게‘프로그래밍 언어에 관계없이’닷넷 프레임워크가 제공하는 기능을 사용할 수 있도록 하는 걸까요? 그것은 모든 언어가 공통적으로 일정한 규약을 따른다면 충분히 가능한 일일 것입니다. [그림 1]의 공용 언어 규약(Common Language Specification)은 닷넷 프레임워크를 지원하고자 하는 언어들이 공통적으로 지켜야 할 규약을 정의하고 있습니다. 일종의 만국어 개념입니다. 물론 안타깝게도 우리가 실상에서 사용하는 언어에서는 만국어가 존재하지 않지만 말입니다. 공통 언어 규약이 가능한 데에는 프로그래밍 언어에서 제공하는 키워드의 수가 비교적 적다는 점과 각각의 언어가 발전해 오면서 서로 비슷한 개념들을 지원하는 점에 힘입은 바가 큽니다. 공통 언어 규약은 그러한 공통적인 특성들을 토대로 만들어졌습니다. 현재 지원하는 언어로는 C#, VB.NET, Managed C++, J#( Java의 닷넷 버전)이 있습니다.

자, 그럼 계속해서 다섯번째 문장인‘인터넷을 통해’부분을 살펴보겠습니다. 인터넷은 오늘날 우리가 사용하는 가장 범용적인 통신 수단입니다. 기업에서 보안상의 이유로 외부와의 통신을 차단하기 위하여 모든 포트3)를 제한하는 경우에도 유일하게 사용 가능하도록 열어두는 포트가 인터넷 통신 포트입니다. 아무리 보안을 강조하는 회사라고 하더라도 직원에게 웹은 사용하게합니다. 그래서 닷넷 프레임워크는 서비스를 제공하기 위한 수단으로 인터넷을 선택하였습니다. 앞서 말한‘웹 서비스’는 바로 인터넷을 통한 서비스를 의미합니다. 그런데 [그림 1]에서‘웹 서비스’라는 말은 눈 씻고 찾아봐도 찾을 수가 없습니다. 왜냐하면 웹 서비스는 닷넷 프레임워크가 제공하는 고유한 기능이 아닌 업계에서 널리 인정된 표준이기 때문입니다. 닷넷 프레임워크뿐만 아니라 다른 제품들에서도 지원하는 기능입니다. 물론 얼마만큼 효율적으로 서비스를 제공할 수 있느냐는 별개의 문제가 되겠습니다.

여섯번째 문장인‘응용 프로그램에서 데이터를 통신하고 공유하기 위한 수단’은 어떤 내용을 주고받을 것인지를 말하는 것입니다. 웹 서비스를 통해서 사용할 수 있는 통신 수단(인터넷)과 어떤 내용을 주고받을지(데이터 공유)를 정의합니다. 한마디로 말하자면, 표현하는 방식은 달리하되 내용이 의미하는 바는 동일하게 갖도록 하자라는 의미입니다. 명함의 경우를 예로 들어 보겠습니다. 명함에 보통 어떤 정보들이 들어가죠? 이름, 부서, 직책, 회사명, 이메일, 전화번호, 주소 등이 기록될 것입니다. 여러분의 명함과 저의 명함은 분명생김새가 다를 것입니다. 하지만 기본적으로 명함이 제공하는 정보는 큰 차이가 없을 것입니다.

데이터 공유의 가장 큰 목적은 제공하는 정보의 의미가 같도록 하자는데 있습니다. 그러한 의도로 만들어진 언어가 XML(eXtensible Markup Language)입니다. XML은 얼핏 보면 HTML 코드처럼 보이지만, HTML 코드에 비해서 형식이 보다 정형화되어 있습니다. 닷넷 프레임워크는 기존의 데이터를 XML로 변환하거나 XML을 다른 형태의 데이터로 변환하기 위한 기능들을 제공하고 있습니다. [그림 1]에서‘Data and XML’에 해당하는 부분이 바로 이 기능들을 제공하는 구성요소입니다.

지금까지 마이크로소프트가 지향하고 있는 닷넷의 모습을 구현하기 위한 개발 환경인 닷넷 프레임워크가 어떠한 기능들을 제공하는지 살펴보았습니다. 닷넷 프레임워크는 닷넷의 모습을 구현하기 위한 개발 환경을 제공하기 위해서 기본적인 수준의 기능들을 제공할 뿐만 아니라 기업에서 원하는 수준의 응용 프로그램과 서비스를 작성할 수 있는 기능들을 제공하고 있습니다. 그런데 [그림 1]에서 아직 소개하지 않은 구성요소들이 있습니다. 중간쯤에 있는‘ASP.NET’과‘Windows Forms’입니다.

ASP.NET은 웹 구현을 위해 자주 사용되는 기능들을 미리 패키지화해둔 것이며 이것은 곧 하나의 웹 기술을 의미합니다. Windows Form은 윈도우 응용 프로그램 개발을 위해 자주 사용되는 기능들을 미리 패키지화해둔 것입니다.

닷넷 프레임워크의 이 두 구성요소들은 한 섹션에서 소개하기에는 너무 내용이 많기 때문에 다음 두 섹션에 걸쳐 자세하게 소개하도록 하겠습니다. 그리고 [그림 1]에서 오른쪽에 보면 닷넷 프레임워크의 모든 기능을 완벽하게 지원하는 비주얼 스튜디오 2005가 있습니다. 비주얼 스튜디오 2005 역시 이번 챕터에서 다루고 있는 큰 주제이기 때문에 총 세 개의 섹션(섹션 04, 05, 06)에 걸쳐서 소개하도록 하겠습니다.

-----------------------------------------------------------------------------------------
▒ Note ▒

닷넷 프레임워크는 개발 도구가 아닙니다.

그렇습니다. 닷넷 프레임워크는 비주얼 스튜디오가 아닙니다. 하지만 많은 개발자들 은‘닷넷 프레임워크 = 비주얼 스튜디오’라고 생각합니다. 예를 들면, 이렇게 말하는 자칭(?) 닷넷 개발자들이 있습니다. “내가 이번에 비주얼 스튜디오 2005로 개발을 했는데 말이야(실제 의미: 닷넷 프로그래밍을 했는데 말이야).”

왜 그럴까요? 만약 개발자들이 이와 같이 생각하는 것이 오해라면 마이크로소프트의 실수겠지만 저에게는 마이크로소프트가 개발자들이 그러한 오해를 하도록 의도한 것처럼 보입니다. 마이크로소프트는 언제나 새로운 기술을 개발자와 함께 공유하기 위한 정책을 펴왔습니다. 마이크로소프트는 개발자들을 지원함으로써 얼마나 많은 부가가치가 창출되는지를 잘 알고 있습니다.

플랫폼은 유용한 응용 프로그램 없이는 널리 사용되지 못합니다. 마이크로소프트 오피스(Microsoft Office)만 사용하는 사무실 직원이라도 윈도우는 반드시 깔아야 하는 것처럼 말이죠. 개발자들이 새로운 환경에 맞는 제품을 계속해서 개발할 수 있도록 새로운 제품을 출시할 때마다 개발자를 위한 툴을 배포해왔습니다. 예를 들면, 비주얼 스튜디오 2002는 닷넷 프레임워크 1.0과 함께 출시되었으며 비주얼 스튜디오 2003은 닷넷 프레임워크 1.1, 그리고 비주얼 스튜디오 2005는 닷넷 프레임워크 2.0과 함께 출시되었습니다. 비주얼 스튜디오 2005부터는 Express라는 이름의 툴을 배포하여 일반 사용자의 개발자화까지 꾀하고 있습니다. 이러한 정책 때문에 많은 개발자들이 닷넷 프레임워크를 개발 도구로 혼동하는 것입니다.
-----------------------------------------------------------------------------------------

비록 닷넷을 마이크로소프트가 정의하였지만 개념 자체는 이미 예전부터 업계에서 회자되어 왔던 개념입니다. 다만 얼마나 효율적으로 그러한 개념을 구현할 수 있느냐가 업계의 주요 관심사였습니다. 그런 의미에서 봤을 때 닷넷 프레임워크는 닷넷을 충실히 지원하고 있는 개발 환경이라고 볼 수 있습니다. 다음 두 섹션에서는 앞서 말했던 것처럼 ASP.NET과Windows Forms에 대해서 살펴보도록 하겠습니다.
TAG :
댓글 입력
자료실

최근 본 책0