IronRuby on Silverlight

Silverlight2에서는 Javascript뿐아니라 .NET Fx languages(VB.NET, C#),

Dynamic Languages(IronPython, IronRuby, Managed JScript)로 프로그래밍이 가능하다.

그외에 Silverlight 1.0과 다른 점은 여기서 확인할 수 있다.

 

그중에 내가 관심이 갔던것은 IronRuby이다. Ruby는 그 언어의 간결성이 맘에 들어서 관심을 가지고 있었는데

Silverlight에서 Ruby를 사용하여 프로그래밍이 가능하다는것이 매력적으로 느껴져 시도해 보기로 했다.

 

결론부터 얘기하자면 Flashing Frame이 그 첫번째 시도의 결과이다.

시작은 이랬다.

 Microsoft Silverlight 2 SDK Beta1을 설치하면 SDL(Silverlight Dynamic Languages)관련 tool들과 help도 같이 설치되지만

이것 보다는 SDL(Silverlight Dynamic Languages) SDK사이트에서 최신 SDL SDK를 설치하는것이 정신건강에 더 좋다.

(처음 시작을 위해 이 페이지를 참조하면 어떤 방향으로 가야하는지 대충 감이 오는데

그중에서도 Programming Silverlight with Dynamic Lanaguages를 따라해 보는것이 가장 확실하다.)

 

help도 웹을 참조하는 것이 가장 최신 버전을 확인할 수 있다.

 

다음은 Flashing Frame을 만드는 과정이며 Silverlight Beta1, SDL SDK Beta1을 기준으로 하고 있기 때문에 정식 버전이 나오면

변경될 수도 있다.

 

  • 먼저 기본 폴더를 만든다.

application에 적절한 이름의 폴더를 만들고 다시 그 폴더 안에 app와 assets폴더를 만든다.

 

  • 기본 파일들을 만든다.

htm파일을 application root에

app.rb와 app.xaml파일을 app폴더에 만든다.

assets폴더는 CSS, 이미지등 application에서 사용하는 여러가지 resource파일을 넣는데 사용되나 Flashing Frame에서는 사용하지 않는다.

 

  • Default.htm

Silverlight을 hosting하고 있는 html페이지이다.

아래 보이는 object tag가 Silverlight host를 정의하는 부분이며 그중에서도 source에 설정되는 것이 내가 만든 application의 경로가 된다.

C#의 경우 .xap파일이 Visual Studio에서 compile하면 만들어지지만 IronRuby의 경우에는 아직 Visual Studio에 완벽하게 합쳐지지 않아서

chiron.exe라는 tool을 사용하여야 결과를 볼 수 있다.

 

  • app.xaml

xml파일로 UI 정의를 담고 있게된다.

일반적인 XAML파일형태와 동일하며 root obejct에 x:Class를 명시적으로 지정해 주어야 app.rb에서 xaml을 읽어들이는데 문제가 발생하지 않는다.

Canvas가 아닌 UserControl일경우 x:Class="System.Windows.Controls.UserControl"이 된다.

 

  • app.rb

IronRuby로 작성된 코드 파일로 이름이 반드시 app.rb로 정의되어야 한다.

(IronPython은 app.py, Managed JScript는 app.jsx)

아래 그림에서 하이라이트된 부분이 xaml을 읽어 들이는 부분이며, 이때 root object의 type을 맞추어 주어야 한다.

Canvas가 아니라 UserControl을 사용했다면 아래와 같이 바꾸어 주면 된다.

scene = Application.current.load_root_visual UserControl.new, 'app.xaml'

 

자세한 코드 설명은 Ruby를 아시는 분이라면 한번 읽어보면 아실것 같아서 생략...

(코드는 Flashing Frame에서 다운로드 가능)

 

  • chiron.exe /b

Silverlight Dynamic Languages SDK를 설치했다면 다음 위치에서 chiron.exe를 확인할 수 있다.

이제 command창을 띄우고 Flashing Frame 폴더로 이동한 후에 "chiron.exe /b"로 chiron을 실행하자.

아래 그림과 같이 browser가 하나 열리면서 폴더의 파일 리스트가 나타나는 것을 볼 수 있다.

Default.htm을 선택하면 아래 그림에서와 같이 Flashing Frame이 실행되는 것을 볼 수 있다.

이때 command창을 보면 chiron.exe가 웹서버 역활을 하여 요청된 파일 목록을 보여주는데 우리가 만들어 주지 않았던

app.xap파일을 만들어서 browser에 전달해준것을 확인할 수 있다.

browser는 종료버튼으로 닫아주면 되고 command창에서는 Ctrl+C로 chiron.exe의 실행을 중지할 수 있다.

 

  • chiron.exe /d:app /z:app.xap

위의 과정을 통해 개발이 끝난 application을 배포하기위해서는 xap파일을 만들어주는 과정이 필요하며

command창에서 아래와 같은 명령을 입력해주면 된다.

실행이 끝나면 app.xap파일이 생성된걸 확인할 수 있다.

이제 Default.htm과 app.xap파일을 원하는 웹서버에 배포하고 browser에서 열어보면 된다.

 

  • app.xap

xap파일은 zip파일이다. 확장자를 zip으로 바꾸어 탐색기에서 열어보면 아래와 같은 파일이 들어있는것을 확인할 수 있다.

chiron.exe가 내가 만들었던 파일 뿐 아니라 실행에 필요한 파일들을 한꺼번에 모아서 xap파일로 만들어 준다.

 

  • AppManifest.xaml

위 파일 중 AppManifest.xaml파일이 모든 구성을 연결해 주는 역활을 하게 된다.

필요한 파일들이나 runtime version등에 대한 내용이 들어가며 눈여겨 보아야 할 부분은 EntryPointAssembly와

EntryPointType이다.

C#에서는 Deployment.Parts에 들어가는 내용도 바뀌지만 EntryPointAssembly와 EntryPointType이 내 project의 assembly와 class로 바뀌게 된다.

IronRuby로 만들어진 application들은 일단 Microsoft.Scripting.Silverlight.DynamicApplication class가 hoster가 되어 app.rb파일을 찾아

실행하게 되는 구조이다. (더 자세한 내용은 SDL SDK에 따라오는 source를 분석해봐도 좋을 것 같다.)

by zplanet | 2008/05/13 20:56 | Silverlight | 트랙백 | 핑백(1) | 덧글(0)
트랙백 주소 : http://zplanet.egloos.com/tb/1755095
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at Jedi Knight : Si.. at 2008/05/15 16:18

... ;/background> <isWindowless>false</isWindowless></SilverlightApp> IronRuby on Silverlight에서 만들었던 Flashing Frame을 게시한다면 위의 manifest.xml과 app.xap를 압축한 FlashingFrame.zip을 만들어서 uplo ... more

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >