36
흥미롭고 영양가 있는 21 일 동안의 Visual Basic .NET 수업에 오신 것을 환영한다. Visual Basic .NET은 세계에서 가장 인기 있는 프로그래밍 언어인 Visual Basic 최신판이다. 이 책은 .NET 프레임워크와 Visual Basic .NET을 소개하고, 독자들이 가능한 빨리 실제 애플리케이션 프로그래밍을 시작할 수 있도록 디자인되었다. 개요 .NET 프레임워크는 Micorosoft 의새로운개발 툴의 근간을 이루는 개념과 기술의 핵심 집합이다. 이 프레임워크는 전 세계의 차세대 서버, 애플리케이션, 웹 기반의 서비스 기 반이 된다. .NET은 몇 시간 동안 혹은 심지어 21 일 동안에도 전부 이야기할 수 있는 성 질의 것이 아니기 때문에, 이 책에서는 핵심만을 이야기하려고 한다. 빨리 Visual Basic .NET을 이용한 프로그래밍을 해야 한다면, 앞으로 21 일 동안 이 책을읽고, 관련된 예 제를 실행해 보면서 .NET이 무엇인지, .NET 프레임워크를 어떻게 사용해야 하는지 알 아보자. Visual Basic .NET 언어의 중요 요소를 소개하고, .NET 프레임워크도 충분 히 다룸으로써, 프로그래밍을 시작하고, 스스로 원하는 것을 찾아서 해결할 수 있는 준 비를 갖추게 될 것이다. 시작하기 전에, .NET에 대한 핵심 사항을 언급해 두는 것이 중요하겠다. 독자들이 사용 하는 언어는 예전보다 덜 중요해졌다. 모든 .NET 언어(Visual Basic, C#, C+ + 다른 언어 )가 기반으로 삼는 아래 레벨의 기술인 프레임워크야 말로 진정한 .NET 플랫 폼이다. 이러한 사실은 Visual Basic 초보와 고수들에게 매우 기분 좋은 소식이며, 로써 Visual Basic 은더이상 2군 언어가 아니다. C+ + 을 사용하는 프로그래머로 제 한되었던, 운영체제의 고급 기능을 이용할 수 있게 된 것이다. 이제 어떠한 시스템이든, 어떠한 종류이든, Visual Basic 으로 작성할 수 있다. , 이러한 언어 독립성은 큰 부담없이 독자나 회사가 원하는 언어로 작업할 수 있게 해 준다. 아마도 선택을 하라면, 필자를 포함한 많은 사용자들은 Visual Basic .NET을택

초보자를 위한 한글 Visual Basic .NET 21일 완성infopub.co.kr/info/ebook/pdf/8054-467.pdf · 흥미롭고영양가있는21일동안의Visual Basic .NET 수업에오신것을환영한다

  • Upload
    buidat

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

흥미롭고 영양가 있는 2 1일 동안의 Visu al Basic .NET 수업에 오신 것을 환영한다.

Visu al Basic .NET은 세계에서 가장 인기 있는 프로그래밍 언어인 Visual Basic의

최신판이다. 이 책은 .NET 프레임워크와 Visual Basic .NET을 소개하고, 독자들이

가능한 빨리 실제 애플리케이션 프로그래밍을 시작할 수 있도록 디자인되었다.

개요

.NET 프레임워크는 Micorosoft의 새로운 개발 툴의 근간을 이루는 개념과 기술의 핵심

집합이다. 이 프레임워크는 전 세계의 차세대 서버, 애플리케이션, 웹 기반의 서비스 기

반이 된다. .NET은 몇 시간 동안 혹은 심지어 2 1일 동안에도 전부 이야기할 수 있는 성

질의 것이 아니기 때문에, 이 책에서는 핵심만을 이야기하려고 한다. 빨리 Visual Basic

.NET을 이용한 프로그래밍을 해야 한다면, 앞으로 2 1일 동안 이 책을 읽고, 관련된 예

제를 실행해 보면서 .NET이 무엇인지, .NET 프레임워크를 어떻게 사용해야 하는지 알

아보자. Visual Basic .NET 언어의 중요 요소를 소개하고, .NET 프레임워크도 충분

히 다룸으로써, 프로그래밍을 시작하고, 스스로 원하는 것을 찾아서 해결할 수 있는 준

비를 갖추게 될 것이다.

시작하기 전에, .NET에 대한 핵심 사항을 언급해 두는 것이 중요하겠다. 독자들이 사용

하는 언어는 예전보다 덜 중요해졌다. 모든 .NET 언어(Visual Basic, C#, C+ +과

다른 언어)가 기반으로 삼는 아래 레벨의 기술인 프레임워크야 말로 진정한 .NET 플랫

폼이다. 이러한 사실은 Visual Basic 초보와 고수들에게 매우 기분 좋은 소식이며, 이

로써 Visual Basic은 더 이상 2군 언어가 아니다. C + +을 사용하는 프로그래머로 제

한되었던, 운영체제의 고급 기능을 이용할 수 있게 된 것이다. 이제 어떠한 시스템이든,

어떠한 종류이든, Visual Basic으로 작성할 수 있다.

또, 이러한 언어 독립성은 큰 부담없이 독자나 회사가 원하는 언어로 작업할 수 있게 해

준다. 아마도 선택을 하라면, 필자를 포함한 많은 사용자들은 Visual Basic .NET을 택

30 시작하기 전에

할 것이다. Visual Basic .NET은 여러 가지 제약사항에도 불구하고 사용하기 쉬운 문

법과 코딩 스타일로 가장 인기 있는 프로그래밍 언어였던 Visual Basic의 후속작이다.

이제, .NET의 힘을 업고, Visual Basic .NET은 더욱 강력한 언어가 되었다.

만약 Visual Basic .NET 이외의 C#같은 언어를 배우는데 관심이 있다고 하더라도,

이 책은 상쾌한 출발 지점이 될 수 있다. 이 책에서는 .NET 프레임워크를 사용하는 방

법을 설명하며, 이 내용은 모든 .NET 언어에 공통적인 내용이기 때문이다.

이 책은 여러 장의 수업으로 구성되어 있으며, 각 수업은 데이터베이스 접속처럼 애플리

케이션을 만드는데 필요한 개념이나, IDE를 이용하는 방법처럼 독자들의 생산력을 늘리

는데 필요한 중요한 지식을 설명한다. 물론, 독자들이 원하는 순서대로 각 수업을 봐도

되지만, 일반적인 프로그래밍을 처음 접하는 독자라면, 순서대로 책을 읽어 나가는 것이

가장 좋을 것이다. 대부분의 수업에, 심지어 첫 번째 수업에도 예제 코드가 있으며, 독

자들이 코딩 연습을 할 수 있는 연습문제도 있다. 예제를 실행해 보고, 연습문제를 푸는

데 이 책을 읽는 대부분의 시간을 보낼지도 모른다. 손톱에 때를 끼며 익히는 지식만큼

독자들에게 뼈저리게 다가오는 것은 없다는 점을 명심하자.

누가 이 책을 읽어야 하는가?

이 책은 Visu al Basic .NET을 처음 접하는 기존의 Visu al Basic 개발자와 프로그래

밍을 처음 접하는 사람들을 대상으로 쓰여졌지만, 그 이외의 사람들에게도 유용하다. 만

약 Visu al Basic 프로그래밍을 해본 독자들이라면, Visual Basic .NET에 새로 추가

된 특징에 대한 예제와 설명만 골라서 볼 수 있다. 이전의 Visual Basic 6 .0과는 다른

점이 매우 많기 때문에, 이 책을 통해 이러한 변화에 쉽게 적응할 수 있다.

만약 Visual Basic 프로그래밍을 해보지 못했지만, 다른 언어를 접해본 독자라면, 처음

의 몇몇 수업을 보지 않고 그냥 넘어가려고 생각할지도 모르겠다. 하지만 1일 수업에서

전반적인 .NET의 개념을 소개하고, 2일 수업에서는 Visual Studio .NET에서 작업하

는데 필요한 IDE를 다루기 때문에, 다른 언어에 어느 정도 수련되어 있더라도 앞부분을

그냥 지나쳐서는 안 된다. 두 수업을 읽은 다음에는, 일반적인 프로그래밍 개념을 소개

하는 부분으로 넘어가고, Visual Basic .NET이 어떻게 오브젝트를 만들고, 데이터베이

스에 접근하며, 인터넷 애플리케이션을 만드는지에 대한 설명을 집중적으로 보면 된다.

시작하기 전에 3 1

얻을 수 있는 내용

이 책은 Visual Basic .NET을 이용해서 다양한 애플리케이션을 작성하는 방법을 가르친

다. 여기에는 클라이언트/서버와 웹 기반 애플리케이션을 포함된다. Visual Basic .NET

에 대한 주제를 읽어 가면서, 독자들은 .NET 프레임워크와 .NET 서버(SQL 서버나 인

터넷 정보 서비스(IIS, Internet Informat ion Service))에 대해서 많은 지식을 얻을

수 있다.

애플리케이션 디자인과 아키텍처 측면에서, 상속, 오버로드, 오버라이드나 고급 OO 특

징을 이용해서 클래스를 만들고, 오브젝트를 사용하는 Visual Basic .NET의 객체지향

적인 특징에 대해서 배울 수 있다.

애플리케이션 개발의 결과물이나 인터페이스 레이어 측면에서, Visual Basic .NET의

새로운 폼을 이용하여 Windows 애플리케이션을 만드는 방법과 웹 폼을 이용해서 웹

페이지 기반의 인터페이스를 빌드하는 방법, 그리고 웹 서비스를 만들어서 웹에 표출하

는 방법을 배운다. 어떠한 언어라도 웹과 XML을 이용해서 이 웹 서비스를 사용할 수

있다.

우리의 목표는 2 1일 수업 동안 독자들이 간단하더라도 자신만의 Visual Basic .NET

애플리케이션을 만들고, 거대한 Windows 애플리케이션이나 웹 기반 애플리케이션을 빌

드하는 팀원으로 일할 수 있게 하는 것이다.

다루지 않는 내용

앞에서 언어 독립성과 기반 테크놀러지의 중요성에 대해서 얘기했지만, 이 책은 먼저

Visu al Basic .NET에 대한 책이다. 따라서, 필자는 C#이나 다른 .NET 언어에 대해

다루지 않는다. 필자는 SQL 서버와 같은 데이터베이스를 사용하는 방법도 다루지만,

SQL 서버를 설정하고, 데이터베이스 서버를 관리하는 세부사항에 대해서 알고 싶다면

다른 책을 참고해야 한다.

또, Visual Basic .NET의 모든 점을 다루는 것도 무리이다. 왜냐하면, Visual Basic

은 다양한 특징을 갖는 거대한 언어이기 때문이다. 단순히 문법만 나열하더라도, 이 분

량의 책이 꽉 차버릴 것이다. 따라서 필자는 Visu al Basic .NET을 사용하는데 충분하

32 시작하기 전에

고, .NET의 새로운 특징을 이용해서 애플리케이션을 디자인하기에 적당한 정도로만

Visual Basic .NET을 설명하겠다.

요구사항

운영체제 Windows XP 프로페셔널, Windows 2000 (데이터 센터 서버, 어

드밴스드 서버, 서버 혹은 프로페셔널) 혹은 Windows NT 4 .0 서버. Visu al

Stu dio를 설치할 때, 필요한 서비스 팩과 업데이트된 데이터 접근 파일들 그리고

인터넷 익스플로러 6을 설치한다.

하드웨어 펜티엄 II 450Mhz, 128MB의 RAM, 800×600 , 256색 이상의

비디오 카드, 1GB 이상의 하드 드라이브 공간. 설치하는데 CD-ROM이 필요하지

만, CD를 다른 컴퓨터에 넣고, LAN 접속으로 설치할 수도 있다.

Visual Studio 이외에도, 이 책의 예제를 실행하려면 웹 서버에 접속되어 있어야 한다.

Visual Studio가 설치된 같은 컴퓨터일 수도 있고, .NET 프레임워크 SDK가 깔린 다

른 컴퓨터일 수도 있다. 가장 좋은 해결책은 독자의 주 개발 컴퓨터에 웹 서버를 실행하

는 것이다. 또, 중요한 요구사항은 SQL 서버 7.0이나 2000이다. 이 책의 후반부에서

데이터베이스에 접근하기 때문이다. 만약 SQL 서버가 없다면, 마이크로소프트 데이터

엔진(MSDE , Microsoft Dat a Engine)을 이용해서, SQL 서버 제품의 기능을 비슷하

게 흉내낼 수 있다. SQL 서버가 없다면, 데이터베이스 접근 수업의 예제를 수정해야 데

이터베이스에 접근할 수 있다.

필요한 기술

이 책은 초보자를 겨냥해서 쓰여졌지만, 그래도 몇 가지 기본적인 기술이 필요하다. 독

자들은 .NET을 실행할 수 있는 Windows 기반의 컴퓨터에 익숙해야 한다. 파일을 복

사하고, 프린트하며, 메모장에서 파일을 열 수 있어야 하고, 기본적인 텍스트 수정(자르

기, 복사하기, 붙이기)도 필요하지만, 수업시간에 일일이 설명하지는 않는다. 컴퓨터를

인터넷에 접속시키고, 웹 사이트를 브라우즈하는 기술도 필요하다.

이러한 기본적인 지식을 제외하면, 프로그래머가 아니어도 되며, 데이터베이스를 빌드하

는 방법을 몰라도 된다. 이런 분야에 대한 사전 지식이 있다면 내용을 이해하는데 도움

시작하기 전에 33

이 되겠지만, 이 책의 예제와 설명은 이런 사전 지식이 없는 사람들도 이해할 수 있도록

되어 있다.

웹 사이트

ht tp :/ / www.samspublishing.com/ det ail_sams .cfm?item = 0672320665에서 이 책

에 대한 웹 사이트를 찾아볼 수 있다. 이 웹 사이트에서, 이 책에 나온 코드를 다운로드

받을 수도 있고, Visual Basic .NET을 이해하는데 도움이 될만한 링크도 발견할 수

있다. 물론, 웹 사이트를 방문하지 않아도 책을 읽고 예제를 실행할 수 있지만, 긴 예제

의 경우, 웹에서 코드를 다운로드하면 시간을 절약할 수 있다.

장의 구성

2 1일이라는 시간은 긴 시간이기 때문에, 각 수업을 날짜별로 나누고, 다시 일주일 단위

로 잘라서 구성했다. 첫 번째 주에서는 .NET과 프로그래밍의 전반적인 개념을 소개하

고, 필수 문법과 Visual Basic .NET으로 프로그램을 작성하는데 필요한 테크놀러지를

다루는데 초점을 맞춘다. 둘째 주에서는 독자들이 프로그래밍하는데 꼭 필요한 .NET

프레임워크를 깊이 이해할 수 있도록 돕고, Windows Form이나 웹 폼을 이용해서 사

용자 인터페이스를 만드는 방법이나, 데이터베이스를 이용하는 방법처럼 실제 프로그램

을 빌드하는데 필요한 내용을 다룬다. 마지막 주에서는 자신만의 오브젝트를 만들거나,

다른 사람의 컴퓨터에 애플리케이션을 설치하고, XML과 웹 서비스를 이용하는 것과 같

은 고급 주제를 다룬다. 앞에서 언급했듯이, 순서대로 수업을 읽어나가도록 하는 것이

좋지만, 만약 먼저 읽고 싶은 주제가 있다면 그 부분을 먼저 읽어도 된다.

피드백

.NET을 배우는데 유용한 도구가 되고 독자들의 개발 라이브러리에 추가하는 가치있는

책으로 만들기 위해서 부단히 노력을 했다. 더 자세한 설명이 있었으면 하는 바램이나,

책을 더 좋게 만들 수 있는 제안이 있다면, 부디 Sams 출판사에 알려주길 바란다. 독자

들의 의견을 수렴해서 앞으로 책을 출간하거나, 이 책의 증보판을 만들 때 적용하도록

하겠다.

34 시작하기 전에

이 책에서 사용한 표시

이 책은 독자들이 핵심 내용을 낚아채고 중요한 정보를 쉽게 알아보도록 돕기 위해서,

여러 가지 표시를 사용한다.

노트는쉽게읽을수있는유용한기타정보나, 주제의흐름을놓치지않도록돕는정보를제공한다.

팁은Visual Basic 프로그래밍을효율적으로만드는정보를제공한다.

주의는특정한상황에서발생하는문제나부작용을주의할수있도록해준다.

Do Do n 't

독자에게 권장하는 내용을 제공한다. 피해야 할 나쁜 사항을 제공한다.

새로운 용어아이콘은앞으로 사용한새로운용어를 정의하는곳이다.

입력 아이콘은 코드 예제와 코드 예제에 필요한 사용자의 입력을 표시하는데 사용한다.

분석 아이콘은 코드 예제가 어떻게 되어 있는지, 왜 해당 코드가 들어갔는지를 설명하는

부분을 표시하는데 사용한다.

WEEK 1

시작하며

첫 일주일동안에는 다음 주제에 대해서 설명하겠다.

* .NET, Visu al Basic 그리고 프로그래밍의 개념(1일)

* Visual Studio .NET을 설치한 후 사용하는 방법을 배우고, 프로그램 작성해보기(2

일)

* Visual Basic 문법과 데이터 타입, 프로시저, 변수에 대한 프로그래밍 테크닉(3일) ,

루프와 조건 문장을 이용한 프로그램 흐름 제어(4일) , 에러 처리(6일)

* Visual Basic .NET 솔루션의 구성하고 설계하는 방법(5일)

* 이 책의 나머지 부분에서 계속 사용할, 객체지향 개발과 관련된 중요한 개념들(7일)

36 We e k 1

첫 번째 일주일은 중요한 기간이다. 왜냐하면, Visual Basic .NET 프로그래밍의 다른

부분을 이해하는데 기본이 되는, 지식의 토대를 마련하는 기간이기 때문이다. 1일 수업

에서는 프로그래밍의 기본적인 개념을 소개하고, Visual Basic의 간단한 역사와 함께

.NET 플랫폼을 설명하면서, Visual Basic을 탐험하고 배우는 과정을 위한 첫발을 내

딛겠다. 2일 수업에는 Visual Studio 개발 환경의 기능을 배울 것이다.

3일과 4일 수업에는, 앞으로 작성할 Visual Basic 프로그래밍에 필요한 변수, 루프, If

문장과 같은 개념과 문법을 설명한다.

5일 수업에는, Visual Basic .NET으로 만들 수 있는 서로 다른 프로젝트 종류를 소개

하고, 각각의 프로젝트가 전체 시스템 아키텍처에 어떻게 맞아 들어가는 지 설명한다.

마지막으로, 6일과 7일 수업에는 손수 코딩을 하면서, 에러 처리와 오브젝트 사용에 대

해서 배운다.

첫 주에는 이 책의 나머지 부분에서 설명할 고급 주제의 기반이 되는 내용을 주로 설명

한다.

1일

Visual Basic .NET 소개

오늘 수업에서는, 다음 질문에 답하면서 독자들을 Visual Basic 프로그래밍 세계로 인

도하겠다.

* 프로그래밍이란 무엇이며, 왜 프로그래밍을 하고자 하는가?

* 왜 Visual Basic을 배워야하는가?

* .NET이란 무엇인가?

38 We e k 1

요즘은 컴퓨터를 널리 사용하며, 필자가 아는 많은 사람들은 컴퓨터로 하루 종일 작업하

곤 한다. 하지만, 이렇게 컴퓨터가 널리 쓰임에도 불구하고, 필자가 가장 자주 받는 질

문은 컴퓨터 프로그래머가 하는 일은 뭔가요? 이다. 이런 질문을 하는 사람이 많기 때문

에, 오늘 수업 시간에는 프로그래밍이 무엇이고, 왜 프로그래밍을 하고자 하는지에 대해

서 살펴보도록 하겠다.

컴퓨터 프로그래밍 이해하기

우리는 종종 하드웨어 용어를 이용해서 컴퓨터 얘기를 하곤 한다. 예를 들어, 나는 펜티

엄 III 600MHz에 RAM 256MB 꼽았다~ 라고 하는 말을 종종 들었을 것이다. 하지만

하드웨어만으로는 별 쓸모가 없다. 가령, CPU (중앙 처리 장치, 독자의 컴퓨터에 꼽혀

있는 펜티엄 III와 같은 메인 컴퓨터 칩)는 간단한 수식 계산이나, 시스템의 각종 장치

로 데이터를 전송하는 것과 같은 중요한 작업을 할 수 있다( 메모리에서 데이터

를 읽거나 레지스터의 값을 변경하는 동작 하나 하나를 명령어(Inst ruct ion)라고 하며,

각각의 CPU는 자신만의 명령어 집합(Inst ruct ion Set )을 갖는다) . 하지만 CPU 자체

만으로는 하드 드라이브의 파일을 읽는 것처럼 간단한 동작조차도 할 수 없다. 컴퓨터

프로그램은 이런 하드웨어 요소가 알아먹을 수 있는 명령어 집합이며, 대개 하드웨어 자

체만으로 해결할 수 없는 복잡한 작업을 수행하기 위해서 컴퓨터 프로그램을 작성한다.

디스크 드라이브, 메모리, 모니터 그리고 프린터를 사용하는 기본적인 동작들도 실제로

는 매우 복잡하다. 따라서 실제 프로그램의 동작을 구현하는데 소비하는 시간보다, 주변

장치들과 상호작용하는데 더 많은 시간을 소비하게 된다. 양도금액을 계산하는 프로그램

을 작성하면서 하드웨어까지 직접 제어하면, 실제 계산은 몇 라인밖에 되지 않지만, 디

스플레이를 관리하는 등의 이슈들을 처리하느라 수백, 수천 라인을 허비해야 한다. 예전

에는 이런 방식으로 프로그래밍했었다. 애플리케이션의 실제 목적을 구현하는데 충분한

시간을 투자할 수 없었기 때문에, 프로그래밍을 효율적으로 할 수가 없었다. 따라서 프

로그래머가 자신의 작업에만 집중할 수 있도록 다른 세부사항을 자동으로 처리해 줄 수

있는 무언가가 절실했다.

운영체제(Operating System)의 역할

컴퓨터 하드웨어 위에서 기본적인 기능을 담당하는 레이어를 제공하기 위해 운영체제가

탄생했다. 운영체제도 컴퓨터 프로그램이지만, 메모리 관리, 디스크 입출력 그리고 낮은

레벨의 다른 작업을 처리하기 위해 존재한다. 컴퓨터에 운영체제가 있으면, 낮은 레벨의

세부사항에 대한 걱정없이 프로그램을 작성할 수 있다. 즉, 파일을 열거나, 플로피 디스

Da y 1 Vis ua l Bas ic .NET 소개 39

크를 포맷해야 할 때 운영체제에게 그런 동작을 요청하기만 하면 된다. 이런 관계를 도

표와 함께 살펴보면, 컴퓨터 하드웨어와 운영체제, 운영체제와 다른 프로그램 사이의 여

러 계층 관계를 시각적으로 이해할 수 있다.

그림 1.1

운영체제는하드웨어장치와프로그램사이의인터페이스가되어서,프로그래머가하드웨어의특정한코드에대해신경쓰지

않도록해준다.

종종, 프로그램과 운영체제 사이의 관계를 명확하게 정의할 수 없을 때도 있다. 즉, 프

로그램이 운영체제에서 지원하지 않는 하드웨어를 사용하려 하거나, 퍼포먼스를 극대화

하려고 할 때, 운영체제를 거치지 않고 직접 하드웨어에 접근할 수도 있다. 초기 PC 운

영체제에 이런 경우가 자주 있었다. 왜냐하면, 많은 프로그램들이 하드웨어와 직접 상호

작용을 해야 했었기 때문이다. 이런 제약사항 때문에 PC용 소프트웨어를 만들고자 하는

사람은 프린터를 제어하는 등의 세부사항을 직접 처리해야 했다. 후속 버전의 운영체제

에서 더 많은 기능을 지원하게 되면서, 이들 시스템에 맞는 프로그램을 작성하기가 수월

해졌다. 결국, Windows가 이런 시스템을 대체하기에 이른다. 운영체제가 다른 프로그

램에게 사용자 인터페이스 기능을 제공한다는 점에서, Windows는 비약적인 발전을 한

셈이다. Windows 운영체제 하에서, 컴퓨터 프로그래머가 [그림 1.2]에서처럼 대화상자

를 화면에 표시하고 싶다면, 단순히 운영체제에게 대화상자를 표시하도록 요청하면서 표

시할 메세지만 넘겨주면 된다. 애플리케이션 프로그래밍 인터페이스(API , Applicat ion

Programming Interface)를 통해서 운영체제가 지원하는 모든 기능을 사용할 수 있다.

API는 운영체제가 표출하는 모든 기능을 대변하며, 독자의 프로그램에서 이 모든 기능

을 사용할 수 있다는 뜻도 된다.

그림 1.2

Windows는서비스의일부분으로써, 대화상자와

같은GUI(Graphical UserInterface) 요소에대한처리를지원한다.

사용자 애플리케이션(독자가 작성한 프로그램도 포함)

운영체제

디바이스 드라이버 디바이스 드라이버

하드웨어 장치

40 We e k 1

이런 발전으로 인해, 각각의 프로그램은 컴퓨터의 일반적인 동작에 더 적은 노력을 들이

고, 프로그램의 실제 목적에 더 집중할 수 있게 되었다. 하드웨어에 종속된 코드를 애플

리케이션에서 분리함으로써 얻는 다른 이점은, 프린터나 하드 드라이브, 더 빠른 CPU

처럼 하드웨어가 변하더라도 새 장치를 수용하기 위해서 운영체제를 갱신할 필요는 있겠

지만, 그 컴퓨터에서 돌아가는 프로그램은 영향을 받지 않는다는 것이다.

Visual Basic 프로그래머인 독자에게 이것이 무엇을 의미하겠는가? 설령, Win dows가

어떻게 이미지를 모니터에 그리는지, 프린터에 프린트하는지, 하드 디스크에 파일을 저

장하는지에 대해 하나도 모르더라도, 독자들은 양도금액을 계산하는 예제처럼 특정한 작

업을 수행하는 컴퓨터 프로그램을 작성할 수 있다. 이 책의 도움을 받는다면, 독자는 최

고의 생산성으로 프로그램을 작성할 수 있게 될 것이다.

프로그래밍 언어의 역할

자, 이제 운영체제가 무엇을 제공하는지를 이해할 수 있을 것이다. 하지만 어떻게 프로그

램을 생성하는지에 대해서도 잘 이해할 수 있겠는가? 오늘 수업의 앞부분에서 필자는 컴

퓨터 프로그램을 컴퓨터 하드웨어에 대한 명령어들의 집합이라고 정의했다. 하드웨어 자

체는 비교적 간단한 동작만 처리할 수 있기 때문에, 명령어도 대개 간단하다. 프로그램의

최종 결과물은 하드웨어가 이해할 수 있는 코드로, 흔히 기계어(Machine Language)

혹은원시 코드(N at ive Code)라고 한다. 운영체제에 의해 메모리로 로드된 명령어 집합

은 메모리를 한 곳에서 다른 곳으로 옮기거나, 수식 계산을 하는 것과 같은 명령어로 이

루어져 있다. 이렇게 수천 개의 명령어가 모여서 하나의 프로그램을 완성한다.

물론, 원시 코드를 직접 이용해서 프로그램을 작성할 수도 있다. 단순히 디스크에 파일

을 만들고, 명령어로 채우면 된다. 하지만 매우 간단한 프로그램을 만드는데 엄청난 시

간을 들여야 할지도 모른다. 이런 노력을 피하고, 프로그래머로 하여금 프로그램 본연의

목적에만 집중할 수 있도록 하기 위해, 고급 프로그래밍 언어가 태어났다.

고급 프로그래밍 언어를 이용해서 강력하고 복잡한 명령어를 사용할 수 있다. 이 명령어

는 대응되는 기계어 명령어로 잘게 나뉘어진다. 고급 언어의 한 문장을 10개의 기계어

로 바뀔 수도 있다.

고급 컴퓨터 언어에서 기계어 혹은 원시 코드로 번역하는 작업을 컴파일(Compile)이라고 하며, 이런

번역 작업을하는프로그램을 컴파일러(Compiler)라고 한다.

Da y 1 Vis ua l Bas ic .NET 소개 4 1

수십 년간 많은 언어가 이렇게 태어났다. 포트란(Fort ran) , 코볼(Cobol) , APL, 파스

칼(Pascal) , C와 베이직(Basic)은 수백 가지의 언어 중에서 몇 가지 예를 꼽은 것에

불과하다. 각각의 언어는 자신만의 명령어 집합을 갖고 있으며, 프로그래밍 노력을 되도

록 줄일 수 있는 방향으로 변해 갔다. 거듭해서 컴퓨터가 발전하면서, 프로그래밍 언어

는 C+ + (독자들이 추측하듯이 C를 기반으로 한다)처럼 기존 언어에 새로운 특징을 추

가하거나, J ava처럼 아예 새로운 언어로 태어나기도 했다. 대개, 프로그래밍 언어는 프

로그래밍 생산성을 향상시키고, 프로그래머가 최대한 쉽게, 원하는 프로그램을 작성할

수 있도록 하는 방향으로 발전했다.

단순히 개발 속도를 향상시키기 위해 언어가 발전했다는 말은 간략하게 얘기한 것이다. 개발속도는 언어 발전의 여러 동기 중 하나에 불과하다. 더 빠르고 더 안정적인 애플리케이션을만들거나, 더 설치하기 쉬운 애플리케이션을 만드는 것도 프로그래밍 언어가 이루고자 했던목표들이다.

처음에 프로그래밍 언어는 단순히 컴파일러 하나만을 포함했다. 노트패드와 같은 텍스트

에디터를 이용해서 프로그램을 작성하고, 이 소스 코드 이름을 가지고 컴파일러를 실행

했다. 에러가 없는 경우, 컴파일러는 최종 결과물로 실행 가능한 프로그램을 내놓는다.

그러면 개발자는 에러가 있는지 없는지 테스트하기 위해서 파일을 실행해 보고, 텍스트

에디터에서 코드를 수정하고 다시 컴파일하는 과정을 반복한다. 이런 개발 과정은 [그림

1.3]에서 보듯이, 특정 언어에만 국한된 내용이 아니다. 즉, 프로그래머라면 모두에게

공통적이다.

그림 1.3

컴파일러는고급언어로작성된소스코드를컴퓨터가알아먹을수있는명령어로전환한다.

프로그래밍 언어가 발전함에 따라, 개발 사이클도 같이 개선되었다. 더 향상된 컴파일러

가 개발되고, 통합 개발 환경(IDE , Integrated Development Environment )과 같은

개념도 나왔다. IDE의 목적은 코드를 작성하고, 디버깅하며, 컴파일하는 소프트웨어 개

발 단계를, 프로그래머에게 하나의 통합된 인터페이스로 제공하는 것이다. 인터페이스는

하나로 줄었지만, 실제로 사용하는 테크놀로지는 비슷하다. 대부분의 경우, 프로그래머

코드 작성과 수정

에러 찾기

실행

컴파일

42 We e k 1

는 텍스트 파일을 만들고, 컴파일해야 하지만, 작업 환경이 훨씬 사용자 친근하게(User

Friendly) 되었다는 점이 다르다.

그림 1.4

Visual Studio는VisualBasic을포함한여러언어에똑같은인터페이스를

제공하는 IDE이다.

컴파일언어(Compiled Language)말고, 인터프리터언어(Interpreted Language)라는것도있다. 컴파일 언어는 실행하기 전에 소스 코드를 컴파일해야 한다. 하지만 인터프리터 언어에서는 소스를 컴파일하지 않는다. 대신, 특별한 프로그램이 코드를 읽어가면서 적절한 동작을 수행한다. 대개프로그램을 실행할 때마다, 소스를 읽어서 파싱하는 과정을 거쳐야 하기 때문에,인터프리터 언어는 컴파일 언어보다 실행 속도가 느리다. 왜냐하면, 컴파일 언어는 파싱 과정이 컴파일할 때 한번만 일어나기 때문이다. 한 때는 Visual Basic이 인터프리터 언어였지만,지금은아니다( Visual Basic .NET 코드를컴파일하면, MSIL(Microsoft IntermediateLanguage)라고하는가상의기계어로바뀐다).

IDE로 인해 어떤 것이 언어의 특징이고, 어떤 것이 IDE의 특징인지를 구분하는 것이

애매해졌다. Visual Basic의 경우, 프로그래머가 IDE를 이용해서 고급 기능을 더 쉽게

구현할 수 있다는 점에서 특히 더 그렇다. 이런 기능은 Visual Basic 코드를 추가하며,

이 코드가 실제로 동작한다. 지금 설명한 예는 IDE에 기능이 추가된 것이지만, 종종 두

가지를 구분하기가 매우 어려울 때도 있다. 저자가 Visu al St udio .NET의 개념을 소

개할 때, IDE가 여러 언어를 지원할 수 있으며, IDE와 그 IDE 밑에서 돌아가는 언어

사이의 차이점을 이해하는 것이 중요하다는 점을 독자들은 알아차렸을 것이다.

프로그래밍 언어 역사에서 또 한 가지 중요한 것은, Visual Basic과 같은 시각적인 언어

(Visual Language)를 개발했다는 것이다. 그래픽 인터페이스를 이용해서 프로그램을

생성할 수 있을 때, 그 언어를 시각적이라고 한다. 이런 언어들의 공통적인 특징은 버튼,

텍스트 그리고 다른 항목을 화면에 배치해서 사용자 인터페이스를 만들 수 있도록 해준다

Da y 1 Vis ua l Bas ic .NET 소개 43

는 점이다( [그림 1.5] 참조) . 이 때도 실제로는 코드가 생성되는 것이지만, 프로그래머는

애플리케이션의 그래픽 인터페이스를 매우 손쉽게 구성할 수 있다. 저자는 오늘 수업의

뒷부분에서 Visual Basic이 갖는 프로그래밍 언어로서의 위치를 설명하겠다.

왜 컴퓨터 프로그램을 작성하는가?

필자가 가장 자주 받는 질문은 컴퓨터 프로그래머는 무엇을 하느냐는 것이었다. 프로그

램 개발에 대한 전반적인 개념을 설명해 주고 나면, 도대체 왜 그런 것을 해야 하느냐는

질문을 다시 받곤 했다. 코드를 작성하는 것이 즐겁기 때문이라는 대답은 그 사람들을

이해시키기에 충분하지 못했다. 따라서 어떻게 프로그램을 작성하는지를 배우기 전에,

무엇을 작성하고 왜 작성해야 하는지에 대해 고민해 보는 것이 의미가 있을 것 같다.

그림 1.5

시각적인개발툴을이용해서

인터페이스를시각적으로만들수있다. 필요한코드는개발툴이생성한다.

컴퓨터 프로그래밍을 할 때 가장 먼저 이해해야 할 것은, 만들고자 하는 프로그램이 어

떤 종류인가를 살펴보는 것이다. 필자가 사람들에게 만들고 싶은 애플리케이션의 예를

들어보라고 하자. 대부분의 사람들은 Microsofot Word나 Excel을 대답했고, 몇몇은

컴퓨터 게임을 얘기했으며, 몇 명은 윈도우 자체를 만들고 싶다고 대답했다. 이 모든 것

들은 엄밀하게 말해서 컴퓨터 애플리케이션이며, 누군가는 그런 애플리케이션을 프로그

래밍해야 한다. 하지만 정작 가장 큰 종류의 프로그램들은 언급조차 되지도 않았다. 가

장 많은 소프트웨어 프로그램은 독자들이 매일 접하는 시스템이다. 독자들이 프로그래밍

에 관심이 있다고 하더라도, 프로그램을 작성하는데 들어가는 개발 시간에 대해 생각해

본 적은 없을 것이다. 집 근처 비디오 가게의 대여 시스템 같은 프로그램이나, 지역 정

44 We e k 1

부에서 운전 면허증을 조회하는데 사용하는 프로그램은 한 사람이나 소수의 사용자를 대

상으로 개발된 것들이다. 이런 프로그램들은 Microsoft Word처럼 금방 구할 수 있는

프로그램과 크게 다르지는 않지만, 몇몇에 특화되어 있다는 특징은 맞춤 애플리케이션

프로그래밍의 비율이 매우 크다는 점을 보이기에 충분하다.

프로그래머는 소프트웨어 개발의 다양한 양상을 처리할 수 있어야 하며, 맞춤 소프트웨

어의 경우는 더욱 그렇다. 하지만 소프트웨어 개발 라이프 사이클(SDLC, Software

Development Life Cycle)에는 이것들 외에 몇 가지 중요한 단계가 더 들어간다( [그림

1.6] 참조) .

코딩을 시작하기 전에 시스템이 하고자 하는 것, 즉 요구사항(Requirement )을 이해하

고 있어야 한다. 그리고 이 정보를 이용해서 디자인(Design)이라고 하는 컴퓨터 애플리

케이션의 청사진을 만들어야 한다. 고객의 요구를 컴퓨터 시스템의 일부분으로 전환한

것으로 볼 수 있는 이 청사진은, 프로그래머 작업의 가이드가 된다. 사용자가 처음에 지

정한 요구사항을 만족할 수 있는 컴퓨터 시스템이라면 원하는 결과물이다. 완성된 시스

템을 사용자에게 설치하고 유지보수하며 개선해야 한다. 시스템에서 발견된 버그 문제는

반드시 수정해야 하며, 새로운 기능도 추가해야 한다.

그림 1.6

소프트웨어개발프로젝트의라이프사이클은몇단계로구분할수있다.

사이클은 소프트웨어 개발자의 삶이고 작업이다. 대부분의 프로그래머들은 왜 프로그래

밍하는 지에 대해 간단하게 답변할 수 있다. 즉, 그들은 유용한 코드를 작성하려고 한다.

프로그래밍의 순수한 목적은 컴퓨터 하드웨어가 유용한 작업을 하도록 하는 것이며, 이

런 이유가 프로그래머로 하여금 프로그래밍을 하도록 한다. 필자는 이런 개념을 맘에 새

기고, 예제로 보여주는 모든 프로그램이 독자에게 프로그래밍 경험을 주는 것뿐만 아니

라, 유용한 동작을 수행하도록 하겠다. 이것이 유용한 애플리케이션을 만들 때, 많은 사

람들이 아이디어를 애플리케이션으로 구현하는 가장 빠른 방법으로 Visual Basic을 꼽

는 이유이기도 하다.

요구사항

버그 수정과유지보수

디자인

설치 구현

Da y 1 Vis ua l Bas ic .NET 소개 45

Visual Basic의 간략한 역사

Visual Basic의 역사는 BASIC(Beginner s All-purpose Symbolic Instruct ion Code)

이 1964년 처음 개발된 것에서 시작한다. BASIC은 프로그래밍 초심자가 쉽게 배우고 사

용할 수 있도록 고안된 언어였다. 이 언어는 15년 가까이 유행했고, 많은 사람과 회사에

서 BASIC 컴파일러와 인터프리터를 개발했다.

1975년 Microsoft가 설립되었을 때, 첫 제품으로 BASIC을 내놓았으며, 곧 유명한 제

품이 되었다. Microsoft BASIC과 후속 언어인 Quick BASIC(QBASIC이라고도 한

다)은 가장 널리 쓰이는 PC용 BASIC 버전이 되었다. 오늘날에도 비교적 많은 수의 팬

이 남아있다(더 관심이 있다면, h t tp :/ / www.qbasic.com에서 관련 자료를 찾아보라) .

Windows에서도 Quick BASIC을 사용할 수는 있었지만, Windows 스타일 인터페이스

로 코딩하는데 적지 않은 노력이 들기 때문에, Windows라는 새 환경에는 그리 적합한

언어가 아니었다.

Microsoft는 인기있고 배우기 쉬운 BASIC 언어와, 사용자가 프로그램 사용자 인터페

이스를 시각적으로 만들 수 있게 하는 개발 환경을 통합해서 새로운 제품을 내놓았다.

독자들이 추측하고 있듯이, 이 제품이 Visual Basic 1.0이다. Visual Basic 1.0은 널

리 쓰이지는 못했지만, 그래픽 사용자 인터페이스(GUI)를 빠르게 개발할 수 있는 환경

을 제공했다. Visual Basic은 Windows 버전으로 빠르게 옮겨가긴 했지만, DOS 버전

부터 시작했다는 점에 독자들은 놀랄 것이다( [그림 1.7] 참조) .

그림 1.7

Windows 버전의첫VisualBasic으로, 오늘날의다양한개발툴에서공통적으로찾아볼수있는핵심기능을제공하고있으며, 가장중요한것은시각적인끌어놓기(Drag and Drop)를사용하고있다는점이다.

46 We e k 1

Visual Basic은 점차 인기를 얻어 갔다. Visual Basic을 성공하게 했던 가장 중요한

특징은 Microsoft , 프로그래머 그리고 서드 파티(Third Party)에서, 프로그램에 붙일

수 있는 커스텀 인터페이스 컴포넌트를 제공할 수 있다는 점이었다. 차트 표시, 이미지

수정, 모뎀 연결 등이 이런 컴포넌트에 해당한다. Visual Basic 언어를 이용해서 컴포

넌트를 통합하는 방식으로, Visual Basic 프로그래머는 보다 강력한 애플리케이션을 개

발할 수 있었다. Visu al Basic은 개발 시간을 비약적으로 단축했으며, 이로 인해 가장

인기있는 프로그래밍 언어가 되었다.

Visual Basic 후속 버전에 새로운 기능이 추가되면서 점점 더 완벽한 개발 툴이 되었

다. 특히, 중요한 변화 중에 하나는 Visual Basic으로 작성한 프로그램을 런타임 위에

서 실행하는 기능이었다. 1997에 나온 버전 5.0 전에, Visu al Basic은 인터프리터 언

어였기 때문에, Visu al C+ + , 델파이와 같은 컴파일 언어에 비교해서 상대적으로 성능

이 나빴다. 하지만 Visu al Basic 5.0은 프로그램을 컴파일된 버전과 인터프리트할 수

있는 버전, 두 가지를 모두 만들 수 있으며 성능도 꽤 향상됐다. Visual Basic의 또 다

른 중요한 변화는 컴포넌트를 만들 수 있게 되었다는 점이다. 프로그래밍하다 보면 양도

금액 계산 루틴처럼, 잠재적으로 여러 프로그램에서 사용할 수 있는 코드 부분을 발견할

수 있다. 프로그램 내에서 그 코드를 공유하려면, 프로시저(Procedure)를 작성하면 된

다. 그렇게 하면 프로그램에 코드 블록을 한 번만 입력해서, 애플리케이션의 모든 부분

에서 호출하여 사용할 수 있다. 또, 새로 개발하는 애플리케이션에 그 프로시저 코드를

단순히 복사해서 사용할 수도 있지만, 이 경우에는 문제가 생긴다. 독자나 다른 사람이

버그를 고치거나, 코드 동작을 개선할 경우 코드 블록을 수정하게 되는데, 이 때마다 각

애플리케이션의 해당 코드를 복사해서 고쳐야 하기 때문이다.

더 좋은 코드 공유 방법은 프로그램과 별개 파일로 저장되는 코드 라이브러리를 만들어

서, 독립적으로 변경할 수 있도록 하는 것이다. 이런 라이브러리를 컴포넌트라고 하며,

대개 .dll 파일 형태로 만든다. 프로그래머들은 라이브러리를 이용해서 코드를 공유하는

방법을 더 선호한다. Visu al Basic의 새 버전이 나올수록 컴포넌트를 만드는 기능 또한

꾸준히 발전되었다. 1996년 발표된 버전 4 .0부터 컴포넌트를 생성할 수 있는 기능이 추

가되었으며, 이제는 개발 프로젝트에서 빼놓을 수 없는 중요한 기능이 되었다. 컴포넌트

는 14일 객체지향 프로그램 소개에서 더 자세히 설명하겠다.

Visual Basic에 많은 기능이 추가되었지만, 모두 기존의 기능을 기반으로 한다. 이런

점이 Visual Basic에만 유별난 것은 아니다. 대부분의 개발 툴은 이런 방식으로 발전하

지만, 쓰레기 축적(Garbage Accumulat ion)의 불행한 부작용이 동반된다. 새 버전의

Da y 1 Vis ua l Bas ic .NET 소개 4 7

툴은 덜 완벽했던 지난 버전의 기능과 호환이 되어야 하기 때문이다. 언어를 처음부터

다시 작성하는 것은 터무니없는 생각이다. 어마어마한 작업량이 필요하며, 사용자가 기

존에 작성한 코드와 호환되지 않는다면 인기를 잃게 될 것이 뻔하기 때문이다. 다만, 새

롭게 재작성하는 것의 장점은 구조를 완전히 깨끗하고 새롭게 구현해서 기존 언어의 나

쁜 점을 뿌리부터 없앨 수 있다는 점이다.

이런 이점은, Microsoft가 Visual Basic 6 .0에서 Visu al Basic .NET으로 이동하면

서 의도하고자 했던 바와 정확하게 일치한다. 수십 년간 후속 언어의 개선 때문에 생긴

쓰레기를 없애고 깨끗한 버전으로 언어를 재작성한 것이다. 이로써, Visual Basic의 지

난 버전을 사용했던 사람들이 배워야 할 것이 많아졌지만, 노력한 만큼의 결과는 있을

것이다.

Visu al Basic 6 .0에서 Visu al Basic .NET으로 변화함으로써 여러 가지 장점을 취할

수 있고, 이런 장점이 큰 변화를 결정하게 한 원동력이 되었지만, 가장 중요한 원인은

.NET 환경을 따라야 한다는 것이다. 오늘 수업을 계속 들으면서, 독자들은 .NET이 무

엇인지 그리고 Visual Basic이 어떻게 .NET에 맞춰 들어가는지 등을 배울 것이다.

.NET이란 무엇인가?

.NET이라는 단어를 딱 보면, Visual Basic 뒤에 숫자를 안 쓰기 위한 마케팅 전략같

이 보이지만, .NET은 독자들이 애플리케이션을 개발한 플랫폼을 나타내는 개념과 기술

이상의 것을 의미한다.

Visual Basic .NET의실제버전은 7.0이지만, 별로사용하지는않는다. 마치 Windows 2000은 실제로 Windows NT 버전 5.0이지만, 대개 더 간략하고 알아보기 쉬운 이름을 사용하는것과 같다. Visual Basic 7.0이라는말을 자주 들을수 있을 것이라고기대는 하지 말라. 게다가, Microsoft에서는 Windows 2000을 NT 5.0라고 부르면, 작지만 25센트의 벌금을 부가한다.

앞에서 필자는 하드 드라이브나 플로피 디스크에서 파일을 읽는 것 같은 기본적인 기능

을 애플리케이션에게 운영체제가 어떻게 제공하는지를 설명했었다. 이와 비슷한 방식으

로 .NET을 이해할 수 있다. 즉, 독자가 작성한 애플리케이션 아래에 존재하는 레이어로

서, 애플리케이션에게 기본적인 서비스와 기능을 제공한다. 이 레이어는 애플리케이션과

운영체제가 .NET 서비스라고 부르는 애플리케이션과 운영체제의 기능을 담고 있다. 즉,

48 We e k 1

.NET 프레임워크라고 하는 기초 오브젝트 집합과 공통 언어 런타임(CLR, Common

Language Runt ime)이라고 하는 서비스 집합이 있으며, 이 서비스들은 모든 .NET 언

어를 지원한다. .NET의 각 부분은 개별적으로 다루겠다( [그림 1.8] 참조) ( 운

영체제 위에 또 하나의 레이어가 올라가야 하는 이유는 운영체제가 바뀌더라도, .NET

플랫폼 레이어 위쪽의 애플리케이션은 동일한 서비스를 받을 수 있게 하기 위함이다.

Win dows 2000과 Windows CE에는 API가 다른 것을 포함해서 이런 저런 차이점이

있다. 따라서 Windows 2000에서 작성한 애플리케이션을 Windows CE에 올리려면,

Win dows CE가 탑재된 CPU와 Windows CE 운영체제의 SDK를 가지고 애플리케이

션을 다시 컴파일해야 한다. 만약 지원이 되지 않는 API가 있다면, 수정해야 할 수도

있다. 하지만 .NET 플랫폼이 Win dows 2000에도 포팅되어 있고, Win dows CE에도

포팅되어 있다면, Win dows 2000에서 개발한 애플리케이션을 컴파일 하나 없이 바로

Win dows CE에서 돌릴 수 있다) .

그림 1.8

.NET은어떤하나의개념이아니다. .NET은비즈니스솔루션을개발하기위해서함께동작하는소프트웨어와개념의혼합물이다.

.NET 서버

.NET 개념의 가장 큰 목표는 분산된 시스템을 개발하는 수고를 줄이는 것이다. 분산 시

스템을 이용하면 여러 곳에서 작업을 분산해서 수행할 수 있다. 대부분의 경우, 이런 타

입의 시스템은 서버 레벨의 백 엔드(Back End)에서 동작한다. Microsoft는 .NET 엔

터프라이즈 서버라고 하는 소프트웨어 제품군을 내놓았다. 이 서버들은 분산 시스템에 필

요한 백 엔드 기능을 제공하기 위해 디자인되었다. .NET 엔터프라이즈 서버군은 다음

제품들을 포함한다.

서버 운영체제 : Microsoft Windows(서버, 어드밴스드서버, 데이터센터서버)

클러스터링과 로드 밸런싱 소프트웨어 : Microsoft 애플리케이션 센터, 마이크로소

프트 클러스터 서버

데이터베이스 서버 : Microsoft SQL 서버

사용자 애플리케이션

.NET 프레임워크

.NET 서비스Windows , 버즈톡, 익스체인지, SQL, 애플리케이션

.NET 디바이스

하드웨어 장치

Da y 1 Vis ua l Bas ic .NET 소개 49

이메일, 콜래보레이션(Colla borat ion) , 다양한 형태(Free Form)의 정보 저장 시스

템 : Microsoft 익스체인지 서버

XML 기반의 데이터 전송 엔진 : Microsoft BizTalk 서버(20일에 XML에 대해서

다루겠다)

레가시(Legacy) 시스템을 접근하기 위한 서버 : 호스트 통합 서버라고 부르는 AS

/ 400s

등등. .

이 서버들은 시스템의 토대를 이루며, .NET 애플리케이션에게 기본적인 서비스를 제공

한다. 필요한 경우에 이 서버들을 적용할 수 있는 시스템 영역을 설명하면서, 서버들에

대해 종종 덧붙이겠다.

.NET 프레임워크

Visu al Basic .NET으로 이동하면서 많은 점이 변했다. 그 중 한 가지는 모든 .NET

개발 툴에서 사용할 수 있는 새로운 프레임워크를 개발했다는 것이다. 이것을 .NET 프

레임워크라고 하며, .NET 프레임워크는 기본적인 런타임 환경과 기초 클래스 집합을

제공한다( 런타임이란, 프로그램을 실행시키기 위한 일종의 서비스라고 생각하면

된다) . 독자의 프로그램과 시스템의 복잡한 기능 사이의 레이어를 제공해서, 독자의 애

플리케이션에 서비스를 지원하고, 낮은 레이어의 기능을 쉽게 접근할 수 있도록 한다.

기초 클래스들은 인터넷 프로토콜, 파일 시스템 접근, XML 조작과 같은 기능을 감싸고

추상화하는 큰 클래스 집합이다( 즉, 복잡한 기능을 쉽게 사용할 수 있도록 해

서, 개발 시간을 단축하고, 시스템의 안정성을 높일 수 있다) .

이러한 프레임워크의 진정한 파워는 8일, .NET 프레임워크 소개에서 더 자세히 설명

하겠다. 지금은 단순히 .NET 프레임워크가 운영체제와 비슷하고, 프로그래머에게 여러

기능을 쉽게 사용할 수 있게 하는 자신만의 API 집합을 제공한다고 이해하자(

운영체제도 자신만의 API를 표출한다. .NET 프레임워크 위에서 프로그래밍할 때, .NET

프레임워크가 제공하는 API를 이용할 수도 있고, 운영체제의 API를 직접 이용할 수도

있다) . [그림 1.9]는 프레임워크와 독자의 코드, 운영체제의 서비스 사이의 관계를 보여

준다.

50 We e k 1

그림 1.9

운영체제가컴퓨터하드웨어에대한추상화

계층을제공하는것처럼,.NET 프레임워크는운영체제에대한추상화계층을제공한다.

프로그래밍 언어가 런타임 환경과 .NET 프레임워크의 다른 기능이 주는 장점을 이용하

려면, 컴파일러는 특정한 표준을 충실히 이행하는 코드를 만들어야 한다. Microsoft는

공통 언어 명세(Common Language Specificat ion)를 제공해서, 어떠한 컴파일러라도

.NET에 호환될 수 있도록 한다( 공통 언어 명세를 이용해서 특정한 언어에 맞

는 컴파일러를 제작할 수 있다. J ava .NET 같은 언어와 컴파일러를 만들 수도 있다) .

마이크로소프트는 .NET 프레임워크를 이용할 수 있는 Visu al Basic, Visual C+ + ,

C# 컴파일러를 만들었지만, 마이크로소프트 이외의 회사에서도 이 공통 언어 명세를 이

용해서 컴파일러를 만들 수 있다. 이 결과, 마이크로소프트에서 제공하는 언어뿐만 아니

라, Visual Basic .NET과 같은 기반 위에 작성된 COBOL, APL, SmallTalk과 같은

언어들이 생겼다.

이제, 언어가 제공하는 특징과 .NET 프레임워크가 제공하는 특징을 구분할 때가 왔다.

Visual Basic과 COBOL은 모두 프레임워크의 특징을 공유하지만, 다른 언어이기 때문

에 자신만의 독특한 기능과 문법을 갖는다. 독자들은 책을 읽어 나가면서, Visual Basic

이 주는 특징과 프레임워크가 제공하는 특징에 대해 배울 것이다.

.NET 서비스

.NET은 어떻게 시스템을 구성하고 어떻게 상호작용하는 지 기술하기 위해서, 프로그래

밍 과정의 세부사항 이외의 어떠한 개념을 포함하고 있다. 중요한 개념 중에 하나는 웹

서비스(Web Service)로, 이것은 인터넷을 통한 지속적인 유행을 타고 생겨난 개념이다.

이 서비스를 이용하면 회사나 기관에서 특정 기능을 제공하면서, 그 기능의 실행을 완전

하게 자신들의 환경 안에 담을 수 있다. 이런 서비스 종류의 예로 청구서 납입 서비스를

들 수 있다. 회사는 이 서비스를 이용해서 청구서 납입을 다룰 수 있는 자신만의 서버와

애플리케이션을 구축할 수 있다. 그 회사는 웹 서비스를 통해 같은 서비스를 다른 회사

에 제공할 수도 있다( [그림 1.10] 참조) . 이것은 단순히 웹 사이트를 제공하는 것과는

다르다. 즉, 웹 서비스는 다른 애플리케이션이나 웹 사이트가 코드를 통해 접근할 수 있

사용자 애플리케이션

.NET 프레임워크

운영체제

디바이스 드라이버 디바이스 드라이버

하드웨어 장치

Da y 1 Vis ua l Bas ic .NET 소개 5 1

는 인터페이스이다( 분산된 컴포넌트들끼리 통신하는데 XML을 이용한 SOAP

프로토콜을 쓰고, 이것은 웹 프로토콜인 HTTP로 전송한다. HTTP , XML, SOAP은

모두 산업 표준이다) .

그림 1.10

회사는웹서비스를이용해서소프트웨어기반의서비스를인터넷으로제공하고, 다른웹사이트나

애플리케이션에서이서비스를이용한다.

이 테크놀러지를 다양하게 이용할 수 있지만, 일반적으로 웹 서비스의 개념은 인증, 달

력, 메세지(이메일)처럼 많은 애플리케이션이 필요로 하는 기반 서비스이다. 이런 종류

의 기능을 웹 서비스로 제공할 수 있다면, 전 세계의 어떤 사람이라도 그 기능을 이용해

서 자신만의 시스템을 개발하는 시간을 단축할 수 있다. .NET 창시자인 Microsoft는

Microsoft 패스포트로 알려진 인증(ht tp :/ / www.passport .com) , 핫메일(ht tp :/ / www.

hotmail .com)을 통한 메세지 전달과 같은 몇 가지 기초 서비스를 제공한다.

2 1일, Visual Basic .NET으로 웹 서비스 만들기에서 웹 서비스에 대한 적절한 소개

를 하고, 독자의 애플리케이션에서 어떻게 웹 서비스를 사용할 수 있는지를 설명하겠다.

.NET 디바이스

오늘날에는 인터넷, 독자의 사내 그리고 독자의 개인 정보에 접근할 때 사용할 수 있는

다양한 시스템이 존재한다. PC, TV 기반의 인터넷 터미널, 씬(thin) 클라이언트 혹은

PDA(Personal Digit al Assist ant )를 포함하는 모든 디바이스는 .NET 애플리케이션

을 접근하기 위해 사용자가 쓸 수 있는 장치가 될 수 있다. 디바이스가 다양화되는 추세

로 인해, 프로그래머인 독자들은 대개 PC, 한 가지 종류의 클라이언트에 대한 일반적인

가정을 할 수 없으며, 가능한 많은 디바이스를 통해 연결될 수 있다고 생각해야 한다.

.NET 기반의 서비스와 애플리케이션과 함께 동작하도록 디자인된 하드웨어와 소프트웨

웹 서비스를돌리고 있는W indows2 000

다양한 서비스를제공하는 서버들

HTTP를 지원하는개발툴을이용하면, 어떠한운영체제를이용하더라도웹 서비스를 돌릴수 있다.

클라이언트 애플리케이션

웹 서버

원격 사용자

52 We e k 1

어 특징을 갖고 있다면, .NET 디바이스로 분류할 수 있다. 현재 사용 가능한 .NET 디

바이스는 Windows (.NET 프레임워크가 설치된 Windows 9X, 밀레니엄, Windows

2000)를 운영체제로 하는 컴퓨터와 Windows CE를 운영체제로 하는 다비이스이다.

Windows CE의 경우 .NET 특징을 지원하는 축약된 .NET 프레임워크를 사용한다. 앞

으로 사용 가능한 디바이스의 범위는 점점 커질 것이다.

.NET에 대해 혼란스러운 부분이 있더라도 크게 걱정하지 않아도 된다. 당연히 혼란스

러워야 한다. 이 책의 나머지 부분을 읽고 나면, 독자들은 .NET이 무엇인지 명쾌하게

이해할 수 있을 것이다. 지금은 .NET과 독자의 프로그램간의 관계, 독자의 코드에서 쉽

게 접근할 수 있는 기능을 제공하는 레이어에 대해 기억하고 있으면 충분하다. 이런 개

념을 인지하고, 최종 목적이 프로그램 개발을 빠르게 하는 것이라는 점만 이해하고 있다

면, .NET에 대해 오늘 배워야 할 내용을 충분히 배웠다고 볼 수 있다.

첫 Visual Basic .NET 애플리케이션 만들기

이제, 처음으로 Visual Basic .NET 코드를 작성해 볼 시간이 왔다. 이 예제를 포함해

서 책에 나오는 예제를 실행하려면, Visual Basic .NET을 먼저 설치해야 한다. 이제

독자의 컴퓨터에 있는 Visual Basic과 Visual Studio에 대해 알아보자. 만약 Visual

St udio를 설치한 독자는 내 IDE가 어디에 있는가? 로 넘어가도 좋다.

코딩 전에 준비하기

Visual Basic .NET으로 작업하기 전에, 독자는 반드시 Visual Basic .NET을 설치해

야 한다. 제품을 얻은 곳에 따라 여러 장의 CD나 DVD를 가지고 설치할 수 있다. 물

론, 네트워크로 설치할 수도 있지만, 여러 CD로 된 버전으로 설치할 때 CD를 바꿔 줘

야 한다는 점만 빼면, 세 가지 방법 다 기본적으로 설치 과정은 같다.

디스크 1을 집어넣거나, DVD 혹은 네트워크상에서 설치 프로그램을 실행하면, 세 가지

설치 단계를 보여주는 대화상자가 맨 처음 뜬다( [그림 1.11] 참조) .

첫 번째 단계는 독자의 컴퓨터에 깔린 운영체제 컴포넌트를 .NET이 필요로 하는 수준

의 컴포넌트로 업데이트하는 것이다. 이런 과정을 Windows 컴포넌트 업데이트(WCU,

Win dows Component Update)라고 하며, 만약 독자가 설정 대화상자의 첫 번째 옵션

을 클릭하면( [그림 1.11] 참조) , 필요한 경우 WCU 디스크를 넣으라는 말과 함께 설치가

Da y 1 Vis ua l Bas ic .NET 소개 53

시작된다. WCU 설치 동안 볼 수 있는 화면은 독자의 시스템에 따라 다르다. 왜냐하면,

현재 업데이트해야 할 컴포넌트만 설치하기 때문이다. 설치하는 항목 중에는 Windows

2000 서비스 팩 2 , MDAC 2.7(개선된 데이터 접근 컴포넌트) , 인터넷 익스플로러 6 .0

이 있다. .NET 프레임워크는 대부분의 시스템에 설치된다. .NET 프레임워크에 Visual

Studio .NET IDE는 포함되지 않지만, 모든 프레임워크 클래스와 .NET 애플리케이션

을 돌리는데 필요한 파일들이 포함되어 있다. 필요한 컴포넌트에 따라, 독자의 컴퓨터를

한번 이상 재부팅해야 할 수도 있다. 이런 설치 과정이 끝나면, [그림 1.11]에서 보여준

설치 대화상자가 다시 뜬다.

그림 1.11

Visual Studio를설치하는과정은크게 3단계로나뉘어있다.

2단계를 클릭해서 Visual Studio .NET의 나머지 부분을 설치하자. 제품 키를 입력하

고, 사용자 라이센스 동의서(EULA, End User License Agreement )에 동의해야 지

만 설치를 계속할 수 있다. 필요한 정보를 입력하고 EULA에 동의하면, 설치하고 싶은

Visu al St udio .NET의 요소를 선택할 수 있는 화면이 나온다( [그림 1.12] 참조) .

세세한 옵션은 차이가 날 수 있지만 대략적인 리스트는 아마 같을 것이다. 만약 독자들

이 Visual Basic .NET만 이용해서 프로그래밍하고자 한다면, [그림 1.12]처럼 옵션을

선택하는 것이 좋다. 첫 번째 선택에서 Visual Basic과 Visual C# 언어를 선택한다.

Visu al C#이 꼭 필요한 것은 아니지만, 유용한 샘플 코드가 C#으로 되어 있는 것이 많

고, C+ + 대신 C#으로 이것저것 해보고자 하는 독자들도 많을 것이다. 물론, Visual

C+ +도 선택할 수 있다. 하지만 꼭 필요한 경우에만 설치하는 것이 좋다. 왜냐하면, 다

른 언어보다 공간을 많이 잡아먹기 때문이다.

54 We e k 1

그림 1.12

설치하고자하는VisualStudio .NET 컴포넌트를

선택할수있다.

이제, 엔터프라이즈 툴과 서버 컴포넌트 그리고 애플리케이션 배포에 필요한 툴 중에서

필요한 것을 선택했는지 확인하자. 이 옵션에 대해 세세하게 설명하지는 않겠다. 하지만

다 선택하면 독자가 갖고 있는 Visual Studio에서 사용할 수 있는 모든 기능이 다 설치

된다(Visual Studio의 버전이 다르면 다른 옵션 종류도 달라진다) . 마지막으로, MSDN

을 선택해야 하는데, 기본 옵션인 소스에서 실행하기(Run From Source)로 놔둬도 된

다. 이렇게 하면, CD, DVD 혹은 네트워크에 접근할 수 있어야 하기 때문에, 만약 충

분한 디스크 공간이 있다면 [그림 1.13]에서처럼 특정한 경로에 설치하도록 하자. 설치

파일이 있는 위치에서 MSDN을 실행하는 것이 독자의 로컬 머신에 MSDN을 설치해서

실행하는 것보다 느리지만, 대개 속도보다는 사용 가능한 디스크 공간에 맞춰서 결정하

면 된다.

선택을 다 했으면 대화상자의 아래에 붙어있는 지금 설치를 클릭하자. 설치하는 동안에

.NET의 특징을 설명하는 여러 문구가 나오고, 마지막에는 [그림 1.14]처럼 설치 완료

화면이 나온다. 설치하는 동안 문제가 생기면, 화면에 표시된다.

그림 1.13

MSDN은방대한양의문서,기사그리고샘플코드를담고있으며, 검색속도를

향상하기위해로컬머신에따로설치할수있다.

Da y 1 Vis ua l Bas ic .NET 소개 55

그림 1.14

설치하는동안문제가생기면, 이화면에서

문제점을확인할수있다.

초기 셋업 화면으로 돌아오면, 마지막으로 세 번째 옵션을 선택할 수 있게 된다. 서비스

릴리즈(Service Release)라는 옵션을 클릭하면, [그림 1.15]와 같은 다른 대화상자가

뜬다. 이 대화상자에서 새로 업데이트된 부분을 웹이나 디스크에서 설치할 수 있다. 만

약 인터넷에 연결되어 있다면, 첫 번째 옵션을 선택해서 최근에 업데이트된 부분을 받아

서 쓰기를 추천한다.

그림 1.15

Visual Studio .NET 설치프로그램은인터넷에서설치업데이트를다운받을수

있다.

이제, Visual St udio .NET을 설치했고, 실행할 준비가 되었기 때문에, 독자들은 코드

를 작성할 준비가 되었을 것이다. 다음 단락으로 넘어가자.

내 IDE가 어디 있는가?

이제, 가장 발전된 개발 패키지인 Visual Studio .NET에 대해 공부해 보자. 독자들이

작성할 첫 번째 프로그램은 노트패드와 커맨드 프롬프트를 이용해서 작성하겠다. 눈을

의심하는 독자들도 있겠지만, 커맨드 프롬프트에서 작성하겠다. 이번 수업의 앞부분에서,

필자는 많은 수의 프로그래밍 언어가 컴파일러 하나로 이루어져 있다고 설명했었다. 이

56 We e k 1

런 언어를 이용할 경우, 개발자는 텍스트 파일로 프로그램을 작성하고(실수가 없는 경우

에) , 컴파일러를 호출해서 그 코드를 실행 파일로 바꾼다. 대부분의 언어에 대해 이런

점은 변함이 없다. IDE의 목적은 독자들이 개발하는 간단한 환경을 제공하는 것이며,

IDE도 수동으로 작업하는 것처럼 여전히 편집/ 컴파일/ 실행이라는 순서를 똑같이 거친

다. Visual Basic .NET이 나오기 이전에도 커맨드 라인에서 프로그램을 컴파일할 수

있었지만, 이것은 단순히 IDE를 보이지 않는 모드(Nonvisible Mode)로 돌린 것에 불

과하다. Visual Basic .NET은 이런 컴파일과 편집이라는 두 기능을 분리해서, 컴파일

러를 완전히 별개의 프로그램으로 제공한다( IDE는 통합 개발 환경의 약자이

다. 즉, 편집/ 컴파일/ 실행이라는 개발 단계를 통합한 환경이라는 의미이다) .

IDE를 이용하면 컴파일하는 과정을 볼 수 없다. 독자를 위해 IDE가 대신 처리해 주지

만, 여전히 컴파일하는 과정을 거친다. Visual Basic .NET의 컴파일러와 이번 버전의

중요한 차이점은 Visual Basic .NET 컴파일러가 IDE에 완전히 독립적이라는 점이다.

즉, IDE에서만 할 수 있고, 커맨드 라인 컴파일러와 노트패드로 할 수 없는 작업이란

없다는 뜻이다. IDE 자체로도 매우 크고 복잡한 프로그램이기 때문에, 때때로 커맨드

라인 수준에서 작업하는 것이 언어와 작업에 더 쉽게 집중할 수 있게 해준다. 내일 배울

내용인, Visual Basic .NET 다루기에서는 IDE에 대해 소개하고, IDE를 이용해서

프로그램을 수정하고 컴파일하는 과정을 설명하겠다.

간단한 작업

첫 번째 프로그램을 작성하려면, 프로그램이 수행하고자 하는 어떤 목적이 있어야 한다.

이 책에서는 Hello World !처럼 아무런 목적이 없는 프로그램을 작성하지 않겠다. 하지

만 처음 코드를 작성할 때는 프로그래밍 목적을 잡기가 쉽지 않다.

Hello World! 프로그램이라는 문구는 아무짝에도 쓸모가 없는 샘플 프로그램을 지칭하거나, 화면에

메세지를 출력하는것밖에하는 것이없는프로그램을 특별히지칭하기위해 사용했다.

커맨드 라인에서 돌릴 수 있고, 약간의 텍스트를 출력하는 간단한 프로그램으로 시작해

보겠다. 이번 예제 프로그램은 독자의 운영체제에 대한 버전 정보(예를 들어, Win dows

2000 릴리즈 버전의 버전 번호는 5.00 .2 195이다)를 출력하는 유용한 툴이다. 이 예제

를 가지고 프로그램을 작성하는데 알아야 할 것들을 독자에게 설명하겠다. 이 예제가 독

자에게 커맨드 라인 유틸리티로써 가치가 있을지 없을지는 모르겠으나, 프로그램을 생성

하는 간단한 개념을 설명하는데는 좋다.

Da y 1 Vis ua l Bas ic .NET 소개 57

코드 작성하기

IDE 대신 노트패드 같은 텍스트 에디터를 가지고 시작하기 때문에, 아무 것도 된 것이

없으며, 파일은 빈 채로 있다. 이것은 독자가 직접 코드를 작성하기 전에 프로그램의 기

본적인 구조를 설정해야 한다는 것을 의미한다. 시작하기 전에, 새로운 텍스트 파일을

컴퓨터 어딘가에 만들어야 한다. 이 책의 예제를 위해 컴퓨터에 C:\ TYVB\ C1\ 처럼 디

렉토리를 하나 만들자. 새 텍스트 파일을 만들려면, 적절한 폴더에서 오른쪽 클릭을 하

고, 새로 만들기를 선택한 후, 텍스트 문서를 선택하자( [그림 1.16] 참조) . 이렇게 해

서 만들어진 새 파일의 이름은 새 텍스트 문서.txt 이다. 이 이름을 St ep 1.vb 로 바꿔

서 무슨 파일인지를 표시해 두자.

그림 1.16

탐색기에서오른쪽클릭메뉴를이용하면텍스트파일이나다른문서파일을직접생성할수있다.

파일 이름을 고치고, 그 디렉토리에서 실제 코드를 작성할 수 있다. 그 파일을 오른쪽

클릭하고 열기를 선택해서 노트패드로 그 파일을 열 수 있다. 이 메뉴에서 노트패드나

워드패드 같은 텍스트 에디터를 선택할 수 있다. 프로그램을 선택한 후, 확인을 클릭하

면, 해당 프로그램이 그 파일을 연다.

지금은 그 파일에 내용이 하나도 없을 것이다. 이제 필요한 모든 코드를 독자들이 넣어

야 한다.

한 걸음씩 나아가기

코드를 작성할 때, 특히 새로운 코드를 작성할 때, 여러 단계로 나누어서 문제에 접근하

는 방법을 사용하는 것이 좋다. 문제에 직면했을 때, 이 방법을 이용하면 프로그램의 어

느 부분이 제대로 동작하고, 어느 부분이 제대로 동작하지 않는지를 알아낼 수 있다. 먼

저, 독자들은 커맨드 라인 컴파일러를 이용해서 실제로 애플리케이션을 만들 수 있다는

점을 눈으로 확인해야 한다. 이렇게 하려면, 컴파일할 코드가 필요하다. 코드가 꼭 무슨

동작을 할 필요는 없다. 올바른 형태만 갖추고 있으면 되기 때문이다. 다음 코드는

58 We e k 1

Visual Basic .NET 프로그램의 기본적인 구조를 보여준다. 다음 코드를 노트패드 윈

도우에 입력하고 Step 1.vb로 저장하자.

Publ i c Cl as s St ep1Shar ed Sub Mai n ()End Sub

End Cl as s

Step1.vb로 코드를 저장할 때, 이상한 현상을 경험할 수도 있다. 노트패드는 텍스트 파일을생성하는데 주로 사용하기 때문에, 확장자에 대한 독자의 시스템 설정에 따라 저장한 파일이독자의 하드 드라이브에 step1.vb.txt라는 이름으로 저장되어 있을 수도 있다. 이런 현상을피하려면, 알려진 파일 형식의 파일 확장명숨김 옵션을 제거하자(이 옵션은 Windows 탐색기의 도구 메뉴의 폴더옵션을선택해서뜬대화상자의 보기 탭에서찾을수있다).

다음으로 시작 버튼, 프로그램, Microsoft Visual Basic .NET 7.0 , Visual Studio

.NET Tools 메뉴에서 Visual Studio .NET Command Prompt 를 선택해서 커맨드

프롬프트를 띄우자( [그림 1.17] 참조) .

그림 1.17

Visual Studio .NET 커맨드프롬프트를이용하는것이커맨드라인에서 .NET으로작업하는최상의방법이다.

보통, 이 옵션을 이용해서 커맨드 라인을 띄운다. 이 커맨드 라인을 통해서만 Visual

Basic 컴파일러와 같은 .NET 툴을 실행할 수 있는 올바른 경로 설정이 가능하기 때문

이다. 보통, 커맨드 라인을 이용하고 싶다면, 독자는 반드시 컴퓨터에서 적절한 경로 설

정을 추가해 줘야 한다(vbc.exe를 찾아서 그 디렉토리를 경로에 추가해야 한다) . 이렇

게 하면, [그림 1.18]처럼 커맨드 콘솔이 뜬다. 이 콘솔을 이용해서 st ep 1.vb 파일이

Da y 1 Vis ua l Bas ic .NET 소개 59

있는 디렉토리로 이동하자. 이제, 독자의 프로그램을 컴파일하고 실행 파일을 만들 준비

가 되었지만, 컴파일하기 전에 몇 가지 단계를 더 추가해서 세세하게 나눠보자.

그림 1.18

보통, 도스프롬프트라고부르는콘솔에서커맨드라인컴파일러를이용할수있다.

커맨드 프롬프트에서 vbc를 입력하고 엔터를 누르자. 그러면 다음과 같은 출력이 나오

고, 엄청난 양의 Visual Basic 컴파일러 도움말이 출력된다.

Mi cr osof t (R) Vi sual Basi c .NET Compi l er ver si on 7 . 00 . 9254Mi cr osof t (R) .NET CLR ver si on 1 . 00 .2914 . 16Copyr i ght (c ) Mi cr osof t Corp 2001 . Al l r i ght s r eserved .

Vi sual Basi c 컴파일러옵션

여기까지 문제없이 잘 된다면, 독자는 다음 몇 가지 것을 확신할 수 있게 된다.

독자는 Visu al Basic .NET을 잘 설치했고,

독자는 컴파일러를 실행할 수 있는 적절한 권한을 갖고 있으며,

시스템이 vbc.exe를 찾을 수 있다.

vbc를 먼저 실행해 봄으로써, 실제 프로그램을 컴파일하려고 할 때 발생할 수 있는 문제

의 원인 중 하나를 배제할 수 있게 되었다. 이제, vbc Step 1.bv / t :exe 커맨드를 입력

하고 엔터를 눌러서, St ep 1.vb로 저장한 독자의 프로그램을 컴파일하자. 모든 것이 잘

되어 있다면, 다음과 같은 응답을 얻을 수 있다.

Mi cr osof t (R) Vi sual Basi c .NET Compi l er ver si on 7 . 00 . 9254Mi cr osof t (R) .NET CLR ver si on 1 . 00 .2914 . 16Copyr i ght (c ) Mi cr osof t Corp 2001 . Al l r i ght s r eserved .

60 We e k 1

이것은 컴파일 과정이 성공적이었다는 것을 의미한다. Windows 탐색기나, DIR 커맨드

를 이용해서 현재 폴더에 Step 1.exe라는 새 파일이 생겼음을 확인할 수 있다. 커맨드

프롬프트에서 St ep 1을 치고 엔터를 눌러서 실행 파일을 실행해도, 아무런 결과가 나오

지는 않는다. 왜냐하면, St ep 1.vb 코드가 실제로 아무 일도 하지 않기 때문에 당연한

결과라고 할 수 있다. 단지, 코드가 컴파일되었고, 코드가 제대로 작성되었다는 것만을

보여줄 뿐이다.

커맨드 라인에서 vbc를 실행할 때 다양한 옵션을 추가할 수 있다. vbc만 실행해 보면,

설명에 뜨는 것처럼 슬래쉬(Slash)로 구분해서 써주면 된다. 이 예제에서는 두 개의 옵

션만 사용했다. Step 1.vb라는 소스 파일의 이름을 컴파일하라고 vbc에 알려주고, 두 번

째 옵션인 / t :exe를 통해서 컴파일해서 만들 애플리케이션의 종류를 지정한다. / t 옵션

은 타겟을 의미하며 / t arget으로 쓸 수도 있는데, 값은 winexe , exe , library 혹은

module로 지정할 수 있다. 모든 옵션에 대해서 나중에 설명하겠지만, 처음 2가지 옵션

은 알아두어야 한다. winexe는 Windows 애플리케이션을 만들고, exe는 커맨드 라인

혹은 콘솔 애플리케이션을 만든다. 아무 것도 지정하지 않으면 컴파일러는 기본적으로

/ t :exe로 가정한다.

출력을 살펴보자

이제, 운영체제 버전을 알아보는 것이 독자의 최종 목표였다는 것을 상기하면서, 몇 가

지 텍스트를 출력하도록 해보자. Visual Basic .NET으로 무언가를 하기 전에, 독자는

컴파일러에게 사용하려는 .NET 프레임워크가 어느 부분인지를 지정해 줘야 한다. 이 예

제의 경우, 최상위 레벨 프레임워크인 System의 오브젝트만 사용하기 때문에, Import

System을 코드 파일 맨 위에 추가해 주자( System은 하나의 네이스페이스로서,

다양한 클래스를 담고 있는 일종의 추상적인 디렉토리이다. .NET 프레임워크는 이 네

이스페이스를 이용해서 구조화되어 있다) .

이제 Syst em을 포함했기 때문에, System에 있는 클래스를 코드에서 사용할 수 있다.

System 프레임워크 클래스 중에 하나인 Console 클래스를 사용하겠다. 이 클래스를

사용해서 커맨드 라인 인터페이스로 읽고 쓸 수 있다. 예를 들어, Console .WriteLine

문장은 커맨드 윈도우에 텍스트를 출력한다. 무슨 텍스트를 출력하든 상관없다. 단순히

텍스트를 출력할 수 있다는 사실만 확인해 보면 된다. 필요한 정보를 출력할 위치라는

것을 지정하기 위해서 OS 버전 정보를 출력할 위치라는 텍스트를 출력해도 된다. 새롭

게 수정한 이 파일을 Step2 .vb로 저장하자. 아마도 코드는 다음처럼 생겼을 것이다. 이

제 커맨드 윈도우로 전환해서 이 파일을 컴파일하자.

Da y 1 Vis ua l Bas ic .NET 소개 6 1

Impor t s Syst em

Publ i c Cl as s St ep1Shar ed Sub Mai n ()

Syst em.Consol e .Wr i t eLi ne ( "OS 버전 정보를출력할 위치" )End Sub

End Cl as s

소스 파일 이름이 Step2 .vb로 바뀌었다는 점만 제외하면, 앞에서 했던 것과 거의 똑같

이 컴파일하면 된다. vbc Step2 .vb / t :exe를 실행하면 Step2 .exe라는 파일이 생기고,

커맨드 라인에서 St ep2를 쳐서 실행해 보자. 컴파일을 제대로 했고, 코드에 문제가 없

다면, 다음과 같은 출력을 커맨드 라인에서 확인할 수 있다.

D:\ Wor ks\ Tr ansl at i on\ [ 2001 . 11] Teach Your sel f Vi sual Basi c .NET i n 21 Days\ Code\Chapt er 01>vbc St ep2 .vb / t :exeMi cr osof t (R) Vi sual Basi c .NET Compi l er ver si on 7 . 00 . 9254Mi cr osof t (R) .NET CLR ver si on 1 . 00 .2914 . 16Copyr i ght (c ) Mi cr osof t Corp 2001 . Al l r i ght s r eserved .

D:\ Wor ks\ Tr ansl at i on\ [ 2001 . 11] Teach Your sel f Vi sual Basi c .NET i n 21 Days\ Code\Chapt er 01>St ep2OS 버전 정보를출력할 위치

버전 정보 출력 기능 추가하기

지금까지 코드를 잘 고쳐 왔다. 따라서 이제 새로운 기능을 추가해 보자. 독자가 알아야

할 것은 실제 운영체제 버전 정보를 얻어 와서 텍스트를 출력하는 방법이다. Windows

2000과 같은 현재 운영체제의 정보를 접근하기 위해서 .NET 프레임워크가 제공하는

다른 기능을 이용해 보자. System 오브젝트를 이용해서 이 정보를 얻어 올 수 있지만,

Syst em.Console 대신 Syst em.Environment .OSVer sion 클래스를 이용한다. Step2

.vb의 코드를 다음과 같이 수정하고, Step3.vb로 저장하자.

Impor t s Syst em

Publ i c Cl as s St ep1Shar ed Sub Mai n ()

Syst em.Consol e .Wr i t eLi ne (Syst em.Envi r onment .OSVer si on .ToSt r i ng () )End Sub

End Cl as s

이 코드를 vbc step3.vb / t :exe로 컴파일하자. 컴파일이 완료되면 step3.exe라는 파

일이 생긴다. Step3 Ent er를 입력해서 이 파일을 실행하면, 다음과 같은 텍스트를 출

력한다.

62 We e k 1

D:\ Wor ks\ Tr ans l at i on\ [ 2001 . 11] Te ach Your s e l f Vi s ual Bas i c .NET i n 21Days \ Code\ Chapt e r 01>St ep3Mi cr osof t Wi ndows NT 5 . 0 .2195 . 0

이 결과는 Windows 2000 (NT 5.0)에서 실행한 결과이며, 다른 컴퓨터에서 실행하면

결과가 달라질 수 있다. 이제 운영체제에 대한 정보를 얻어 오는 작은 실행 파일을 만들

었다. 어쩌면 네트워크 관리자가 이 프로그램을 쓸 있게 사용할지도 모른다. 프로그램

이름은 St ep3.exe이지만, 필요한 목적에 따라 적절한 이름으로 바꿔서 사용하면 된다.

커맨드 라인 컴파일러 사용하기

지난 예제에서, 커맨드 라인 컴파일러에 타겟과 컴파일할 소스 파일을 지정해 주었다.

이 두 가지 옵션만 이용하면, 컴파일러가 자동으로 소스 파일 이름과 같은 실행 파일을

생성하지만, 다양한 옵션을 이용해서 컴파일할 수도 있다. 다음은 커맨드 라인 옵션으로

사용할 수 있는 몇 가지 옵션이다. Visu al Basic .NET으로 실험해 보길 바란다.

/ t arget :<winexe , exe , libr ary , module>(/ t라고 써도 된다)는 컴파일러가 생성

할 결과 파일의 종류를 지정한다. winexe 옵션은 Windows 애플리케이션을 생성

하고, exe 옵션은 커맨드 라인 혹은 콘솔 애플리케이션을 생성하며, / t 스위치가

없으면 exe 값이 기본이 된다. libr ary와 module 옵션은 모두 바로 사용할 수는

없지만 다른 애플리케이션의 일부가 될 수 있는 파일을 생성한다. module 타입에

대해서는 다음에 더 자세히 설명하겠다.

/ out :<filename>으로 생성될 파일의 이름을 지정할 수 있다. 앞의 예제에서는 이

옵션을 사용하지 않았기 때문에, vbc는 소스 파일 이름을 출력 파일 이름으로 사

용했다.

/ help (혹은 / ? )은 아무 옵션 없이 vbc를 실행한 것과 같다. 즉, 사용 가능한 스위

치를 모두 나열한다.

/ verbose 옵션을 이용하면, 컴파일러가 컴파일하는 동안 더 자세한 정보를 출력하

며, 문제가 발생했을 때 도움이 될 수도 있다.

/ reference :<filename> 옵션을 이용하면, 기본적으로 포함되는 파일 이외의 것을

추가해서 컴파일러에게 알려줄 수 있다. 예를 들어, .NET 프레임워크의 System.

Web의 일부분을 사용한다면, 소스 파일 맨 위에 Import System.Web을 추가하

거나 컴파일할 때 / r :system.web .dll을 커맨드 라인에 입력할 수 있다.

Da y 1 Vis ua l Bas ic .NET 소개 63

요약

오늘 수업에서는 프로그래밍 배경, Visual Basic과 .NET에 대해서 알아보고, 간단한

프로그램을 작성해 봤다. 이제, Visual Basic 언어 자체에 대해서 공부하고 더 복잡한

프로그램을 작성할 준비가 된 것이다. Visual Basic은 세계에서 가장 인기 있는 프로그

래밍 언어이며, 독자들은 이 Visu al Basic에 대해 더 깊이 있게 배울 것이다.

Q&A

Q. Vis ua l Bas ic .NET과 이전 버전의 Vis ua l Bas ic이 왜 다른가?

A. Visu al Basic은 계속해서 발전해 왔지만, 각 버전은 이전 버전과 비슷한 수준에

불과했었다. .NET과 같은 큰 변화가 생기면서, 인터넷이나 분산 컴퓨팅과 같은

산업의 변화에 대응할 수 있도록 언어를 변화해야만 했다.

Q. C#이라는 다른 .NET 언어에 대해 들은 적이 있다. Vis ua l Bas ic .NET을 익히고도

이 언어를 배워야 하는가?

A. C#은 가장 새롭고, 간단하며, C+ + 형태로 사용하기 쉬운 언어이지만, 이 언어를

따로 배울 필요는 없다. 왜냐하면, 모든 .NET 언어가 할 수 있는 것은 동일하기 때

문이다. 즉, C#으로 어떤 종류의 애플리케이션을 개발할 수 있다면, Visual Basic

.NET으로 못할 이유가 없다. Microsoft에서 C#으로 된 예제를 많이 내놓는데, 이

것은 단순히 Visual Basic 프로그래머와 Visual C+ + 프로그래머가 쉽게 알아

볼 수 있기 때문이다.

워크샵

워크샵은 예상되는 질문을 고민해 보고, 배운 것을 복습하며, 실전에 응용할 수 있도록

독자들을 도와주는 코너이다. 이 퀴즈의 답은 부록 A의 퀴즈/ 연습문제의 답에 있다.

64 We e k 1

퀴즈

1. Visual Basic 이전에 Microsoft가 발표한 제품이 무엇인가?

2. 왜 모든 .NET 언어(Visual Basic .NET, C# 등등)는 공통된 특징(.NET 프레

임워크, 오브젝트를 생성해서 사용하는 방법 등등)을 공유하는가?

3. 소스 코드(독자의 프로그램)를 원시 기계어 코드(exe 파일과 같은)로 바꾸는 과정

을 무엇이라고 하는가?

4. 다음 코드를 살펴보자.

Publ i c Cl as s MyCl as sShar ed Sub Mai n()End Sub

End Cl as s

이 코드를 MySourceCode .vb에 저장하고, vbc / t :exe MySourceCode .vb 명령

을 실행하면, 무슨 파일이 생기는가?

연습문제

1. 오늘 사용한 예제에서는 컴파일할 때 결과 파일의 이름을 지정하지 않았기 때문에,

기본으로 소스 파일의 이름을 컴파일러가 사용했다. St ep3.vb를 다시 컴파일해서

What OS.exe를 만들어 보라.

2 . 버전 정보를 얻어 오기 위해서 Syst em.Environment 오브젝트를 사용했다. 이

클래스는 다른 유용한 기능도 갖고 있다. Visual Basic과 함께 설치한 도움말을

이용해서( 코딩 전에 준비하기를 참조하라) 어떤 기능을 더 이용할 수 있는지 조

사해 보라.