라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
「오픈소스 닷넷」모노 설치와 구동

「오픈소스 닷넷」모노 설치와 구동

 

사용자 삽입 이미지
오픈소스 모노 프로젝트는 비 윈도우 시스템에서도 닷넷 개발을 가능하도록 해줬다. 이로써 윈도우 시스템 뿐 아니라 유닉스와 맥 OS X에서도 동작하는 코드를 개발할 수 있게 됐다. 모노를 설치하고 간단하게 이용해보면서 이 개발 플랫폼에 대해 좀더 알아보도록 하자.

모노는 닷넷 프레임워크에 기반한 오픈소스 개발 플랫폼이다. 닷넷 플랫폼은 윈도우 뿐 아니라 맥 OS X와 여러 유닉스·리눅스 운영체제에서 동작하는 애플리케이션을 개발할 수 있도록 하기 때문에 선택의 폭이 한층 넓어졌다.

모노는 무엇인가?
모노는 C# 언어와 CLI(Command Language Infrastructure)가 유럽 컴퓨터 제조연합(ECMA)의 표준으로 받아들여졌기에 만들어질 수 있었다.

모노 라이브러리에는 닷넷 호환 라이브러리(ADO.NET, System.Windows.Forms, ASP.NET)와 모노에만 들어있는 써드파티 클래스 라이브러리가 포함돼 있다. 또한 모노 런타임을 애플리케이션에 내장시킴으로써 패키징과 배포를 간단하게 하는 것도 가능하다. 게다가 모노 프로젝트는 IDE, 디버거, 문서 브라우저도 제공한다.

모노 설치법
모노는 프로젝트웹사이트에서 자유롭게 다운로드 받아 설치할 수 있다. 현재 리눅스, 윈도우, OS X 세가지 운영체제별로 다운로드할 수 있으며 리눅스용은 일반 설치, 수세, 레드햇으로 세분화돼 있다. 소스코드를 다운로드 받아서 컴파일할 수도 있으며-현재 사용중인 플랫폼이 지원되지 않는다면 유일한 선택이다-적당한 설치 패키지를 다운로드할 수 있다. 이 글에서는 설치 패키지를 다운로드 받아서 이용한다고 가정한다.

플랫폼에 맞는 적절한 패키지를 다운로드 했다면 이제 설치해보자. 설치 과정은 운영체제에 따라 다를 수 있다. 현재 나는 윈도우 XP와 수세 리눅스 9.2에서 모노를 구동하고 있다. 윈도우에서는 쉽게 설치할 수 있지만 다른 경우에는 그리 만만하지 않다.

리눅스에서 설치하려면 모노 플랫폼을 지원하기 위해 여러 파일이 필요하다. 예를 들어 수세용으로 다운로드받아야 하는 파일들은 다음과 같다.

  • mono-devel-1.0.6-1.ximian.9.1.i586.rpm - C# 컴파일러가 포함된 모노 코어 패키지
  • mono-core-1.0.6-1.ximian.9.1.i586.rpm - 모노 코어 런타임
  • mono-data-1.0.6-1.ximian.9.1.i586.rpm - 데이터베이스 코어

각 파일들은 모두RPM형식이다. rpm 명령어를 사용해 리눅스에서 설치할 수도 있다. 예를 들어 코어 모노 런타임은 다음과 같이 설치할 수 있다.

rpm -i mono-core-1.0.6-1.ximian.9.1.i586.rpm



모노를 설치한 이후 시스템 경로에 위치를 추가해야 한다. 그래야 전체 경로를 입력하지 않고 쉽게 명령어를 입력해 이용할 수 있다. 윈도우의 경우 제어판으로 들어가서 할 수 있으며 리눅스의 경우 export PATH 명령을 사용할 수 있다.

: 모노 설치에 애를 먹고 있다면Got Mono? 웹사이트에서 설치 문제를 해결할 수 있는 팁들을 찾아보길 추천한다.

모노 툴셋
모노를 설치하고 나면 다양한 툴들을 이용할 수 있다. 몇 가지를 살펴보자.

  • 모노 - JIT를 사용하지 않고 애플리케이션을 실행하는 모노 인터프리터. 이걸 이용해 명령줄에서 애플리케이션을 구동할 수 있다. MS 닷넷 프레임워크에는 이런 툴이 없다

  • mcs - MS C# 컴파일러(csc.exe)와 동일한 명령줄 옵션을 모두 받아들이는 C# 컴파일러

  • monodies - 애플리케이션을 중간단계 언어(IL)로 디스어셈블하는 툴. MS의 ildasm.exe와 유사한 기능을 제공한다

포함된 툴들의 목록과 각 명령어 옵션에 대해 자세히 알고 싶다면 모노 문서를 참조하기 바란다.

모노 애플리케이션 개발하기
이제 이 툴들을 어떻게 사용하는지 보기 위해 간단한 모노 애플리케이션을 만들어보자. 아래는 콘솔에 메시지를 출력하는 코드이다.


using System;

namespace Builder.Samples {

public class MonoDemo {

public static void Main(string[] args) {
Console.WriteLine("Check out TechRepublic.com");

} } }


MonoDemo.cs라는 이름으로 저장하자. 이제 C# 컴파일러를 이용해서 컴파일하자.

mcs MonoDemo.cs



컴파일하면 MonoDemo.exe 파일이 생성된다. .exe 파일 확장자는 윈도우 시스템에서는 일반적인 것이지만 리눅스 시스템에서는 좀 이상하게 보일 수도 있다. 명령 줄에서 예제 파일을 실행시켜 보자.

mono MonoDemo.exe



이 예제를 통해 나타내려 했던 건 모노나 윈도우 닷넷 프레임워크가 동작하는 윈도우, 리눅스, 맥 OS X 등 어떤 플랫폼에서라도 컴파일된 파일이 구동될 수 있다는 점이다. 바로 모노 컴파일러가 IL이라는 중간 형태의 코드로 C# 코드를 컴파일하기 때문이다.

MS C# 컴파일러도 동일한 작업을 수행한다. 그러나 모노에서는 닷넷 클래스 라이브러리가 아직 완벽하게 구현되지 않은 상태이며 모노에만 있는 라이브러리도 있다. 결과적으로 모노로 개발된 모든 애플리케이션이 MS 닷넷 프레임워크에서 동작할 수는 없다는 의미이며 그 반대도 마찬가지다.

양자간 호환성을 유지하려면 대상 플랫폼과 향후 요구 사항을 이해해야 하며 개발 기간동안 계속 이 부분을 염두에 두면서 작업해야 할 것이다. 또한 모노 웹사이트를 자주 방문해 프로젝트의 진행 상황을 숙지해야 한다. 왜냐하면 클래스 라이브러리와 같은 새로운 내용이 계속 추가되고 있기 때문이다. 이런 상황은 MS 닷넷 프레임워크도 마찬가지다.

우려되는 일들
모노는 윈도우 플랫폼에 대해 갖고 있는 C# 관련 지식을 리눅스와 여타 플랫폼에도 적용할 수 있다는 장점을 제공한다. 그러나 윈도우를 제외한 다른 플랫폼에서 닷넷을 사용해 본격적으로 개발을 하는 건 주저할 수밖에 없다. MS는 C# 뿐 아니라 CLI도 공동체에 기증했지만 ADO.NET과 ASP.NET 같은 여타 기술은 그렇게 하지 않았기 때문이다.

이렇다보니 MS가 ASP.NET과 ADO.NET 엔진도 모노에서 이용할 수 있도록 할지는 여전히 의문이다. 그리고 IIS와 윈도우가 아닌 다른 웹서버에서 애플리케이션이 운용되는 상황은 MS에 타격을 줄 것이다.

어쩌면 명확한 근거가 없는 이야기일지도 모르겠지만 나는 이 점에 주목하고 있다. 그리고 마지막으로 지적하고 싶은 문제는 C# 말고 다른 언어에 대한 지원이 없다는 것이다. 이 때문에 VB.NET 프로그래머들은 모노에 시큰둥한 반응을 보이고 있다.

한번 빠져봅시다!
모노 프로젝트는 오픈소스 프레임워크에 기반한 인상깊은 결과물이라 할 수 있다. 모노 프로젝트는 닷넷 프레임워크의 많은 기능을 지원하며 2.0의 기능도 현재 지원하거나 지원할 예정에 있다. 또한 GNOME 인터페이스와 같은 리눅스 기반 애플리케이션을 개발할 때 모노에만 존재하는 라이브러리를 사용하는 경우도 있기 때문에 리눅스 개발에 힘을 실어주고 있다. 게다가 모노는 윈도우 개발자들이 리눅스를 접해볼 수 있는 좋은 기회이기도 하다. @

 

Tony Patton (TechRepublic)

2005/05/18
원문보기

 

사용자 삽입 이미지

 

원문 :http://www.zdnet.co.kr/techupdate/lecture/dotnet/0,39024986,39136472,00.htm

  Comments,     Trackbacks