|
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에서는 사용하지 않는다.
Silverlight을 hosting하고 있는 html페이지이다. 아래 보이는 object tag가 Silverlight host를 정의하는 부분이며 그중에서도 source에 설정되는 것이 내가 만든 application의 경로가 된다. C#의 경우 .xap파일이 Visual Studio에서 compile하면 만들어지지만 IronRuby의 경우에는 아직 Visual Studio에 완벽하게 합쳐지지 않아서 chiron.exe라는 tool을 사용하여야 결과를 볼 수 있다. ![]()
xml파일로 UI 정의를 담고 있게된다. 일반적인 XAML파일형태와 동일하며 root obejct에 x:Class를 명시적으로 지정해 주어야 app.rb에서 xaml을 읽어들이는데 문제가 발생하지 않는다. Canvas가 아닌 UserControl일경우 x:Class="System.Windows.Controls.UserControl"이 된다. ![]()
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에서 다운로드 가능)
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의 실행을 중지할 수 있다.
위의 과정을 통해 개발이 끝난 application을 배포하기위해서는 xap파일을 만들어주는 과정이 필요하며 command창에서 아래와 같은 명령을 입력해주면 된다. ![]() 실행이 끝나면 app.xap파일이 생성된걸 확인할 수 있다. ![]() 이제 Default.htm과 app.xap파일을 원하는 웹서버에 배포하고 browser에서 열어보면 된다.
xap파일은 zip파일이다. 확장자를 zip으로 바꾸어 탐색기에서 열어보면 아래와 같은 파일이 들어있는것을 확인할 수 있다. ![]() chiron.exe가 내가 만들었던 파일 뿐 아니라 실행에 필요한 파일들을 한꺼번에 모아서 xap파일로 만들어 준다.
위 파일 중 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를 분석해봐도 좋을 것 같다.)
|
카테고리
이글루링크
미친병아리가 삐약삐약
탁이의 일상의 메모 상욱@Online.You Creative Destroyer Bellevue Project gimmesilver's blog 소프트웨어 이야기 mocca 리건의 블로그 Links
이전블로그
2009년 07월
2008년 05월 2007년 08월 2007년 07월 2007년 03월 2005년 05월 2005년 03월 2005년 02월 2004년 12월 2004년 10월 2004년 04월 2004년 03월 2004년 02월 최근 등록된 덧글
링크는 제가 데려가겠습..
by 붉은울림 at 04/23 건축은 질서를 만드는 .. by tinydova at 10/24 결론은 "300의 스타르타.. by ahch1004 at 05/04 약 2년만에 포스트를 등.. by sypretty at 03/26 좀 극단적인것 같긴 한데.. by zplanet at 03/18 300 짜리... 짜리.. .. by 케이샷 at 03/18 혹시 Source Safe를 .. by 이지훈 at 10/26 이렇게 써놓고 지키기는.. by 김상욱 at 05/23 오호... 좋은 정보요!!! by 김상욱 at 05/19 훌륭한 내용이네요. 잘 .. by jkchong at 05/18 라이프로그
|