Linux + .NET2014. 8. 11. 09:35

업데이트: mono 3.8이 9월 초에 새로 릴리즈되었으며 이 내용을 기초로 새로 업데이트한 아티클을 올렸습니다.

이 블로그 포스트의 내용은 아래 두 블로그 포스트의 내용을 기초로 작성한 것임을 말씀드립니다.
•http://graemechristie.github.io/graemechristie/blog/2014/05/26/asp-dot-net-vnext-on-osx-and-linux/
•http://www.rocko.me/install-mono-3-4-ubuntu/

또한 이 블로그 포스트는 MS Azure Virtual Machine과 Ubuntu Server 14.04 버전을 최초 설치했을 때의 상태를 기준으로 작성된 것이며, 이 블로그 글을 작성하는 2014년 8월 현재 ASP.NET vNext가 정식 출시 전임을 말씀드립니다.

주의: 실제 배포 환경에서 이 블로그 포스트의 내용을 활용하시는 것은 매우 위험합니다.

 

 

ASP.NET vNext는 기존의 System.Web 기반의 레거시 웹 개발 프레임워크에서 탈피하고자 하는 MS의 강력한 의지의 결과물인듯 합니다. 이전에는 상상하기 어려웠고, MS의 손이 아닌 오픈 소스 그룹 (Mono의 System.Web 구현)이나 써드 파티 회사 (Grasshoper 같은)에 의한 제한적인 수준의 작업 결과물일 뿐이었던 ASP.NET의 이식성이 이제서야 완벽함을 기할 수 있게 되었습니다.

이 블로그 포스트에서는 ASP.NET vNext를 우분투 서버 14.04에서 설치해본 과정을 기록하여 그것을 토대로 작성하였습니다. ASP.NET vNext의 발전 가능성을 살펴보시고, 여러 이야기를 나눌 수 있지 않을까 하여 기록해봅니다.

사전 준비 작업

ASP.NET vNext는 Windows 서버 환경에서는 손수 기존에 설치된 .NET Framework를 대체하는 K Runtime을 사용하여, 어느 버전의 K Runtime을 사용할 것인지 패키지 레벨에서 정의할 수 있는 것이 특징이었는데, 리눅스의 경우 기본 실행 엔진은 현재는 Mono를 기반으로 하고 있는 것이 특징입니다. 그럼에도 불구하고 K Runtime이 가지는 영역이 엄연히 있고, 아마 핵심 실행 엔진만 현재는 Mono를 기반으로 실행되는 것 같습니다.

그런 이유로 Mono의 최신 버전을 시스템에 설치해야 하는데, 안타깝게도 Ubuntu 14.04에 등록된 Mono 패키지의 최신 버전은 ASP.NET vNext를 실행하기 위해 필요한 버전과 격차가 상당히 크고, 또한 지원되지 않습니다. 그래서 제일 먼저 해야 할 일은 github에 올라와있는 Mono 소스 코드를 내려 받아 컴파일하고 새 버전으로 바꾸는 작업입니다.

우선은 기존에 Mono 런타임을 설치했던 이력이 있을 경우를 고려하여 Mono와 관련된 모든 패키지를 제거해야 하는데, 아래 명령어로 간단히 제거할 수 있습니다.


sudo apt-get -y purge mono-*

그 다음, Mono를 설치하기 위하여 필요한 이미징 라이브러리 관련 종속성을 해결해주어야 하는데, 필요한 패키지들중 상당수는 Ubuntu 14.04에서 직접 지원하지 않거나 오래된 버전으로 취급하여 apt-get으로 직접 설치가 어려운 패키지들입니다. 따라서, 이들 패키지들을 수동으로 내려 받아 설치하는 작업이 필요한데, 아래 명령어를 복사하여 하나씩 실행하시면 되겠습니다.


wget http://security.ubuntu.com/ubuntu/pool/main/j/jbigkit/libjbig0_2.0-2ubuntu1.13.10.1_amd64.deb
 wget http://security.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.3.0-0ubuntu1.1_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tiff3/libtiff4_3.9.7-2ubuntu1_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tiff3/libtiffxx0c2_3.9.7-2ubuntu1_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg-dev_8c-2ubuntu8_amd64.deb
 wget http://security.ubuntu.com/ubuntu/pool/main/j/jbigkit/libjbig-dev_2.0-2ubuntu1.13.10.1_amd64.deb
 wget http://security.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8-dev_1.3.0-0ubuntu1.1_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8-dev_8c-2ubuntu8_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg-dev_8c-2ubuntu8_amd64.deb
 wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tiff3/libtiff4-dev_3.9.7-2ubuntu1_amd64.deb

sudo dpkg -i libjbig0_2.0-2ubuntu1.13.10.1_amd64.deb
 sudo dpkg -i libjpeg-turbo8_1.3.0-0ubuntu1.1_amd64.deb
 sudo dpkg -i libjpeg8_8c-2ubuntu8_amd64.deb
 sudo dpkg -i libtiff4_3.9.7-2ubuntu1_amd64.deb
 sudo dpkg -i libtiffxx0c2_3.9.7-2ubuntu1_amd64.deb
 sudo dpkg -i libjbig-dev_2.0-2ubuntu1.13.10.1_amd64.deb
 sudo dpkg -i libjpeg-turbo8-dev_1.3.0-0ubuntu1.1_amd64.deb
 sudo dpkg -i libjpeg8-dev_8c-2ubuntu8_amd64.deb
 sudo dpkg -i libjpeg-dev_8c-2ubuntu8_amd64.deb
 sudo dpkg -i libtiff4-dev_3.9.7-2ubuntu1_amd64.deb

Mono 최신 버전 설치하기

이제 기본 준비 작업은 끝났고, 필요한 패키지들을 한꺼번에 설치할 차례입니다. 아래 명령어를 입력하도록 합니다.


sudo apt-get -y install libpng3 libpng3-dev libtool libexif12 libexif-dev libgif4 libgif-dev libpango1.0-dev libatk1.0-dev libgtk-3-0 libgtk-3-dev bison automake autoconf make gcc gtk-sharp2 build-essential xorg-dev libfreetype6 libfontconfig libfontconfig-dev gettext libglib2.0-dev git libjpeg-dev libjpeg8-dev libjpeg-turbo8-dev g++ unzip

쉬운 설명을 위하여, 사용자 프로필 디렉터리에서 설치를 진행한다고 가정하겠습니다.


cd ~

설치가 모두 되고 나면, mono git 리포지터리에서 libgdiplus 소스를 복사합니다.


git clone https://github.com/mono/libgdiplus.git

받은 소스 디렉터리로 이동합니다.


cd ~/libgdiplus

그리고 각종 설정 검사 및 헤더 구성을 진행합니다. 주의할 것은 공식 가이드에서는 –prefix=/usr/local로 소개하고 있으나 우분투의 경우 아래와 같이 /usr을 기준으로 잡아야 합니다.


./autogen.sh –prefix=/usr

구성이 끝나면 컴파일을 하도록 합니다.


make

컴파일 중 특별한 오류 메시지가 없었다면 시스템에 설치하도록 합니다.


sudo make install

이제 다시 홈 디렉터리로 이동합니다.


cd ~

mono 소스를 컴파일하는 과정 중에는 재귀적으로 mcs 컴파일러가 필요합니다. 이를 위하여 mono-gmcs 패키지를 구 버전이지만 우선 설치해야 합니다.


sudo apt-get -y install mono-gmcs

설치가 끝나면, 이제 mono 소스를 복사하도록 합니다.


git clone git://github.com/mono/mono.git
 cd mono

libgdiplus 때와 마찬가지로 prefix 설정에 유의하여 자동 구성을 진행합니다. 자동 구성 중에 다른 git 리포지터리에서 추가로 관련된 소스를 내려받기도 합니다.


./autogen.sh –prefix=/usr

모든 구성이 끝나면 컴파일하고 설치하도록 합니다.


make
 sudo make install

모든 설치가 다 끝났다면, 새 버전 (2014년 8월 현재 3.8)으로 업데이트가 잘 되었는지 확인해보도록 합니다.


mono –version
 mcs –version

위의 명령어에서 새 버전으로 표시가 된다면 ASP.NET vNext를 설치할 준비가 다 끝난 것입니다. 이제 다시 홈 디렉터리로 이동합니다.


cd ~

계속 하기 전에, 라이브러리 경로에 관련된 환경 변수를 하나 설정해주는 것이 좋습니다. 아래 명령어를 실행하여 LD_LIBRARY_PATH 환경 변수를 설정하도록 합니다.


export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH

K Runtime과 ASP.NET vNext 설치하기

이제 중요한 부분이 남았습니다. K Runtime과 ASP.NET vNext를 설치하는 것이 남았는데, 앞의 과정보다 시간도 짧게 걸리고 비교적 쉽습니다.

ASP.NET vNext의 전체 소스 코드를 복사하지 않고 필요한 셸 스크립트 파일인 kvminstall.sh 파일만 가져오도록 합니다. 아래 명령어를 홈 디렉터리에서 실행합니다.


curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh

경로 설정을 맞추기 위하여, 아래 명령어를 실행합니다.


source ~/.kre/kvm/kvm.sh

이제 KVM을 사용자 프로필 디렉터리 아래의 .kre 폴더에 설치하기 위해, 다음 명령어를 실행합니다.


kvm upgrade

기본적인 실행 환경이 준비되었고, K Package Manager (달리 표현하면 K Package Manager의 실행을 담당하는 Mono)가 통신해야 할 사이트들의 HTTPS 인증서를 추가한 다음, 시스템에 설치된 루트 인증서를 가져올 수 있도록 하기 위하여 아래 명령어들을 실행합니다. 확인 프롬프트가 나타나면 여러번 yes를 입력하여 모든 필요한 인증서 및 인증서 체인을 가져오도록 합니다.


sudo certmgr -ssl -m https://go.microsoft.com
 sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
 sudo certmgr -ssl -m https://nuget.org
 sudo certmgr -ssl -m https://myget.org
 mozroots –import –sync

Hello, World! 찍어보기

모든 설치가 끝났습니다. 예제 소스 코드를 가져와서 실행하기 위하여, David Fowler님의 github 리포지터리에 올라와있는 ASP.NET vNext 샘플을 이용하도록 하겠습니다. 공식 웹 사이트에 있는 샘플은 HTTPAPI를 기반으로 하는 것이어서 Nowin Factory로 교체하여 실행할 수 있지만 쉬운 설명을 위해 David Fowler님의 예제를 가져와서 대신 설명함을 말씀드립니다.

홈 디렉터리로 이동합니다.


cd ~

그리고 아래 명령어를 실행하여 콘솔 프로젝트 샘플 소스를 복사합니다.


git clone https://github.com/davidfowl/HelloWorldVNext.git

해당 디렉터리로 이동하여 다음 순서대로 명령어를 입력하여 Hello World! 메시지가 나타나는지 확인합니다.


cd ~/HelloWorldVNext/src/helloworld
 kpm restore
 k run

여기서 kpm restore 명령은 해당 예제를 실행하기 위하여 필요하다고 project.json에서 명시한 NuGet 패키지들을 전부 시스템에 설치하는 과정을 포함하며, 최초 한 번만 실행하면 됩니다. 그리고 k run 명령은 project.json 또는 그 상위에 정의되어있는 run 명령어를 실행한다는 의미이며, 보통 run 명령어는 재정의하지 않는 한 Main 메서드를 찾아 실행하는 것과 의미가 같습니다.

받은 프로젝트 디렉터리 상의 파일을 보면 흥미로운 것이, 이전처럼 mcs (gmcs)를 호출하여 exe 파일을 만들지 않았는데도 소스 상태에서 바로 k run이라는 명령어를 넣으면 프로그램이 시작된다는 점입니다. 이런 방식의 닷넷 응용프로그램은 웹 환경에서 큰 강점을 발휘하게 될 것입니다.

ASP.NET vNext 샘플 웹 프로젝트 띄워보기

이제 핵심입니다. ASP.NET vNext 샘플 웹 프로젝트를 띄워볼 차례인데, 다음과 같이 명령어를 입력하도록 합니다. 물론, 진행의 편의를 위해 홈 디렉터리에서 실행하는 것이 좋겠습니다.


git clone https://github.com/davidfowl/HelloWorldVNext.git
 cd ~/HelloWorldVNext/src/helloworldweb
 kpm restore
 k web

예제에 같이 들어있는 Nowin Factory 프로젝트의 코드를 보면 TCP/5000 포트를 웹 리스너 포트로 사용하고 있습니다. 밖에서 호스트 이름과 함께 5000번 포트로 접속하면 웹 페이지가 나타나는 것을 볼 수 있습니다. 그리고 서버를 종료하려면 콘솔에서 아무 키나 누르면 종료가 됩니다.

만약에 원격에서 좀 더 지속적으로 서버의 성능을 측정해보고 싶으시다면 screen 유틸리티를 사용하여 세션을 분리하신 상태에서 위의 명령어를 입력하고, 서버가 떠 있을 때 Ctrl 키를 누른 상태에서 빠르게 a, a, d 키를 누르면 세션이 분리되어 계속 살아있는 서버가 만들어집니다. 이 상태에서 Apache Bench (AB)등의 유틸리티를 사용하여 부하 테스트 등을 해보시는 것도 의미가 있을 것입니다.

참고로, NAT 환경이나 퍼블릭 클라우드 환경에서는 대표 IP 주소에 대한 외부 방화벽 설정을 열어주셔야 밖에서도 접속이 가능합니다.

마무리

아직 ASP.NET MVC 6나 다른 기술들이 완전히 준비된 것은 아니지만, 이 정도만 하더라도 ASP.NET은 더 이상 윈도 OS 안에서만 사용 가능한 기술이 아니라는 것을 증명하는데에는 손색이 없을 것입니다. 더 많은 가능성과 잠재력을 포함하는 최신 기술이 곧 나타나게 될 것이 무척 기대가 됩니다.

만약 기존에 ASP.NET 웹 사이트를 개발해 놓은 것이 있다면, ASP.NET vNext로 프로젝트를 마이그레이션하면서 플랫폼에 중립적으로 동작하는 코드로 업데이트하는 프로젝트를 한 번 진행함으로서 그리 어렵지 않게 멀티 플랫폼으로 ASP.NET 웹 응용프로그램을 포팅하실 수 있을 것입니다.

앞으로 더 자세한 정보와 상세한 내용들, 그리고 활용 방안들도 블로그 포스트로 전할 수 있도록 하겠습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Linux + .NET2009. 8. 4. 23:44

요즈음 Mono 기반 프로젝트들이 눈부신 발전을 거듭하고 있습니다. 그리고 이제 그 결과물로 최근 전세계적으로 많은 인기를 끌고 있는 Apple iPhone에도 Mono와 .NET 기술을 사용할 수 있게 되었습니다. :-)

MonoTouch는 기존의 Mono Framework에서 사용되어왔던 AOT (Ahead of Time) 컴파일 기술을 바탕으로 JIT (Just In Time) 컴파일 기능을 지원하지 않는 iPod과 iPhone 내의 임베디드 운영 체제를 위한 완전한 수준의 Native Application을 작성하는 것을 가능하게 만들었습니다. 정리하면, 기존에 사용되던 X-Code가 아닌 또 다른 유형의 Native Compiler가 추가된것으로 이해할 수 있습니다. 비슷한 기술을 가지고 있는 Unity3D와는 달리 MonoTouch는 Generic을 지원한다고 합니다.

그렇지만 기존의 .NET 기술을 완전히 사용할 수 있는 형태가 아니기 때문에 당연히 제약 사항이 존재하는데, 디버깅, LINQ 기능은 완전하지 않습니다. 향후 로드맵 상에서 버전 2.0에서 개선할 예정이거나 고쳐나갈 예정인 기능들입니다. 그리고 Reflection Emit API, System.Runtime.Remoting API, 동적 Type 생성, 콜백 역참조 (네이티브 코드로 전달된 대리자의 호출이 유효할 수 있게 만드는 동작)와 같이 동적으로 코드를 생성하는 부분들은 제한되거나 지원되지 않습니다. 또한, 현재는 iPhone OS 3.0에서만 테스트된 상태라고 합니다.

여러가지 제약 사항들이 있지만, 향후 로드맵에서는 상당히 희망찬 포부를 제시하고 있는데, 실버라이트 컨텐츠를 수용할 수 있도록 2.0 릴리즈 때에는 많은 부분이 개선/보수가 이뤄질듯 합니다.

현재는 클로즈 베타의 형태로 운영되고 있으며, 올해 가을에 1.0 버전이 런칭된다고 합니다. 관심있으신 분들은 지금 클로즈 베타를 신청하실 수 있으며, 개발 도구는 MonoDevelop 2.0 MonoTouch Edition 기반입니다.

홈페이지: http://www.mono-project.com/MonoTouch
클로즈 베타 신청: http://spreadsheets.google.com/viewform?hl=en&formkey=dHRXeFI5b1NjUWdRRkpiSmxkanh6T1E6MA..

 

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 오~ 좋은 소식 듣고 갑니다. 관심이 있었는데.. 당장은 힘들 겟지만. 눈여겨 두고 갑니다. ^^

    2009.08.28 02:11 [ ADDR : EDIT/ DEL : REPLY ]
    • 여러모로 .NET 기술을 활용할 수 있는 폭과 범위가 넓어진다는건 참 좋은 일인것 같습니다. :-)

      2009.08.28 10:28 [ ADDR : EDIT/ DEL ]

Linux + .NET2008. 8. 5. 00:33

지난번에 이어서 이번 글에서는 MonoDevelop을 이용하여 지역화 프로그래밍을 다루는 방법을 소개하고자 합니다. 이미 이전 글에서 언급하였듯이 Mono에서는 지역화를 위하여 libintl 기반의 프로그래밍 기법을 사용합니다. Microsoft .NET Framework가 사용하는 방법과는 다소 차이가 있으며 접근 방법도 조금 다릅니다.

국제화 기능을 적용해보기 위하여 새로운 프로젝트를 하나 만들어 보도록 하겠습니다.

사용자 삽입 이미지

새로운 프로젝트를 여느떄와 같이 작성합니다.

사용자 삽입 이미지

하단의 Translation 항목을 체크하면 추가할 지역화 대상 언어를 관리할 수 있는 리스트박스와 UI가 나타나는 것을 볼 수 있습니다. Add 버튼을 클릭합니다.

사용자 삽입 이미지

언어와 함께 지역 코드를 선택할 수 있는 세부 대화 상자가 나타납니다. 우리가 여기서 시험해 볼 것은 단순한 번역이므로 지역 코드는 사용하지 않고 언어만을 선택하기로 합니다. Korean (한국어)를 선택하고 OK 버튼을 클릭합니다. 같은 방법으로 Japanese (일본어)도 추가합니다.

사용자 삽입 이미지

C# 프로젝트 외에 지역화 프로젝트가 추가된 것을 볼 수 있습니다. 지역화 프로젝트를 사용하기 전에 C# 프로젝트에도 약간의 추가 작업이 필요하므로 다음 단계를 계속하기로 합니다.

사용자 삽입 이미지

C# 프로젝트의 References 폴더를 오른쪽 버튼으로 클릭한 다음, "Edit References" 메뉴를 클릭하면 위와 같이 대화 상자가 나타납니다. 수많은 어셈블리 참조들이 있는데 이 중에서 Mono.Posix 항목 앞의 체크 박스를 클릭하고 OK 버튼을 클릭합니다. Mono.Posix 어셈블리의 유틸리티 클래스를 기준으로 번역할 메시지를 찾고, 여기에 맞는 파일을 제공할 수 있습니다.

사용자 삽입 이미지

C# 코드 편집기에서 사용이 편할 수 있도록 Mono.Unix 네임스페이스를 using 절에 추가합니다. Mono.Unix 네임스페이스를 가지고 프로그래밍하는것은 잠시 후에 다시 살펴보겠습니다.

사용자 삽입 이미지

이번에는 국제화 프로젝트 항목을 오른쪽 버튼으로 클릭하여 Options 메뉴를 클릭합니다.

사용자 삽입 이미지
 

Init String 항목을 잘 살펴보시기 바랍니다. 이 항목에 나타나있는대로 libintl을 초기화해야 실질적인 연동이 가능합니다. 여기서 참고해야 할 것은, 지역화 프로젝트도 여러 개가 존재할 수 있다는 점입니다. Package Name 부분을 달리 설정하면 이러한 내용이 반영됩니다. Package Name을 입력하면 Init String 항목도 같이 바뀌는 것을 볼 수 있습니다.

사용자 삽입 이미지

위의 Init String 항목의 내용을 기억하여 호출할 때 전달할 인수를 정확히 지정해야 합니다. 아래는 C# 코드에서 카탈로그를 실제로 초기화한 예제입니다.

사용자 삽입 이미지

이렇게 함으로서 런타임 상에서의 libintl 연동이 가능해졌습니다. 그렇다면 실제로 다국어 번역을 어떻게 이끌어낼 수 있을까요?

사용자 삽입 이미지

Catalog 클래스 내의 GetString 메서드를 사용하여 기준이 되는 영어 문장을 먼저 입력합니다. 만약 복수 명사를 구분하여 취급할 필요가 있다면 GetPluralString을 대신 이용합니다. 여기서는 간단한 인사 메시지 번역을 해볼 것이므로 GetString 메서드를 이용합니다. 번역할 대상이 있으면 GetString 메서드에 전달된 인수에 대응되는 국제화 프로젝트 내의 실제 문자열로 치환되어 반환될 것이며, 그렇지 않으면 Fallback 모드로 대응되어 전달한 인수 그대로 반환됩니다.

사용자 삽입 이미지

C# 프로젝트를 우선 다시 빌드합니다. 문법적인 오류가 없음을 확인합니다.

사용자 삽입 이미지

이어서 국제화 프로젝트를 오른쪽 버튼으로 클릭한 뒤 Update Translations 메뉴를 클릭하여 번역 대상 문자열 리소스들을 MonoDevelop가 수집할 수 있도록 명령을 내립니다.

사용자 삽입 이미지

이제 시험삼아서 일본어 PO 파일을 열어보겠습니다. 놀랍게도, Catalog.GetString 메서드로 호출한 대상 메시지만을 정확하게 가져온 것을 볼 수 있습니다. 이제 Translated 란에 해당 일본어 메시지를 입력하고, Comments에 약간의 부연 설명도 달아봅니다. 만약, 번역이 어려운 상태의 문장이라면 상단의 리스트 뷰에서 Fuzzy 열의 체크 박스를 클릭해놓아도 됩니다.

사용자 삽입 이미지

이제 같은 방법으로 한국어도 번역을 완성합니다. 참고로, MonoDevelop VMware Image에서는 기본적으로 한국어/일본어/중국어 입력이 지원되지 않는데 이를 해결하기 위하여 전용 IME를 설치하지 않는 대신 호스트 컴퓨터에서 해당 문자열을 클립보드로 복사하여 가상 머신에 붙여넣기하는 방식으로 가져왔습니다. :-)

사용자 삽입 이미지

다국어 프로젝트를 다시 빌드하도록 합니다. 다국어 프로젝트의 산출물은 EXE 파일이나 DLL 파일 외부에 배포되기 때문에 별도로 빌드해야 합니다. 이제, 콘솔을 열어서 해당 디렉터리까지 이동해 봅니다.

우리가 작성한 로케일 파일인 ja와 ko 파일이 있는 것을 볼 수 있습니다. 우선 일본어 파일의 내용을 제대로 반영하고 있는지 확인해보기 위하여 다음과 같이 명령을 내립니다.

  LANGUAGE=ja mono i18n_test.exe

그리고 한국어도 같은 방법으로 테스트할 수 있습니다.

  LANGUAGE=ko mono i18n_test.exe

만약 LANGUAGE 변수 설정 없이 시작하면 어떨까요? 기본 문자열이 나타나겠지요. :-)

** 노트: 정정사항이 있습니다. 다음 그림에서처럼 빌드 유형에 대하여 실행 방법을 정의하여 외부 콘솔 프로그램에서 띄워볼 수 있도록 할 수도 있습니다.

사용자 삽입 이미지

다음번에는 GTK# 디자이너인 Stetic을 이용한 간단한 응용프로그램 디자인 및 테스트를 다루어보기로 하겠습니다. 감사합니다. :-)

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Linux + .NET2008. 7. 22. 21:29

MonoDevelop를 이용하여 새로운 프로젝트를 만들 때 Packaging 기능을 이용하여 소스 코드를 재배포하거나, 바이너리를 재배포하는 작업을 편리하게 할 수 있다는 것을 지난번 강좌를 통하여 확인하였습니다. 그런데 Packaging 옵션이 굉장히 다양한 것을 볼 수 있었는데 이들 옵션이 실제로 어떻게 적용되는지 살펴볼 필요가 생겼습니다.

사용자 삽입 이미지

지난 번과 마찬가지로 새 프로젝트를 만들어보기로 합니다. 기존 솔루션에 새로운 프로젝트를 추가하는 방법도 좋습니다. 양쪽 모두 Packaging을 비롯한 추가 옵션을 묻는 대화 상자가 나타나도록 되어있습니다.

사용자 삽입 이미지

각각의 특성을 알아보기 위하여 Packaging 옵션으로 선택할 수 있는 모든 것들을 다 선택해보겠습니다. 다른 부분들은 체크하지 마시고 OK 버튼을 클릭하시면 Packaging 프로젝트와 함께 새로운 C# 프로젝트가 생성될 것입니다.

사용자 삽입 이미지

위의 그림에서 보듯이 오른쪽 화면의 솔루션 트리뷰에 Packages라는 이름의 Packaging 프로젝트가 새로 생성된 것을 보실 수 있습니다. 이름이 정형화되어있어서 마치 예약된 기능처럼 보여지지만 Packaging 프로젝트는 같은 솔루션 안에서 개수의 제한 없이 얼마든지 추가할 수 있습니다. 그리고 이 프로젝트 아래에 다양한 Sub Item들이 추가된 것을 볼 수 있습니다. 이제 이 각각의 아이템들을 살펴보기로 합니다.

사용자 삽입 이미지

Linux Binaries 항목을 오른쪽 버튼으로 클릭하고 속성을 살펴보니 위와 같은 대화 상자가 나타납니다. 프로젝트가 생성하는 EXE나 DLL 파일 (Visual Studio에서는 이것을 프로젝트 출력 (Project Output)이라는 말로 표현하고 있었습니다.)을 플랫폼 별로 구분하여 배포할 수 있게 한 것이 보입니다.

사용자 삽입 이미지

여기서 선택한 대상 플랫폼이 현재 버전의 Mono나 MonoDevelop에서 정확한 의미를 가지는 것은 아닙니다. 하지만 향후 개발 계획에 따라서 Mono나 MonoDevelop가 특정 OS에만 국한되는 내용이 들어있지는 않은지 판정하거나 하는 데 이용될 수 있습니다. 그리고 현 시점에서 우리는 특정 OS에만 국한되는 내용을 걸러내기 위한 목적으로 이러한 기준들을 이용하고 프로젝트에서 선택할 수 있습니다.

사용자 삽입 이미지

이제 그 옆에 있는 프로젝트 선택 탭을 클릭해 보기로 하겠습니다. C#이나 다른 프로젝트를 여기서 추가할 수 있는데, 같이 배포하기를 희망하는 프로젝트 노드 앞에 체크 박스를 클릭하면 됩니다.

사용자 삽입 이미지

마지막으로 파일 탭을 클릭해보기로 합니다. 앞서 선택한 프로젝트 내에 속하는 파일들 중 실제로 포함할 파일들만 선택적으로 여기서 다시 설정할 수 있습니다. Linux와 Windows 플랫폼을 나누어서 배포해야 한다면, 이 탭을 이용하여 리눅스 버전에서만 사용할 수 있는 C# 모듈이나 라이브러리 따로, Windows 버전에서만 사용할 수 있는 C# 모듈이나 라이브러리 따로 관리하도록 하면 됩니다.

사용자 삽입 이미지

실제로 다른 프로젝트를 추가해보기로 하겠습니다. 파일 탭에 선택한 내용이 나타날까요?

사용자 삽입 이미지

잘 보이는군요. :-)

사용자 삽입 이미지

이번엔 Source Packaging 항목을 살펴보기로 하겠습니다. File Format을 클릭하니 크게 세 가지 형식을 고를 수 있도록 되어있습니다. 우선, MonoDevelop IDE (지금 우리가 사용하고 있는 IDE입니다.) 파일 포맷을 선택할 수 있습니다. 그리고 Windows 환경에서 Visual Studio를 대신하여 널리 사용되는 오픈 소스 기반 .NET IDE인 SharpDevelop용 파일 포맷이 보입니다. 마지막으로, Visual Studio용 Solution 파일 포맷도 됩니다. 이전에 언급한대로 Visual Studio용 Solution 파일 포맷의 경우 msbuild에서도 로드하여 사용할 수 있다고 하였습니다.

사용자 삽입 이미지

소스를 묶어서 압축 파일로 만들 때 사용할 포맷도 지정할 수 있습니다. tar, tar.gz, tar.bz2, zip 포맷이 지원되는 것을 볼 수 있습니다.

사용자 삽입 이미지

그리고 마지막으로 Tarball 파일을 보기로 합니다. Tarball 파일은, 자동화된 것은 아니나, Windows 환경에서 사용하는 MSI 파일이나 CAB 파일과 마찬가지로 Linux 환경에서 소스 코드를 빌드하고 시스템에 설치할 수 있도록 도움을 주는 고유한 Installer입니다. 소스까지 같이 제공하므로 오픈 소스 정신에도 가까운 것입니다. Tarball 파일 안에 들어갈 Makefile에 대한 설정을 지정할 수 있는데, 일단 디버그 빌드와 릴리즈 빌드 중에서 선택이 가능합니다. 그리고 Autotools 기반인지, 편집하기에 용이한 일반 Makefile을 만들것인지도 선택할 수 있습니다.

사용자 삽입 이미지
 

새로운 패키지를 생성하거나 추가할 때 위와 같은 단계별 마법사 대화 상자를 볼 수 있습니다. 그리고 각 패키지 별로 세부 설정을 마법사 수준에서 마찬가지로 지정할 수 있으므로 패키지 설정의 어려움은 없을 것입니다.

다음번에는 Unix Integration이 어떻게 동작하는지에 대한 내용과 Translation을 위하여 사용하는 i18n을 위한 Portable Object 파일을 프로그래밍 방식으로 접근하는 방법에 대해서 살펴보기로 하겠습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Linux + .NET2008. 7. 20. 23:24

이번 강좌에서는 Mono를 이용하여 Hello World 콘솔 응용프로그램을 만들어보고 MonoDevelop와 Visual Studio의 차이점을 살펴보기로 하겠습니다. Visual Studio가 Windows용 응용프로그램을 위하여 최적화된 환경을 제공한다면 MonoDevelop는 Linux 응용프로그램, 정확하게는 Gnome Desktop을 위하여 최적화된 환경을 제공합니다.

이번 강좌에서는 지난번에 이어 VMware 기반 Mono 패키지를 이용합니다. 다음의 웹 사이트에서 Mono 패키지와 VMware Player를 무료로 다운로드받으실 수 있습니다.

새 프로젝트 만들기

VMware 패키지를 부팅한 이후에 바탕 화면에 MonoDevelop 아이콘이 있을 것입니다. 이것을 더블 클릭하면 MonoDevelop IDE가 시작됩니다.

사용자 삽입 이미지

위의 화면에서 Start New Solution을 클릭하면 아래와 같은 대화 상자가 나타납니다.

사용자 삽입 이미지

Visual Studio의 새 프로젝트 만들기 대화 상자와 거의 비슷합니다. 하지만 Visual Studio와는 달리 Boo와 같은 신흥 닷넷 기반 스크립트 언어와 MSIL에 대한 직접 지원 (ILAsm), Java 프로그래밍, NUnit 프로젝트 등을 지원합니다. 패키징 프로젝트는 Visual Studio가 제공하는 설치 프로젝트의 성격을 가지지만 오픈 소스 프로젝트를 진행하는 사례가 많음을 감안하여 소스 코드 패키징까지 지원합니다.

Packaging

C# Console 프로젝트를 선택하고 프로젝트 이름을 HelloWorld로 입력하여 프로젝트 생성을 시작하면 새 프로젝트에 대한 상세 설정 대화 상자가 나타납니다. 크게 세 가지 설정이 존재하는데 일단 Packaging 설정부터 살펴보기로 하겠습니다.

사용자 삽입 이미지


Archive of Sources

프로젝트 소스 코드를 패키징하는 방법을 정의합니다. 오픈 소스 프로젝트를 많이 진행하는 경우를 감안한 MonoDevelop만의 독특한 설정입니다.

  • MonoDevelop Project Model Sources: 패키지의 압축을 풀었을 때 바로 MonoDevelop에서 열 수 있도록 패키징합니다.
  • SharpDevelop 1.0 Project Model Sources: 패키지의 압축을 풀었을 때 바로 무료 Windows/.NET 기반 오픈 소스 IDE인 SharpDevelop에서 열 수 있도록 패키징합니다. 여기에는 만드려는 MonoDevelop 프로젝트 파일의 형식 변환이 같이 포함됩니다.
  • Visual Studio .NET 2005 Sources: 패키지의 압축을 풀었을 때 바로 Visual Studio 2005 이상의 IDE나 msbuild 유틸리티에서 열 수 있도록 패키징합니다. 여기에는 만드려는 MonoDevelop 프로젝트 파일의 형식 변환이 같이 포함됩니다.

Archive of Binaries

  • Linux Binaries: GTK# 등의 크로스 플랫폼 라이브러리나 런타임이 있을 경우 이것들의 리눅스 버전을 모아서 패키징하기 위한 설정입니다. 이후에 패키징 대상을 수기로 변경할 수 있습니다.
  • Windows Binaries: GTK# 등의 크로스 플랫폼 라이브러리나 런타임이 있을 경우 이것들의 Windows 버전을 모아서 패키징하기 위한 설정입니다. 이후에 패키징 대상을 수기로 변경할 수 있습니다.

Tarball: 관련 소스 코드와 바이너리를 타르볼 파일 (.tar 시리즈)로 압축합니다.

Unix Integration

사용자 삽입 이미지

Generate Launch Script: PE 기반 MSIL 혼용 이미지를 만들어내는 것이므로 사실 만들어진 exe 파일 자체는 여전히 mono 런타임에 의하여 별도로 취급되어야 합니다. 이 과정을 단순화하기 위하여 별도의 스크립트를 생성할 수 있는 데 이 작업을 자동화해줍니다. 프로젝트 이름과 다르게 스크립트 이름을 지정할 수 있습니다.

Generate .desktop File: GNOME 노틸러스를 위한 단축 아이콘 파일 (Windows의 Explorer Shell과 대응됩니다. Windows의 단축 아이콘이 .lnk 확장자를 가지는 것과 같습니다.)을 생성하도록 할 수 있습니다. 이 설정 또한 스크립트를 만드는 것과 같은 용도이지만 GNOME 노틸러스를 위한 부가 설정이 포함됩니다.

Translation

사용자 삽입 이미지

Mono는 다른 Linux 기반 응용프로그램들과 같은 방법으로 지역화 기능을 제공합니다. Microsoft .NET Framework가 사용하는 지역화와는 다른 방법으로 프로그램과 함께 배포되는 PO (Portable Object) 파일을 i18n 라이브러리로 가져오는 방식입니다. 이 설정을 통하여 국적 및 국가 코드 별로 PO 파일을 미리 구성할 수 있습니다.

사용자 삽입 이미지

언어와 국적 코드를 설정하는 단계에서 User Defined Locale 설정을 이용하여 단순한 언어 번역을 위한 용도 외에도 사용자 정의 메시지 테이블을 구성할 수 있습니다.

Gtk# Support

사용자 삽입 이미지
 

프로젝트에 Gtk# 설정을 추가하고 대상 라이브러리 버전을 지정할 수 있습니다. 별도로 Mono SVN Repository에서 소스 코드를 체크아웃하여 가져오거나 Night Build (개발자에 의하여 짧은 시간 내에 Commit되는 검증 수준이 약한 최신 빌드)를 설치한 경우가 아니면 버전이 보통 한 개입니다.

여러 설정이 있었지만 우리는 여기서 아무런 설정을 택하지 않고 프로젝트를 만들어보기로 합니다. 하나씩 하나씩 다음 Chapter에서 짚어보기로 합시다.

첫 프로젝트 프로그래밍

사용자 삽입 이미지

우리가 예상하던것과 다르지 않게 프로젝트가 만들어지고, 편집과 테스트가 가능한 환경이 생성되었습니다. 리눅스 환경이라고는 해도 C# 코드를 보니 별로 어색하지 않습니다. Visual Studio와 유사한 Keyboard Scheme를 제공하므로 Console.WriteLine 메서드에 출력할 메시지를 Hello World!로 바꾸고 F5키를 눌러보기로 하겠습니다.

사용자 삽입 이미지

Visual Studio와는 조금 다르게 하단에 콘솔 프로그램의 실행 결과가 표시됩니다. GNOME의 경우 Windows에서처럼 기본 콘솔 인터프리터가 통일되지 않습니다. 하나도 설치되지 않았을 수도 있고, 수십 개가 설치된 상태일 수도 있습니다. 그래서 기본 설정은 이와 같이 표준 출력과 표준 오류 출력 스트림 (stdout, stderr)을 리디렉션하여 출력 결과를 보여주는 방식을 사용합니다.

사용자 삽입 이미지

프로젝트 디렉터리 구성 살펴보기

그러면 우리가 만든 프로젝트 파일들의 구성이 어떻게 되는지 한 번 살펴보기로 하겠습니다. 프로젝트 디렉터리는 위와 같이 사용자 프로파일 디렉터리 (이 가상 머신의 경우 /home/linux입니다.)에 솔루션 이름과 동일한 디렉터리가 생성된 것을 볼 수 있습니다.

사용자 삽입 이미지

mds 파일이 보입니다. 이 파일은 Visual Studio의 sln 파일과 같은 것이고 같은 솔루션 파일로 여러 프로젝트에 대한 정보가 mds 파일에 서술됩니다. 그리고 하위 프로젝트 디렉터리들도 이 디렉터리 아래에 생성되겠지요.

사용자 삽입 이미지

우리가 만든 C# 프로젝트가 저장되어있는 디렉터리로 들어가보면 이번엔 mdp 파일이 보입니다. Visual Studio의 csproj, vbproj, vdproj와 대응되는 것이 mdp 파일입니다. AssemblyInfo.cs, Main.cs 파일도 보이는군요. bin 폴더에 우리가 컴파일한 바이너리가 들어있을 것입니다.

사용자 삽입 이미지

Debug, Release 디렉터리가 마찬가지로 존재합니다. 디버그 모드와 릴리즈 모드를 프로젝트 작업 도중 IDE 도구 모음에서 설정할 수 있으며 여기에 맞추어 빌드하고 테스트할 수 있습니다.

사용자 삽입 이미지

Debug 폴더의 경우 exe 파일 외에 exe.mdb 파일 혹은 dll.mdb 파일이 생성될 수 있습니다. 이것은 Microsoft .NET Framework 환경에서의 pdb 파일과 같은 용도로 디버거가 문맥을 탐색할 수 있도록 정보를 저장한 Program Database 파일이지만 Mono Debugger를 위하여 생성된 것입니다.

요약

오늘 단원에서는 MonoDevelop로 프로젝트를 만들었을 때의 실제 디렉터리 및 파일의 배치, 소스 코드의 특성, 새 프로젝트를 만들 때 사용할 수 있는 설정들에 대하여 간략히 알아보았습니다. 다음 단원에서는 패키징 개념에 대하여 살펴보기로 하겠습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Linux + .NET2008. 3. 24. 00:03

개요

근래에 들어서 Mono 프로젝트가 좀 더 대중에게 친숙한 방향으로 프로젝트를 발전시켜가고 있습니다. 가장 눈에 띄는 것은, 드디어 MonoDevelop가 수년간의 개발 과정을 거쳐서 드디어 1.0 버전을 처음 내놓았습니다. MonoDevelop는 Visual Studio에 익숙한 프로그래머들을 위한 오픈 소스 기반의 IDE (통합 개발 환경)입니다.

Windows 운영 체제에서는 Visual Studio나 SharpDevelop를 이용하여 닷넷 기반 응용프로그램을 손쉽게 개발할 수 있었습니다. 하지만 Linux, Solaris, Mac OS X등의 운영 체제에서는, 단순히 Mono 라는 프레임워크가 있었을 뿐 이에 대응되는 쓰기 편리한 개발 도구는 개발 단계였다는 점에서 여러 프로그래머들이 반길만한 즐거운 소식이 아닐 수 없습니다.

Mono Framework는 Miguel de Icaza 및 공동 창업자에 의하여 처음 설립된 Ximian (구 Helix Code)의 손으로 처음 시작된 것입니다. 그리고 이후 Novell에 합병되어 Mono Framework는 좀 더 전략적인 모습을 갖추게 되었고 현재는 Novell의 주력 리눅스 배포반인 SUSE Linux에 탑재되어 대중에게 선보이고 있습니다. 다양한 리눅스 배포반 (Fedora, CentOS, RHCE, SLES, SLED, openSUSE, Debian, Ubuntu, Gentoo 등...) 에서 패키지 방식으로 사용할 수 있고, Solaris, Mac OS X, Windows NT 계열을 지원합니다.

시작하기

참으로 좋은 취지의 프로젝트입니다. 더 이상 닷넷이 Microsoft Windows에만 묶여있다고 이야기할 필요도 없으며 다양한 커뮤니티에서 획기적인 솔루션들을 항시 새로 개발하고 있으니까요. 하지만 진짜 문제는, 이를 위하여 정말로 내가 지금 사용하고 있는 Microsoft Windows 운영 체제를 버려야 하는 것인가에 대한 문제입니다. 하지만, 고민하실 필요 없습니다. 절대 Mono를 위하여 컴퓨터를 포맷한다거나 컴퓨터를 교체해야 한다거나 하는 문제는 없을것이니 걱정하지 마십시오.

근간에 구입한 대부분의 개인용 컴퓨터 및 랩톱 컴퓨터들은 기본적으로 내장 코어를 2개 이상 사용하는 프로세서의 혜택을 누리고 있습니다. 따라서 간편하게 가상 PC를 이용하여 개발 환경을 체험하거나 평가할 수 있음은 물론 직접 사용하는 것 또한 가능합니다.

Mono 프로젝트 웹 사이트에서는 처음 Mono를 사용하거나 기존 Windows 운영 체제와 같이 개발 환경을 만들어나가고픈 개발자들을 위하여 가상 PC 패키지를 무료로 배포합니다. 이 가상 PC 패키지는 VMware Player를 이용하여 재생할 수 있도록 되어있으며 VMware Player 또한 무료이므로 간편하게 내려받아서 사용할 수 있습니다.

최신 버전의 Mono-Aware 가상 PC 패키지 받기: http://www.go-mono.com/mono-downloads/download.html

최신 버전의 VMware Player 받기: http://www.vmware.com/download/player/

만약 가상 PC를 사용할 여건이 안되신다면 Live CD를 이용하실 수도 있습니다. Live CD는 리눅스와의 호환성이 없어서 사용이 불편한 Microsoft Virtual PC 2004 및 2007에서도 잘 작동하며, 가상 PC를 구동하기에는 열악한 환경에서 ISO 이미지 파일을 CD로 제작하여 별도로 부팅해볼 수도 있는 유용한 옵션입니다.

첫 시동

모든 준비가 완료되었다면 이제 VMware Player를 열고 다음과 같이 가상 PC 파일을 열어봅니다.

사용자 이미지

파일을 열고 잠시 기다리면 아래와 같이 복사본 옵션에 관한 설정이 나타납니다. 특별한 상황이 아니면 대개의 경우 "I copied it" 라디오 박스에 응답하여 가상 PC를 시작하면 됩니다.

사용자 삽입 이미지

BIOS 화면이 지나가고 Master Boot Record에 설치된 GRUB이 나타나는 것을 볼 수 있습니다. 첫 번째 옵션이 선택된 상태에서 Enter 키를 누르거나 잠시 기다리면 정상 모드로 부팅됩니다.

사용자 삽입 이미지

부팅이 시작되고 상세한 내역은 모두 숨겨집니다. 리눅스가 자랑하던 콘솔 화면 위로 펼쳐지는 기나긴 부팅 메시지 대신 마치 Microsoft Windows 운영 체제의 시작 화면을 보는 듯한 느낌이 듭니다. 만약 종전의 화면에 나타나는 내용을 직접 확인해보길 원하신다면 Esc 키를 누르면 됩니다.

사용자 삽입 이미지

부팅이 완료되면 X-Windows와 함께 기본 Desktop인 GNOME이 시작음과 함께 나타납니다. 잠시 기다리면 아래와 같은 바탕 화면이 나타나는 것을 볼 수 있습니다.

사용자 삽입 이미지

이제 이것저것 둘러보셔도 됩니다. 인터넷 연결이 갖추어져있으므로 Firefox를 이용하여 웹 서핑도 할 수 있으며 SUSE Linux의 특징을 찾아보시는 것도 재미있겠습니다. 바탕 화면을 보니 MonoDevelop와 Mono Documentation 프로그램의 바로 가기 아이콘도 보이는군요. :-)

오늘은 간단한 소개를 목적으로 한 것이었으므로 여기까지 포스팅을 하도록 하겠습니다. MonoDevelop에 대한 구체적인 투어는 다음 아티클을 통하여 하기로 하겠습니다. 아티클을 마무리하기 전에 중요한 것을 하나 알려드리겠습니다. 가상 PC도 컴퓨터는 컴퓨터인지라 그냥 Shutdown하시면 안됩니다. VMware Player의 창을 닫으면 자동으로 Suspend Mode로 전환되기는 하겠습니다만 정확하게 Shutdown 하는 방법을 숙지하시는게 좋겠지요. :-)

사용자 삽입 이미지
 

좌측 하단의 Computer 버튼을 클릭하면 시작 메뉴와 유사한 팝업 창이 나타나는데 여기서 Shutdown 메뉴를 클릭합니다. 그러면 아래와 같이 Shutdown 대화 상자가 나타납니다.

사용자 삽입 이미지

여기서 Shutdown 버튼을 클릭하여 안전하게 SUSE Linux를 종료하고 컴퓨터의 전원을 내리실 수 있겠습니다. Windows와 마찬가지로 Restart, Hibernate, Sleep 옵션도 지원되므로 실제 PC에서는 다양한 옵션을 이용하실 수도 있겠습니다. :-)



Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 모노 개발 전용 VMware 이미지도 공개하는군요. 재밌네요.

    2008.03.24 23:22 [ ADDR : EDIT/ DEL : REPLY ]
    • 남정현

      요즈음 웬만한 오픈 소스 프로젝트들은 VMware 패키지를 무상으로 배포해서 개발자들이 충분히 최적화된 환경 아래에서 프로젝트를 검증해볼 수 있도록 도움을 많이 주고 있습니다. 참 바람직한 일이지요. ㅎㅎ

      2008.03.25 00:16 [ ADDR : EDIT/ DEL ]

Linux + .NET2005. 7. 17. 21:30

Mono 1.1.x 빌드에서 C# 2.0 문법을 사용하기 위해서는 "반드시" 참고하셔야 합니다. mcs 컴파일러는 C# 1.x 문법을 다루는 컴파일러입니다. 당연히 아래의 세 강좌를 mcs 컴파일러로 구동하려고 한다면 오류를 만납니다. gmcs 컴파일러를 사용하여 컴파일하셔야 합니다.

Mono 1.1.x 빌드는 Microsoft .NET Framework 2.x와 마찬가지로 ASP .NET 2.0을 지원합니다. ASP .NET 2.0에 관한 간단한 기능 시험을 해보시려면 우선 XSP 웹 서버로 테스트해보시길 권장하고 싶습니다. ASP .NET 1.x 만을 지원하는 웹 서버는 xsp 이며, ASP .NET 2.0까지 지원하는 웹 서버는 xsp2 입니다.

최신 기술에 대한 개념 이해는 Visual Studio 2005를 활용해보시는 것이 좋을 것이라 권장하고 싶습니다. Visual Studio 2005의 무료 버전인 Express Edition 버전이 MSDN에서 배포중이니 Windows 플랫폼에서 한번 사용해 보십시오. 인터넷을 통하여 다운로드하므로 프록시에 대한 설정이 필요할 수 있고 시간이 오래 걸릴 수 있습니다. 전화 접속 모뎀에서는 권장하지 않습니다.

Visual Studio 2005 Express Edition 다운로드 페이지

http://msdn.microsoft.com/express/

좋은 하루 되십시오. ^^

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요