통합 개발툴로 웹서비스 개발 환경의 진수 선언한,
비주얼 스튜디오 닷넷 활용가이드
많은 개발자들이 고대해 온 비주얼 스튜디오 닷넷 영문 정식 버전이 미국에서 지난 2월 13일 출시된 데 이어 이달 말에는 한글 버전이 국내에 정식 출시된다. 장장 1년 6개월이란 긴 베타 테스트 기간을 거쳐 나온 비주얼 스튜디오 닷넷의 진면모를 살펴본다. 우선 닷넷의 달라진 점을 크게 툴 측면과 개발 언어 측면에서 살펴 보고 통합 개발툴을 이용해 다양한 웹서비스를 구체적으로 구현해 활용해 본다. 더불어 분산 환경에서의 고성능 XML 웹서비스를 위해 객체 처리 환경으로 미들웨어를 대체하고자 기존 1.0에서 1.5로 업그레이드 되어 포함된 포함된 COM+ 1.5를 분석하고 향후 비주얼 스튜디오 닷넷에 새롭게 포함될 기능을 통해 닷넷의 미래를 가늠해 본다.
글·데브피아 닷넷 솔루션팀 shkim@devpia.com 홍영준 마이크로소프트 닷넷팀 대리 yjhong@microsoft.com
Part 1. 비주얼 스튜디오 닷넷, 무엇이 달라졌나?
Part 2. 닷넷으로 구현하는 XML 웹서비스 실전
Part 3. XML 웹애플리케이션 서버의 핵심 엔진, COM+ 1.5
Part 1. 비주얼 스튜디오 닷넷, 무엇이 달라졌나?
비주얼 스튜디오 닷넷은 닷넷의 핵심 기술인 XML 웹서비스, 윈도우 기반의 애플리케이션, 그리고 웹애플리케이션 등을 신속하고 효율적으로 개발하고, 통합할 수 있도록 지원하는 통합 개발 환경이다. 비주얼 스튜디오 닷넷은 비주얼 C#, 비주얼베이직 닷넷, 그리고 비주얼 C++ 닷넷 같은 컴포넌트 기반의 개발툴 뿐만 아니라 팀 기반의 디자인, 개발, 배포를 지원하는 많은 추가 기술과 문서 자료를 포함하고 있다.
그러면 비주얼 스튜디오 6.0에서 비주얼 스튜디오 닷넷으로 업그레이드 되면서 새로 추가되고 향상된 점들을 정리해 보자.
통합 개발툴로서의 진면모
비주얼 C# 닷넷, 비주얼베이직 닷넷, 비주얼 C++ 닷넷, 그리고 MSDN이 비주얼 스튜디오 단일 통합 개발 환경 내에서 모두 지원된다. 즉, 이전처럼 별개의 개발툴로 애플리케이션을 실행할 필요가 없어졌다. 이런 단일 통합 개발 환경은 여러 제품에서 사용되던 유사한 툴을 공유 툴로 통합하는 것을 포함해 많은 이점을 제공한다.
■ 시작 페이지 : 웹페이지 형태의 새로운 시작 페이지에서 키보드 스키마, 윈도우 레이아웃, 도움말의 기본 필터 등 통합 개발 환경 내의 환경을 개발자가 익숙하게 설정할 수 있다. 그리고 네트워크에 연결된 상태에서 경우에는 최신 기사 정보, 이벤트, MSDN 온라인의 토픽에 대한 링크 정보를 확인할 수 있고 MS 제품군에 관련된 최신 다운로드 정보와 써드파티 벤더에 대한 정보를 쉽게 접할 수 있다. 또한 UDDI 서버를 통해 웹서비스를 손쉽게 검색하고 등록할 수 있는 페이지를 제공하며, ‘원 클릭 호스팅’ 기능으로 웹 응용 프로그램을 배포하고 인터넷에서 테스트할 수
있는 웹 호스팅 포탈을 이용할 수 있다.
■ 서버 탐색기(Solution Explorer) : 비주얼 스튜디오 닷넷의 새로운 서버 개발 콘솔이다. 개발자가 적절한 권한을 가지고 있는 임의의 머신상에 있는 리소스에 접속해 조작할 수 있도록 하는 공유 툴 윈도우이다. 서버 익스플로러에 의해 개발자는 서버에 접속해 메시지 큐, 퍼포먼스 카운터(PerformanceCounter), 서비스, 프로세스, 이벤트 로그(EventLog) 및 데이터베이스 오브젝트를 포함하는 서버 베이스의 리소스를 관리할 수 있다.
■ 강화된 도구 상자 : 도구 상자에 등록된 여러 종류의 컨트롤과 항목들은 특정 폼들과 디자이너, 에디터 창에서 손쉽게 사용할 수 있다. 또한 사용자 정의 탭을 추가해 특정 코드 블럭을 저장해 두고 필요할 때 드래그 앤 드롭으로 가져와 사용할 수 있는 저장 공간 역할까지 지원한다.
■ 작업 목록 : 작업 목록은 기존의 비주얼 스튜디오 6.0에서 제공하던 책갈피의 확장 기능으로 프로젝트를 종료하고 재실행해도 목록 정보가 유지되고 특정 코드 부분의 요약 정보를 입력할 수 있어 개발자들에게 작업 내역에 대한 정보 저장 및 팀별 프로젝트에서 소스 세이프를 사용할 경우에는 작업 목록을 공유할 수 있다. 그리고 코드를 작성하는 동안 자동으로 코드를 검사해서 잘못된 부분이 있으면 작업 목록에 추가해 개발자의 번거로움을 해결해 주는 기능도 있다. 또한 개발자가 소스 코드에 ‘//TODO’ 등의 키워드를 넣어서 주석을 추가하면 그 내용이 리스트에 자동으로 추가된다. 이렇게 추가된 내용을 확인하려면 작업 목록 윈도우에서 컨텍스트 메뉴의 ‘작업 목록 → 주석’이 선택되어 있어야 한다(그림 1).
■ 명령 창 : 명령 창은 이전 버전의 명령 줄과 비주얼베이직의 직접 실행창 기능이 통합되어 ‘명령 모드’와 ‘직접 실행 모드’ 두 가지가 있다. 명령 모드에서는 ‘>’ 뒤에 IDE 명령을 입력하거나 자주 사용되는 명령어들을 위해 가명(alias) 또는 단축 이름(short name) 생성할 수 있다. 그리고 직접 실행 모드에서는 코드 문을 실행하거나 변수에 값을 설정하거나 할당할 수 있다.
■ 매크로 기능 : 매크로는 통합 개발 환경에서의 모든 작업을 기록, 재생할 수 있고 기록된 매크로는 매크로 익스플로러나 명령 창을 통해 실행할 수 있다. 이것을 활용해 개발자는 매크로를 기록한 후 나중에 재생함으로써 IDE 내의 프로세스를 자동화할 수 있다(이 기능은 현재 비주얼베이직 닷넷으로만 작성이 가능하다).
■ 동적 도움말 기능 : 현재 선택된 객체에 따라 도움말 목록에 나오는 항목들이 자동으로 변경되어 손쉽게 도움말에 접근할 수 있다. 즉, 개발자가 행한 선택 커서의 위치 및 IDE 내에서 포커스를 가지고 있는 항목을 추적하는 것으로 MSDN 상에 제공되는 토픽을 필터링하여 현재의 개발 작업 관련 정보에 대한 링크를 제공한다.
■ 웹브라우저 : 통합 개발 환경 내에서 직접 웹페이지를 볼 수 있다. ‘보기 → 웹브라우저’ 메뉴에서 ‘브라우저 표시’를 선택하면 에디터 창에 브라우저 창이 추가되고 디폴트로 시작 페이지가 나타난다. 또한 URL을 입력하고 페이지를 이동하기 위한 웹 툴바가 상단에 추가된다.
효율적인 윈도우 공간 활용 배려
비주얼 스튜디오는 이전 버전보다 한 번에 좀더 많은 코드들을 스크린 상에 쉽게 볼 수 있게 하는 여러 기능들이 추가되었다.
■ 탭 도큐먼트 : 통합 환경 내에서 열려진 문서들은 에디터 창 상단에 탭들로 나타난다. 따라서 다중 문서들을 좀 더 쉽게 이동하고 수정할 수 있다(그림 1).
■ 자동 숨김 기능 : 솔루션 탐색기나 툴 박스처럼 작업 중에 잠시 사용하지 않는 윈도우가 화면 공간을 차지하지 않도록 각 툴 윈도우의 우측 상단에 있는 <자동 숨김> 버튼을 이용해 통합 개발 환경 가장자리로 툴 윈도우를 최소화할 수 있다.
■ 이전 작업 위치로의 이동 기능 : 표준 툴 바에 있는 <앞으로 탐색>, <뒤로 탐색> 버튼을 사용해 수정 작업을 한 특정 도큐먼트 코드 상의 위치에서 앞뒤로 찾아갈 수가 있다. 또한 파일별, 라인별 히스토리 기능을 사용해 바로 이동할 수도 있고 <Ctrl+->와 <Ctrl+Shift+-> 키를 이용해 손쉽게 작업 위치 사이를 이동할 수 있다.
다양해진 편집 관련 툴과 기능
에디터 창은 좀더 편리하고 쉽게 다양한 코드를 편집할 수 있도록 많은 기능들이 향상되고 새로 추가되었다.
■ 코드 에디터 : 비주얼 스튜디오는 각 언어별 특징들을 포함하는 통합 개발 환경 내에서 동일한 코드 에디터 창을 사용한다.
■ HTML 디자이너 : HTML 디자이너는 웹페이지를 좀더 다양하고 쉬운 방법으로 디자인할 수 있도록 디자인 뷰와 HTML 뷰 두 가지를 지원한다. 디자인 뷰는 도구 상자의 HTML 탭을 이용해 위지위그(WYSIWYG) 방식으로 편집할 수 있다. 이 때 컨텍스트 메뉴 중에서 ‘스타일 작성’을 선택해 손쉽게 스타일쉬트를 생성할 수도 있다.
■ XML 디자이너 : XML 디자이너에서는 XML 문서, 스키마, 데이터세트를 도구 상자의 XML 스키마 탭에서 지원되는 XML 요소들을 사용해 손쉽게 디자인할 수 있도록 지원한다.
■ 주석 웹페이지 리포팅 : C#은 나중에 주석들이 HTML 페이지로 보이도록 하는 특별한 주석문을 갖는다. 즉, ‘///’으로 표시되는 특별한 주석문들은 ‘도구 → 주석 웹페이지 빌드’를 선택해 HTML 페이지를 만들 경우 해당 프로젝트나 솔루션을 기술하는 내용이 된다. 진행 중인 프로젝트나 완료된 프로젝트의 소스 코드 문서화 작업에 큰 도움이 될 유용한 기능이다. 프로젝트별, 또는 솔루션별로 작성할 수 있는 옵션이 지원되며 웹 가상 디렉토리에 생성하면 웹으로 바로 접근해 개발자들 간에 공유할 수도 있다.
■ 객체 브라우저 : 객체 브라우저는 프로젝트 내의 객체들과 멤버들뿐만 아니라 참조되고 있는 모든 객체들과 멤버들을 탐색하고 검색할 수 있도록 한다.
■ 아웃라이닝 기능 : 코드들을 특정 블럭 단위 별로 화면에 모두 출력할 것인지, 블럭을 감추고 대표할 수 있는 키워드 라인 정도만 남길 것인지 선택할 수 있도록 코드 창 왼편에 ‘+’, ‘-’ 기호를 활용할 수 있다. 예를 들어 코드 창에 함수 원형 정보만 나열되도록 하여 전체적인 코드 레이아웃을 쉽게 확인할 수 있다.
■ 클립보드 링 : 시스템 클립보드에 있는 가장 최근의 20개 항목들을 클립보드 링에 저장하고 <Ctrl+Shift+V>를 사용해 등록된 항목들을 돌아가며 ‘붙여 넣기’ 해주는 기능이다. 도구 상자의 클립보드 탭에서 이 항목들을 확인할 수 있고 원하는 항목을 ‘붙여 넣기’하거나 항목에서 삭제할 수도 있다.
이처럼 비주얼 스튜디오 닷넷은 비지오나 비주얼 데이터베이스 툴, 애플리케이션센터 테스트, 엔터프라이즈 서버군 등을 지원해 거의 모든 프로젝트의 기획, 분석, 설계부터 개발, 점검, 배포에 이르는 모든 과정들을 통합하고 총 소요 기간을 크게 단축할 수 있는 환경을 제공한다.
닷넷에 통합된 개발 언어별 해부
다음으로 비주얼 스튜디오 닷넷이 제공하는 여러 개발 언어의 특징과 이전 버전에서 달라진 부분을 살펴 보자.
엔터프라이즈 애플리케이션 개발 언어 ‘비주얼 C# 닷넷’
C#은 닷넷 프레임워크 상에서 운영되는 광범위한 엔터프라이즈 애플리케이션 개발을 위해 디자인된 새로운 프로그래밍 언어이다. 과거와 현재에 사용되는 많은 언어들의 장점들을 최대한 반영해 발전시킨 새로운 프로그래밍 언어로 타입 안정적이고 객체 지향적이다. C# 언어의 주요 특징은 다음과 같다.
■ 엔터프라이즈 애플리케이션을 개발하는 데 적합하다.
■ C와 C++의 구문, 표현식, 연산자 등의 많은 특징들을 그대로 사용한다.
■ 타입 안정적이고 가비지 컬렉터가 자동으로 메모리 관리를 하고 버전 관리가 용이하다.
■ 닷넷 프레임워크, COM, Automation, 그리고 C 스타일의 API를 모두 지원한다. 또한 포인터의 사용이 가능하도록 unsafe 모드를 지원한다.
■ 코드를 컴파일하면 CLR 구성 요소들의 서비스들에 의해 관리되는 관리 코드로 컴파일된다. 이런 관리 코드를 MSIL(Microsoft Intermediate Language)이라 하며, 실행시 CLR 구성 요소인 JIT(Just In Time) 컴파일러에 의해 원시 코드로 컴파일 되어 실행된다.
지난 2001년 12월에 C#과 CLI(Common Language Infrast ructure)의 스펙이 ECMA(European Computer Manufactures Association)와 주요 소프트웨어 벤더들의 인정을 받아 하나의 공개 표준으로 자리잡았다. 앞으로 MS가 아닌 다른 벤더에서 만든 C# 언어를 볼 수 있을 것이다.
비주얼 C++이 한층 발전한 ‘비주얼 C++ 닷넷’
비주얼 C++은 고성능 윈도우와 웹, 서버 애플리케이션 개발에 널리 사용되어 왔다. 비주얼 C++ 닷넷은 이런 비주얼 C++의 특성을 유지, 향상시키면서 윈도우 애플리케이션과 닷넷 애플리케이션을 모두 개발할 수 있는 툴이다.
■ 기존 Win32나 ATL, MFC를 이용한 윈도우 애플리케이션을 비주얼 스튜디오 닷넷 안에서도 생성할 수 있다. 단, 템플릿 내용이 약간 변경되었고 사용 가능한 라이브러리가 확장되었다.
■ Managed C++을 이용해 닷넷 애플리케이션, 클래스 라이브러리, 웹서비스를 생성할 수 있다.
■ 웹애플리케이션, XML 웹서비스, 그리고 다른 서버 애플리케이션 생성을 위한 원시 C++ 클래스 집합인 ATL 서버는 ATL, MFC, Win32 프로젝트로 생성된 클라이언트 애플리케이션이나 컴포넌트에서 사용될 수 있는 많은 클래스들을 포함하고 있다.
비주얼베이직 6.0 vs. 비주얼베이직 닷넷
이제 비주얼베이직 닷넷을 기존 비주얼베이직 6.0과 비교했을 때 달라진 점과 개선된 부분을 중점적으로 알아보자. VBScript는 엄격한 비주얼베이직 언어의 하위 집합으로 시작하지만 다른 코드 기반으로 되어 있어 구현상 차이점이 문제가 되었다. 또한 VBScript는 인터넷 속도에 맞춰 발전했기 때문에 언어가 다분화 된다. VBScript의 발전에 따라 언어에 대한 요구 사항이 비주얼베이직에도 요구되기 시작했고, 비주얼베이직에 기능을 추가하기 전에 VBScript에 먼저 기능을 추가하는 경우도 생기게 되었다.
MS 개발진은 같은 언어로 된 두 버전을 구현하는 대신 언어를 하나로 수렴하는 방법을 비주얼베이직 닷넷에 구현했다. 비주얼베이직 닷넷은 기존 비주얼베이직 6.0을 닷넷 프레임워크에 맞도록 재구성해 이전에는 C++을 사용해야 가능했던 시스템 리소스에 대한 접근을 제공한다. 추가된 기능 중 가장 중요한 것은 객체 상속이다. 또한 모든 관리 유형은 시스템 객체에서 얻어 진다.
비주얼 스튜디오 6.0에서 비주얼베이직 닷넷으로의 변화는 단순한 버전업 이상이다. 기존에는 불가능했던 멀티스레딩이나 객체 상속이 가능해졌으며, 임베디드 비주얼베이직이라는 별도의 개발툴로 개발했던 모바일 웹애플리케이션 작업이 통합되었다. 이런 변화를 간략히 정리하면 다음과 같다.
■ 구조화된 오류 처리 지원 : ‘On Error’문 외에도 ‘Try-Catch-finally’를 지원해 보다 구조화된 오류 처리가 가능하다.
■ 실행 라이브러리(Runtime Library) : 파일 배포가 간편해졌다. CLR에 의해 관리되므로 프리스레딩 지원이 가능하며 객체 지향 지원으로 코드의 재사용성이 향상되었다. 확장된 변수형 지원, 가비지 컬렉션에 의해 메모리 자동 관리 기능 지원, DLL 문제 해결 등이 추가되었다.
■ BCL(Base Class Library) : 기존 API 보다 계층화 되고 컴포넌트화 되어 있는 BCL를 사용해 import 시키는 것만으로 간편하게 사용할 수 있다.
■ 개발툴로서의 변화 : 비주얼베이직 닷넷은 기존에 별도로 구매해야 했던 크리스탈리포트를 기본적으로 포함한다. 생성된 코드 수정이 가능하며 이벤트 메소드의 재정의가 가능하고, 소스의 자동 여백 기능과 XML 도큐먼트를 통해 소스의 문서화 작업을 지원한다. 또한 책갈피의 확장 기능인 태스크 리스트 기능을 지원한다. 단, 기존과는 달리 디버그시 변경한 소스 내용은 반드시 리빌드를 통해서만 반영된다.
종합해 보면 비주얼베이직 닷넷은 비주얼 스튜디오 6.0과 여러 부분에서 차이가 난다. 하지만 Win32 API를 사용하지 못하고 BCL을 사용하는 것은 C#도 마찬가지이다. CLR과 관련 프로그래밍 모델에 대해 확실히 이해하기 전에는 비주얼베이직 닷넷을 완전히 이해하기 어렵다. CLR의 기본 형식 시스템과 객체 지향 기능을 익히는 것이 중요하다. 이런 기본 사항에 대해 학습하면 비주얼베이직 닷넷이나 C#과 같은 관리 언어를 완전히 익힐 수 있을 것이다.
웹개발 플랫폼으로서의 ASP vs. ASP.NET
ASP.NET은 단지 ASP(Active Server Pages)의 새로운 버전이 아니라 기업 클래스의 웹 응용 프로그램을 만들고자 하는 개발자들에게 필요한 서비스들을 제공하는 통일된 웹 개발 플랫폼이다. ASP.NET은 ASP와 함께 널리 호환되는 구문임과 동시에 새로운 프로그래밍 모델과 강력한 응용 프로그램의 새로운 클래스를 가능하게 하는 하부 구조를 제공한다.
ASP.NET은 컴파일된 닷넷 프레임워크 기반 환경이다. 또한 비주얼베이직, C#, 그리고 JScript를 포함한 닷넷 프레임워크 호환 가능 언어로 응용 프로그램을 만들 수 있다. 또한 모든 닷넷 프레임워크 플랫폼은 어떠한 ASP.NET 응용 프로그램에도 사용할 수 있다.
ASP.NET과 ASP를 비교해 보면 ASP가 스크립트 언어만 지원하고 브라우저 호환성이 없으며 비구조적인 개발 언어로 재사용이 불가능했던 것에 비해 ASP.NET은 언어 독립과 브라우저 호환성이 유지된다. 특히 모바일 같은 다수의 클라이언트를 지원한다. 기존 윈도우 애플리케이션을 개발하듯 RAD 방식의 개발이 가능하고 컴파일된 상태로 실행되므로 처리 속도 또한 ASP에 비하여 월등하다. 또한 사용자 인터페이스 부분으로 웹 폼이 추가되었고 개발에 유용하게 사용되는 서버 사이드의 컴포넌트들을 제공한다. ASP의 핵심 API 기본 객체(Request, Response, Server 등)는 모두 전과 동일하게 사용할 수 있다. 단, Request 부분은 <표 1>과 같이 변경되었다.
변경된 내용을 보면 ASP에서는 코드 구분 기호 사이에 서브 루틴과 전역 변수를 선언할 수 있다. 그러나 ASP.NET에서는 허용되지 않는다. 대신 모든 함수와 변수를 ‘<script>’ 블럭 안에 선언해야 한다. 그밖에 Render 함수 사용과 프로그래밍 언어 혼합이 불가능하며 LET과 SET이 지원되지 않고 더 이상 기본 속성을 사용하지 않는다. 그리고 데이터 유형이 변경되었으며 구조화된 예외 처리, 스레드 모델 변경 사항 등이 있다.
웹 환경 데이터 액세스 서비스 플랫폼 ADO.NET
ADO.NET은 닷넷 프레임워크를 위한 새로운 데이터 액세스 서비스 모음이다. ADO.NET은 ADO(ActiveX Data Objects)에서 발전한 것으로 n-티어(tier) 개발에 구축되며, 해당 코어에 XML로 구축된다. ADO.NET은 다음과 같은 특징을 갖는다. 닷넷 프레임워크에서 데이터 컴포넌트로서 비연결 데이터 구조를 갖고 있고 닷넷 프레임워크에서 ADO.NET과 XML이 통합된 모델로 존재한다.
ADO.NET은 이전 ADO와 비교했을 때 ADO와 OLE DB를 비롯한 기존 데이터 액세스 인프라가 빽빽하게 결합되어 연결된 환경에 맞게 설계되었다. 하지만 대부분의 새로운 응용 프로그램은 웹 응용 프로그램을 기반으로 느슨하게 결합되어 있으며 이러한 응용 프로그램은 유선 데이터를 인코딩하는 데 점점 XML을 많이 사용하는 추세이다. MS에서는 현재 데이터 액세스 서비스 모델에 내재된 문제점을 해결하는 동시에 프로그래밍 모델은 가능한 한 ADO와 유사하게 개발해야 했다. 개발자들이 새로운 데이터 액세스 기술을 배우는 수고를 덜어야 해야 했기 때문이다. 그래서 나온 것이 ADO.NET이다.
ADO.NET은 XML과 일대일로 맵핑된다. ADO.NET은 연결 지향인 Managed Providers와 비연결 지향인 DataSet으로 이루어져 있다. Managed Providers는 ADO.NET 프로그래밍 모델의 핵심적인 부분이다. OLE DB 공급자의 개념에 느슨하게 맵핑되어 있지만 객체 모델은 좀더 ADO와 유사하다. 차이점이라면 C++와 비주얼베이직에서 호출 가능한 언어 중립 구성 요소를 기록하는 기능을 제공하므로 저수준의 고성능 COM 구성 요소와 비주얼베이직에서 호출이 가능한 느린 자동화 계층으로의 이분법적 구분이 더 이상 필요 없다는 점이다. 참고로 여기에 나오는 구조도들은 MSDN을 참조했음을 밝힌다.
닷넷 프레임워크에서 OLE DB와 ADO 계층은 고성능을 가진 하나의 계층으로 병합되며 동시에 모든 언어에서 호출이 가능하다. 단, SqlClient는 OlE DB에서 제공하는 데이터 서버에 대한 호환성을 배제하고 있으나 MS SQL서버 7.0 이상에서 최고의 성능을 발휘한다.
DataSet은 비연결 지향으로 연결 회수와 시간을 줄이고 텍스트 형식의 작은 사이즈를 가진다. 정리하면 ADO.NET은 데이터 액세스용 닷넷 클래스 프레임워크로 ADO 루트와 일치하면서도 두 가지 측면에서 크게 향상되었다. 즉, 연결이 끊긴 프로그래밍 모델과 풍부한 XML 통합을 완벽하게 지원한다는 점이다.
어떤 언어를 사용해야 할까?
이미 살펴 본 바와 같이 닷넷의 가장 큰 장점 중 하나는 언어 통합이다. 하나의 프로젝트가 다양한 언어로 개발되었을 때는 유지보수의 어려움이 따른다. 그러나 한 기업, 혹은 하나의 프로젝트에서 표준 개발 언어를 정하는 것은 일반적인 관례이다. 비주얼 스튜디오 닷넷은 기본적으로 C++, C#, 비주얼베이직 닷넷, JScript 닷넷이 있으며 최근 외신에 따르면 자바 역시 주요 언어로 포함시키기로 했다. 그밖에 후지쯔사의 코볼과 액티브스테이트사의 비주얼 파이썬, 펄 닷넷, 에펠(Effel), 해스켈(Haskell), 포트란, 컴포넌트 파스칼도 닷넷에서 사용할 수 있는 언어들이다. 아마 점점 더 많은 언어 공급자들이 비주얼 스튜디오 닷넷을 확장해 자신의 언어를 비주얼 스튜디오 닷넷에 통합시키게 될 것이다.
수많은 언어 들 중 무엇을 선택해야 할까? 여기서는 닷넷에 통합된 C#, 비주얼베이직 닷넷, C++에 대해 이야기 하겠다.
만약 기존 비주얼베이직 사용에 익숙한 사람이라면 비주얼베이직 닷넷으로의 이전을 적극 추천한다. 실제로 기존의 비주얼베이직을 주요 언어로 사용했던 기업들은 외주 업체에게 비주얼베이직 닷넷으로 개발해 줄 것을 요구하고 있으며 그 이유로 유지 보수의 편리성을 들고 있다. 물론 애플리케이션의 유지 보수라는 것이 훌륭한 소프트웨어 디자인의 산물이라고 하지만 기업 내의 많은 개발자들이 비주얼베이직 닷넷을 더욱 편리하게 느끼는 것이 현실이기도 하다.
C#은 닷넷이 나오면서 가장 각광을 받고 있는 언어이며 닷넷의 주요 언어로 불려진다. 자바와 C++사이의 균형 감각을 느끼게 하는 언어이며 특히 C#의 임베디드 C라고 할 수 있는 unsafe 기능은 모든 시스템 API뿐만 아니라 C 형태의 함수 또한 호출이 가능하다. 일부 C#에 대해 오인하고 있는 사람들은 C#의 포인터가 C++로의 퇴행이라고 주장하기도 하지만 그것은 C#의 포인터를 잘못 이해하고 있기 때문이다. 즉, C#의 포인터는 C++의 포인터와 달리 안정성을 중요하게 다루고 있다. 자동차가 위험하다고 해서 자동차를 없애고 걸어 다니기 보다는 보행자와 탑승자에게 모두 안전한 자동차를 설계하는 것이 훨씬 더 발전적인 방향일 것이다.
C++는 닷넷과 함께 나오는 많은 언어들 가운데 아마도 유일하게 Win32 애플리케이션(Unmanaged Code)을 작성할 수 있는 언어가 될 것이다. 이것은 C#의 임베디드 C와 비교될 수 있는데, C#의 경우 역시 시스템 프로그래밍이 가능하며 필요한 메소드를 클래스 내에 두는 것도 가능하지만 기존의 C++ 클래스를 직접 재사용할 수 없다. 반면 C++는 Unmanaged Code와 Managed Code(닷넷 애플리케이션) 간에 더욱 유연한 통합을 가능하게 한다.
닷넷에서의 C++은 기존 C++코드를 닷넷에서 재사용하거나 마이그레이션할 때 필요한 기능을 제공한다. 뿐만 아니라 기존의 C++ 라이브러리 뿐만 아니라 닷넷의 XML, 네트워크, ADO.NET, 정규식 같은 라이브러리를 함께 사용할 수 있어 어떤 의미에서는 역시 닷넷에서 가장 강력한 언어라고 할 수 있다.
'Robotics > Software Tech.' 카테고리의 다른 글
TCP/IP 소켓 프로그래밍 for windows (0) | 2008.03.02 |
---|---|
Doxygen 사용 (0) | 2008.02.20 |
NT의 Performance Counter를 이용한 시스템 성능 평가 (0) | 2008.02.15 |
소프트웨어 성능 평가 (0) | 2008.02.15 |
windows embedded xp step by step guide (0) | 2008.02.10 |