Windows Azure에서 리눅스를 게스트 OS로 2012년 중에 지원을 추가할 예정입니다.

Microsoft 전문 테크니컬 칼럼니스트인 Mary-Jo Foley의 기사에 따르면, Microsoft가 2012년 중에 리눅스를 실행할 수 있도록 Windows Azure 서비스를 업데이트할 예정이라고 합니다. 워낙에 특이하고 걸출한 토픽인지라 이 기사 자체가 잘못된 것이 아니냐는 반문을 살 정도로 뜨거운 이슈인 것 같습니다. :-)

현재 나와있는 Web Role, Worker Role은 Visual Studio를 이용하여 개발자가 Application Instance를 패키징해서 Windows Azure에 배포할 때 이것을 VM으로 변환하여 Windows Server 2008이나 Windows Server 2008 R2에서 실행할 수 있도록 바꾸고 있고, 작년에 나온 VM Role은 여기서 좀 더 나아가서 VHD 안에 Windows Server 2008 R2를 설치하고 VHD 단위로 VM을 만들 수 있도록 하는 기능을 내놓았습니다. 그러나 지금까지 나온 것은 모두 한 가지 기술적 특징이 있는데, 실행 중인 VM이 예고 없이 자동으로 재시작되거나 초기화될 수 있다는 점입니다. 그래서 Windows Azure 기반으로 서비스를 개발할 때에는 VM 안에 상태를 보관하는 방식 대신 Stateless/Remote Storage를 활용하는 전략을 택해야 했었습니다.

하지만 Linux VM에 대한 지원과 더불어 장기 실행 VM이 Windows Server에 대해서도 같이 제공되어 Amazon Web Service의 Elastic Cloud Computing 서비스와 같은 형태의 VM Hosting을 Windows Azure에서도 사용할 수 있을 것으로 보입니다. 현재 예상되는 리눅스 배포판으로는 CentOS, RHEL, Suse Linux 등 기존의 Hyper-V 스택에서 원활하게 구동 가능한 상용 리눅스 배포판 대부분이 여기에 포함될 것으로 보입니다.

지금 소개하는 기능은 CTP 버전으로 올해 봄 (2012년 봄) 시즌에 새로 런칭될 것으로 보입니다. 그리고 이 외에도 SharePoint 서버와 SQL Server를 탑재한 가상 머신 이미지의 배포도 같이 지원함으로서 SQL Azure 특유의 기술적 한계를 보완하고 Private Domain에서 사용 가능한 SQL Server를 Windows Azure에서도 이용할 수 있을 것으로 보입니다.

좀 더 자세한 내용은 http://www.zdnet.com/blog/microsoft/microsoft-to-enable-linux-on-its-windows-azure-cloud-in-2012/11508 에서 보실 수 있습니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

PDC 2010에서 언급된 대로 이번 Windows Azure 업데이트에는 많은 수의 업그레이드가 있었습니다. 이러한 업그레이드들의 공통적인 목표는 단 한가지, 좀 더 높은 수준의 서비스를 좀 더 손쉽고 빠르게 개발할 수 있도록 개발자들을 지원하기 위함이었습니다. 그리고 12월 1일, 드디어 새 버전의 SDK와 함께 윈도 애저 서비스 포털이 새 단장을 합니다.

새 버전의 Windows Azure SDK의 버전은 1.3이며, Windows Azure Management Portal은 이제 정식으로 사용할 수 있도록 서비스됩니다. 다음은 Windows Azure SDK 버전 1.3에서 바뀐 사항들을 정리한 것입니다.

  • 권한 상승과 전체 IIS 기능 사용을 통하여 좀 더 완성도 높은 응용프로그램의 개발이 가능하게 됩니다. 이제 웹 역할과 작업자 역할에서 관리자 권한을 이용한 실행을 지원하므로 고유한 소프트웨어의 설치가 가능하게 되었고, 특히 웹 역할의 경우 IIS 전체 기능을 지원하도록 개선되어 IIS 7 전용 모듈을 설치하는 등의 작업이 가능하게 되었습니다.
  • 원격 데스크톱 기능을 켜고 끌 수 있도록 웹 역할이나 작업자 역할의 출판 속성이 추가되었습니다. 이에 대한 자세한 내용은 제 블로그의 글 ([Software Development/Windows Azure] - Windows Azure 인스턴스를 원격 제어하기)을 참조하십시오.
  • 윈도 서버 2008 R2 기반의 역할 지원: Windows Azure는 이제 Windows Server 2008 R2를 OS로 사용할 수 있도록 웹 역할, 작업자 역할, 그리고 가상 머신 역할이 개선되었습니다. 여기에는 IIS 7.5, AppLocker를 비롯하여 고급 명령줄 도구와 PowerShell 버전 2.0과 같은 자동화 기능까지 지원되며, 이전에 제 블로그 글 ([Software Development/Windows Azure] - 이제 UNIX 기반 프로그램도 Windows Azure의 First Citizen이 됩니다.)에서 언급했던 것과 마찬가지로 SUA 등의 리소스를 사용하여 UNIX, LINUX, POSIX 기반 응용프로그램을 윈도 애저 플랫폼으로 이식하는 작업도 가능하게 됩니다.
  • 다중 서비스 관리자 지원: 이제 Windows Azure는 다수의 윈도 라이브 ID를 관리자로 인정하여 서비스에 대한 제어를 수행할 수 있도록 기능이 개선되었습니다. 팀 단위 작업에 대한 지원을 고려하여 추가된 기능으로 더 효율적이고 편리한 작업을 수행할 수 있습니다. 특히 이 기능은 작업 시간대가 서로 다르고 위치가 떨어져있는 팀원들 사이에 관리 작업을 공유할 때 매우 효율적입니다.
  • 실버라이트 기반의 Windows Azure Portal 런칭: 기존의 AJAX 기반 Windows Azure Portal보다 더 사용하기 쉽고 빠르며, 새로운 기능들에 대한 완벽한 인터페이스를 제공하는 실버라이트 UI를 Windows Azure Portal에서 사용할 수 있습니다.
  • 향상된 진단 정보: 1차원적인 진단 정보가 아닌 좀 더 상세한 진단 정보를 통하여 관리하는 역할 인스턴스들의 종류, 배포된 시간, 마지막으로 다시 부팅한 시간등을 확인할 수 있습니다.
  • 새로운 회원 가입 프로세스: 이전보다 더욱 편리하고 쉽게 Windows Azure 서비스에 가입하여 곧바로 클라우드 컴퓨팅 서비스를 이용할 수 있게 됩니다.
  • 시나리오 기반의 Windows Azure Platform 포럼 런칭: 상황 별 대처 방안에 따라 빠르게 답을 구할 수 있는 Windows Azure Platform 포럼이 런칭됩니다. (http://social.msdn.microsoft.com/Forums/en-US/category/windowsazureplatform)

다음의 기능들은 베타 버전으로 제공됩니다.

  • Windows Azure 가상 머신 역할: 새로운 - 또는 - 기존의 윈도 서버 기반 응용프로그램을 VM Role을 이용하여 손쉽게 클라우드로 이관할 수 있습니다. 이에 대한 자세한 정보는 http://www.microsoft.com/windowsazure/compute/#vmrole 의 내용을 참조하십시오.
  • 극소형 인스턴스 레벨: 런타임 시간당 0.05$, 원화로 환산하면 한달 약 4~5만원 선으로 새로운 Windows Azure Platform의 기능을 경험해볼 수 있습니다. 극소형 인스턴스를 통하여 여러분이 원하는 클라우드 솔루션을 비용 걱정없이 자유롭게 테스트하며 개발할 수 있습니다. 자세한 내용은 http://www.microsoft.com/windowsazure/compute/#computeinstancesize 의 내용을 참조하십시오.

이제 개발자와 IT 전문가들은 Windows Azure Management Portal을 통하여 다음의 베타 서비스에 액세스할 수 있습니다.

  • Windows Azure 마켓플레이스: Windows Azure 마켓플레이스는 여러분의 빌딩 블록 구성 요소를 공유하거나, 판매하거나, 구입할 수 있도록 도우며, 고급 데이터를 거래할 수 있도록 도와주는 온라인 마켓플레이스입니다. 현재는 DataMarket (구 Codename: Dallas)이 런칭된 상태이며, 이번에는 Application Market Section이 오픈되었습니다. 40개 파트너사와 50여개의 응용프로그램과 서비스가 현재 게시되어있습니다.

다음의 기능은 CTP (Community Technology Preview)로 제공됩니다.

  • Windows Azure Connect (구 Project Sydney): 더욱 단순하고 관리하기 쉬운, 클라우드와 온 프레미스 사이의 IP 기반의 네트워크를 형성할 수 있도록 도움을 주는 서비스가 CTP로 런칭되었습니다. 현재는 별도의 비용을 받지 않는 CTP 버전으로 제공되며 Windows Azure Management Portal을 통하여 서비스를 신청하고 미리 테스트해보실 수 있습니다.

미국 시간 기준으로 2010년 12월 1일 오전 9시 (한국 시간은 2010년 12월 2일 오전 2시)에 Windows Azure Management Portal을 통하여 Overview 웹 캐스트 (http://go.microsoft.com/fwlink/?LinkID=207019)가 게시될 예정이니 관심있으신 분들께서는 꼭 살펴보시기 바랍니다. :-)

PDC10에서 발표된 Windows Azure 업데이트들을 다시 보시려면 http://www.microsoft.com/windowsazure/pdcannouncements/ 의 내용도 같이 확인하십시오.

출처: http://blogs.msdn.com/b/windowsazure/archive/2010/11/29/just-released-windows-azure-sdk-1-3-and-the-new-windows-azure-management-portal.aspx

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

오늘 도착한 ZDNET 코리아 메일링 리스트를 통해 아주 흥미로운 웹 캐스트가 하나 게시되었습니다. Delphi Prism은 Embacadero의 최신 Rapid Application Development Tool로서 종전의 Delphi .NET에 대한 업그레이드 제품이자, RemObjects사의 Object Pascal 제품의 최신 버전입니다. Visual Studio Shell을 통하여 이전 버전의 Delphi IDE에서 사용헀던 .NET 개발 환경때 보다 더 풍부하고 확장된 기능을 제공하기도 하고, 특히 이번 XE 버전에서는 MonoDevelop 기반의 IDE도 동시에 지원하고 있어서 기능성이 매우 돋보이기도 합니다.

이 동영상에서 소개하는 기술들에 대해 간단히 요약하면, 리눅스, 솔라리스, 맥 OS X에서 데스크 탑 및 서버 닷넷 프레임워크 대체 구현을 제공하는 Mono 프레임워크 (http://mono-project.com/Downloads), 상용 제품군으로 판매되는 MonoTouch (http://monotouch.net/) SDK, 맥 OS X 환경에서 구동 가능한 iPhone 및 iPad SDK (http://developer.apple.com/iphone/), 그리고 Embacadero Delphi Prism XE (http://www.embarcadero.com/products/delphi-prism)를 활용하여 iPhone과 iPad에서 실행 가능한 응용프로그램을 디자인하는 것입니다. 이 중에서 상용 라이선스가 필요한 것은 MonoTouch와 Delphi Prism XE가 되겠습니다.

만약 Delphi가 아닌 C#을 이용하여 응용프로그램을 개발하기 원한다면 Delphi Prism XE 대신 MonoTouch와 함께 제공되는 기본 IDE인 MonoDevelop 만으로도 충분한 개발이 가능합니다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

최근 열린 Professional Developer Conference 2010 (이하 PDC 2010)에서, Windows Azure Platform의 실행 환경을 담당하는 Windows Azure Compute에 획기적인 기능이 추가되었습니다. 바로 VM Role의 추가인데, 여기에는 상당히 시사하는 점이 많습니다. VM Role은 이전 글 "[Software Development/Windows Azure] - PDC 2010에서 공개된 Windows Azure 업데이트"의 내용에서 소개했던 것 처럼 Windows Server 2008 R2 기반의 서버 컴퓨터를 Physical Machine to Virtual Machine (이하 P2V) 기술을 통해 Windows Azure에서 실행 가능한 Cloud Computing Appliance로 변환할 수 있습니다.

이 덕분에 좀 더 많은 종류의 서버 응용프로그램이 Windows Azure Platform의 수혜를 얻을 수 있게 됩니다. 이 중에는 기존의 전통적인 Microsoft Back Office Server들에 대한 것은 물론이거니와, 이전에 우리에게 Service For Unix라는 이름으로 잘 알려진 Microsoft의 Unix 호환성 도구인 SFU 및 SUA의 이점을 충분히 활용할 수 있게 될 것입니다. 즉, 기존에 FreeBSD, NetBSD, Linux, POSIX용 응용프로그램을 성공적으로 Windows Server 기반의 응용프로그램으로 마이그레이션할 수 있었다면, 약간의 수정을 통하여 성공적으로 Public Cloud Computing을 위한 응용프로그램으로도 출사표를 낼 수 있음을 뜻합니다.

SFU 및 SUA가 혹시 낯설다면, Cygwin 프로젝트를 참조하셔도 좋습니다. 그리고, 당연한 이야기이지만 Cygwin 프로젝트 기반의 유닉스 응용프로그램에게도 같은 혜택이 제공될 수 있습니다.

아래는 SUA 설치 과정 및 SUA에 대한 설명 동영상입니다. SUA Community 웹 사이트 http://www.suacommunity.com/ 에 방문하시면, SUA 위에 추가 설치 가능한 주요 유틸리티 패키지들을 더 추가하실 수 있으므로 요즈음 널리 사용되는 유닉스 기반 인기 유틸리티들을 Windows에서도 사용하실 수 있습니다. 아래 동영상은 SUA Community에서 제작한 동영상이며 저작권은 해당 원 저작자에게 있음을 밝힙니다.

SUA Installation Video

SUA Familization Video

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

Port your .NET applications to Mono and Linux without leaving Visual Studio!

Mono 2.4가 발표된 이후로 지속적으로 Mono 프로젝트는 발전에 발전을 거듭하고 있습니다. 최근 흥미로운 툴킷 하나가 새로 등장하였는데 바로 Mono Tools for Visual Studio가 그 주인공입니다. 이전에는 Embacadero Delphi Prism을 통하여 Delphi Prism IDE 레벨에서 Mono와의 동시 Build를 제공한 것이 최선이었습니다만 이제 공식적으로 기본 IDE 위에서 사용할 수 있는 공식적인 Tool이 등장하게 되었습니다.

현재 Mono Tools for Visual Studio는 Private Preview 형태로 배포되는 것으로 소정의 가입 절차가 필요함을 알아두시면 좋겠습니다.

Mono Tools for Visual Studio의 주요 기능을 살펴보면 다음과 같습니다.

  • 호환성 검사: 이전부터 제공되어오던 MoMA (Mono Migration Assistant)를 활용한 호환성 검사 기능을 제공합니다. 개발 중인 닷넷 응용프로그램을 Mono로 가지고갈 때 발생할 수 있는 문제점들을 보고서의 형태로 알려주는 기능으로 호환성 문제에 대한 충분한 검토를 사전에 해 볼 수 있도록 해줍니다.
  • Windows에서 실행: Mono의 Win32 프레임워크를 이용하여 현재 개발 중인 닷넷 응용프로그램을 직접 실행할 수 있도록 해줍니다.
  • Linux에서 원격 실행: 미리 준비되어있는 Linux Workstation 컴퓨터 위에서 현재 개발 중인 닷넷 응용프로그램을 직접 실행할 수 있도록 해줍니다.
  • Linux에서 원격 디버깅: Mono Tools for Visual Studio의 중요한 기능이라고 할 수 있습니다. Linux에서의 원격 실행을 전제로, 원격 디버거를 통하여 Visual Studio의 Debugging Feature를 그대로 사용하여 문제점을 진단하고 파악할 수 있게 해 주는 기능입니다. 참고로, ASP.NET 디버깅도 지원된다고 합니다.

여기서 주목할 것은 VMware Virtual Appliance의 형태로 무료로 배포되는 가상 PC 패키지에 관한 것으로, 가상 PC 패키지를 이용하거나 Windows 7의 Windows Virtual PC 위에서 오픈수세 리눅스 + 모노를 설치하면 컴퓨터 앞을 떠나지 않고도 동시에 두 개의 운영 체제에서 테스트를 수행할 수 있는 편리성을 보여줍니다.

이 중에서 호환성 검사 기능과 원격 디버깅에 관한 내용은 블로그 강좌 형태로 다루어볼 계획이니 많은 관심 바랍니다. :-)

공식 홈페이지: http://go-mono.com/monovs/

크리에이티브 커먼즈 라이선스
Creative Commons License

'Software Development > Mono' 카테고리의 다른 글

Mono 2.6 출시!  (2) 2009/12/16
C#, .NET으로 Apple iPhone 프로그램 만들기  (2) 2009/08/04
Mono Tools for Visual Studio 소개  (2) 2009/07/01
Mono 2.4 / MonoDevelop 2.0 런칭  (0) 2009/04/01
Moonlight 1.0이 공개되었습니다.!  (0) 2009/03/03
Mono 2.2 출시  (0) 2009/01/16
Posted by Windows Azure MVP 남정현 (rkttu.com)

Mono 2.0 릴리즈 노트

Mono 2.0은 오픈 소스 기반의 이식성 높은 닷넷 프레임워크 구현으로, Unix, Windows, Mac OS 등의 운영 체제를 지원합니다.

발표일: 2008년 10월 6일

Microsoft 호환 API

  • 데이터베이스 액세스를 위한 ADO.NET 2.0 API
  • 웹 기반 응용프로그램 개발을 위한 ASP.NET 2.0 API
  • 데스크톱 응용프로그램 개발을 위한 Windows Forms 2.0 API
  • XML 문서 활용 및 제어를 위한 System.XML 2.0 API
  • 언어 연동 질의 (LINQ) 구현을 위한 System.Core API
  • XLINQ 구현을 위한 System.Xml.Linq API
  • 이식성 높은 그래픽 렌더링을 제공하는 System.Drawing 2.0 API

Mono API

  • Gtk# 2.12: Gtk+ 2.12와 GNOME 라이브러리에 대응되며, Linux, Windows, Mac OS X를 위한 데스크톱 응용프로그램 개발을 지원합니다.
  • Mono.Cecil: ECMA CLI 규격에 맞는 바이너리 파일을 생성하기 위한 라이브러리
  • Mono.Cairo: 2D 그래픽 렌더링을 위한 Cairo 그래픽 라이브러리 (이미지, GUI, 포스트스크립트, PDF 등의 생성을 지원합니다.)
  • Mono의 SQLite 지원: SQLite 기반 데이터베이스를 생성하거나 활용할 수 있습니다.
  • Mono.Posix: Linux와 Unix에 한정되는 기능을 관리되는 응용프로그램상에서 활용할 수 있게 하며, 저수준/고수준 API를 모두 제공합니다.

Mono에 번들링된 Thirdparty API

  • PostgreSQL, DB2, Oracle, Sybase, Microsoft SQL Server, SQLite, Firebird를 지원합니다.
  • C5 제네릭스 라이브러리: 제네릭 기반 컬렉션 클래스 라이브러리인 C5 라이브러리를 번들링하였습니다.

컴파일러

  • LINQ의 모든 사양을 지원하는 C# 3.0 컴파일러가 제공됩니다.
  • Visual Basic 8.0 컴파일러가 제공됩니다.
  • IL 어셈블러, 디스어셈블러와 개발에 필요한 모든 도구가 제공됩니다.

도구

  • 디버거: 관리 코드 환경에서 사용 가능한 첫 공식 디버거가 제공됩니다.
  • Gendarme: 닷넷 기반 응용프로그램과 라이브러리의 문제점을 진단합니다. 컴파일러가 진단하지 못하는 문제들을 추가 점검할 수 있도록 고안되었습니다.
  • Mono Linker: Mono 런타임 전체를 배포하지 않고 필요한 어셈블리군만을 통합하여 배포 런타임의 크기를 줄일 수 있도록 도와줍니다.
  • 이 외에도 Mono Tuner, Mono 문서화 도구가 제공됩니다.

라이선스

Mono는 오픈 소스 프로젝트로서, 클래스 라이브러리와 C# 컴파일러는 MIT X11 라이선스, 런타임은 GNU LGPL, SDK 도구들은 GNU GPL과 MIT X11 라이선스로 나뉘어서 제공됩니다.
Mono을 정적으로 링크하는 경우 (예를 들어 Apple iPhone이나 Nintendo Wii 또는 다른 모든 형태의 사유형 운영 체제들을 위하여) 라이선스를 별도로 문의할 수 있습니다.

주요 포커스

  • Windows Forms: ToolStrip과 MenuStrip이 완전히 구현되었습니다. 기존 Windows Forms 1.0의 메뉴 및 도구 모음 컨트롤도 유효합니다.
  • Windows Forms: VirtualMode 등 몇 가지 고급 기능이 누락되기는 하였지만, 이전보다 더 낳은 DataGridView 컨트롤이 제공됩니다.
  • Windows Forms: Mozilla Gecko 렌더링 엔진을 기준으로 WebBrowser 컨트롤이 구현되어있습니다.
  • Windows Forms: TableLayoutPanel, FlowLayoutPanel, SplitContainer와 같은 특수 컨테이너 컨트롤이 구현되었습니다.
  • Windows Forms: XIM을 통한 다국어 입력이 지원됩니다.
  • News: Paint.NET 3.0의 포팅 작업이 일정 수준 이상 진행되었습니다.
  • Component: 성능 카운터 구현이 제공됩니다.
  • ASP.NET: Virtual Path Provider 기능이 제공되며, Browser 정보 파일을 사용할 수 있습니다.
  • Visual C++: Microsoft Visual C++ 7.0 컴파일러 이후부터 제공되는 혼합 모드 어셈블리를 Windows용 모노에서 실행할 수 있습니다.
  • BCL: 64비트 인덱스를 사용하는 대규모 배열을 지원합니다. (--enable-big-arrays 옵션이 필요합니다.)
  • DTrace 지원: Mac OS X와 Solaris에서 Mono를 사용할 경우 DTrace 추적을 지원합니다. (--enable-dtrace 옵션이 필요합니다.)

Mono 프로젝트 홈페이지: http://www.mono-project.com/
Mono 2.0 다운로드 페이지: http://www.go-mono.com/mono-downloads/download.html

출처: http://www.mono-project.com/Release_Notes_Mono_2.0

크리에이티브 커먼즈 라이선스
Creative Commons License

'Software Development > Mono' 카테고리의 다른 글

Moonlight 1.0이 공개되었습니다.!  (0) 2009/03/03
Mono 2.2 출시  (0) 2009/01/16
Mono 2.0 릴리즈 노트  (4) 2008/11/03
Mono 2.0 Preview 1  (0) 2008/08/08
MonoDevelop 2.0 Alpha 1 공개  (0) 2008/08/05
리눅스에서 닷넷하기: MonoDevelop와 지역화 프로그래밍  (0) 2008/08/05
Posted by Windows Azure MVP 남정현 (rkttu.com)

Mono 1.0이 나온지 무려 4년여만에 2.0이 새롭게 모습을 드러내고 있습니다. 정식 버전은 올해 가을에 발표될 예정이며 이제 슬슬 그 윤곽을 드러내고 있습니다.

http://mono.ximian.com/monobuild/preview/archive/2.0/windows-installer/0/mono-2.0-gtksharp-2.10.4-win32-0.exe

Mono 2.0은 Microsoft .NET Framework 2.0과의 호환성을 상당부분 개선하였으며, C# 3.0 스펙과, Visual Basic 컴파일러를 내장하고 있고, IronPython과 Microsoft DLR 환경을 지원하는, 멀티 플랫폼 기반 CLI 프레임워크입니다. Microsoft .NET이 Windows에 최적화된 것이 특징이라면 Mono는 이와는 반대로 다양한 플랫폼에 걸쳐서 다재다능한 역할을 수행해내는 것이 다른 점이며, 최근에는 임베디드 장비로도의 이식이 진행 중입니다.

Major Highlights (주요 변경 사항)

Mono 2.0 is a major milestone in the Mono project, and it supports the following features:
Mono 2.0은 Mono 프로젝트에 있어서 중요한 전환점이며, 다음의 기능들을 지원합니다:

Microsoft Compatible API (Microsoft 호환 API):

  • ADO.NET 2.0 API for accessing databases.
    데이터베이스 접근을 위한 ADO.NET 2.0 API를 지원합니다.
  • ASP.NET 2.0 API for developing Web-based applications.
    웹 기반 응용프로그램 개발을 위한 ASP.NET 2.0 API를 지원합니다.
  • Windows.Forms 2.0 API to create desktop applications.
    데스크톱 응용프로그램 개발을 위한 Windows Forms 2.0 API를 지원합니다.
  • System.XML 2.0: An API to manipulate XML documents.
    XML 문서를 다루기 위한 API인 System.Xml의 2.0 API를 지원합니다.
  • System.Core: Provides support for the Language Integrated Query (LINQ).
    언어 통합 질의문 (LINQ)를 위한 System.Core API를 지원합니다. (닷넷 3.5)
  • System.Xml.Linq: Provides a LINQ provider for XML.
    Linq를 통한 XML 접근을 위한 XLinq를 지원합니다.
  • System.Drawing 2.0 API: A portable graphics rendering API.
    이식 가능한 그래픽 API인 System.Drawing의 2.0 API를 지원합니다.

Mono APIs (Mono 고유의 API, Microsoft .NET에는 없는 사항들입니다):

  • Gtk# 2.12: A binding to the Gtk+ 2.12 and GNOME libraries for creating desktop applications on Linux, Windows and MacOS X.
    Gtk+ 2.12와 GNOME 라이브러리에 바인딩되는 GTK# 2.12를 제공하여 리눅스, 윈도, 맥 OS X를 위한 데스크톱 응용프로그램을 제작할 수 있습니다.
  • Mono.Cecil: A library to manipulate ECMA CLI files (the native format used for executables and libraries).
    ECMA CLI 파일을 낮은 수준에서 재생산할 수 있는 Mono.Cecil 라이브러리를 제공합니다. (System.Reflection.Emit보다 한단계 더 낮은 수준의 기능을 뜻합니다. Mono.Cecil을 이용하면, 프레임워크의 버전이나 환경을 초월하는 특수 어셈블리 생산이 가능합니다.)
  • Mono.Cairo: A binding to the Cairo Graphics library to produce 2D graphics and render them into a variety of forms (images, windows, postscript and PDF).
    Cairo 그래픽 라이브러리에 바인딩되는 Mono.Cairo 라이브러리를 제공하며, 이미지, GUI, 포스트스크립트, PDF 제작을 지원합니다.
  • Mono's SQLite support: a library to create and consume databases created with SQLite.
    SQLite 데이터베이스에 관한 API가 제공됩니다.
  • Mono.Posix: a library to access Linux and Unix specific functionality from your managed application. With both a low-level interface as well as higher level interfaces.
    리눅스와 유닉스 시스템의 낮은 수준 API들과 함께 이를 응용하는 고급 API들을 공개적으로 지원하는 Mono.Posix 라이브러리를 제공합니다. Microsoft .NET의 Microsoft.Win32 네임스페이스의 위치와 유사한 것입니다.

Third Party APIs bundled with Mono (Mono에 번들링된 써드파티 API들, 역시 Microsoft .NET에는 없는 사항들입니다):

  • Extensive support for databases: PostgresSQL, DB2, Oracle, Sybase, SQL server, SQLite and Firebird.
    PGSQL, DB2, Oracle, 사이베이스, SQL 서버, SQLite, 파이어버드 DB와의 연동을 제공합니다.
  • C5 Generics Library: we are bundling the C5 generics collection class library as part of Mono.
    C5 제네릭 라이브러리를 번들링합니다. (제네릭을 이용한 다양한 컨셉 컬렉션을 제공합니다. C++ STL과 비슷한 개념으로 생각하시면 됩니다.)

Compilers (컴파일러):

  • C# 3.0 compiler implementation, with full support for LINQ.
    C# 3.0 컴파일러와 함께 LINQ가 지원됩니다. (C# 1.0과 2.0은 이미 지원되고 있습니다.)
  • Visual Basic 8 compiler.
    Visual Basic 8.0 컴파일러가 지원됩니다.
  • IL assembler and disassembler and the development toolchain required to create libraries and applications.
    IL 어셈블러와 디스어셈블러가 지원됩니다.

좀 더 자세한 정보는 http://www.mono-project.com/ 을 참고하세요. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

지난번에 이어서 이번 글에서는 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을 이용한 간단한 응용프로그램 디자인 및 테스트를 다루어보기로 하겠습니다. 감사합니다. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

xPlatform의 Win32 API 영역 중에 Microsoft Visual C++ Runtime에 관한 정보 수집이 어느 정도 완료되었고 이것을 바탕으로 Phase #1을 이번달 말에 예정대로 런칭할 계획입니다. Visual C++ Runtime (msvcrt.dll)의 상당 수의 시그니처는 libc와 일치하는 것으로 보이며 이 중 몇 가지를 시험삼아 Linux 버전으로 옮겨서 작업 중입니다.

아래의 동영상은 Asianux 2.0 SP1 기반의 PC에서 Mono 1.2.5.1_3을 이용하여 xPlatform DLL을 이용한 간단한 파일 입/출력 서비스를 보여주고 있습니다. 점진적인 테스트를 거쳐 Linux에서도 표준 파일 입/출력 서비스 및 기본 C 런타임을 사용할 수 있도록 준비할 계획입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)