Silverlight 2.0 Beta1 におけるDLR
やっとSilverlight 2.0 Beta1が公開されました。そしてラスベガスで行われたMIX08のセッションもストリーミングが公開されています。そしてサンプルの公開も始まっています。まだDLR Consoleのサンプルは公開されていないようですが、個人的には1.1アルファのものを移植して使っています。この移植したサンプルを動かしているのが、以下です。
Silverlight 2.0で追加されたコントロールを使って作成した電卓になります。上記の中で行っているコードは、以下のようなものです。
py> import calc2 as x #モジュールのインポート
js> c = x.Calc(canvas) #Pythonのクラスインスタンスを作成
js> c.setlight() #メソッド呼び出し
py> x.enliven(canvas) #イベントハンドラの登録
Pythonで記述されたcalc2モジュールをpythonでインポートして、JScriptでインスタンスを作成し、pythonでイベントハンドラを登録して電卓を作成しました。
言語欄に表示されているものには、Python、JScript以外にRubyもあります。IronRubyの現在の実装では、変数定義はローカルスコープになります。つまり有効なスコープ内で変数定義を使用するのであれば、beginとendで囲む必要があります。そうでなければ、グローバル変数($変数名)として宣言する必要があります。
ベータ1に含まれているDLRは、IronPython 2.0 A8相当と思われます。色々と内容を調べた結果から、このように私は判断しています。まだIronPython 2.0 ベータ1は公開されていませんが、codeplexの状況をみるとA8からベータ1へと続く中間のバージョンのDLRからも知れませんが、機能的には2.0 A8相当だと私は判断しています。
Silverlight 2.0 ベータ1でアプリケーションを作成するには、XAP形式というパッケージを作成します。XAPとは、XAML Application Packageの略で、実態はZIPアーカイブになっています。そしてSDKで提供されるChiron.exeユーティリティでパッケージ化します。このパッケージには、以下のものが含まれています。
- AppManifest.xaml
- コードファイル(PythonやRubyなどのコード)
App.py、App.rb、App.jsなど - XAMLファイル
- DLRなどのアセンブリファイル
- 各種のリソース
AppManifest.xamlに記述するのは、アプリケーションのエントリポイントと必要とするアセンブリファイル(AssemblyPart)になります。アセンブリファイルは、XAPパッケージに含めても良いですし、URLを記述して含めない方法もとることができます。この辺りは、実際のサンプルを見たほうが、具体的に理解しやすいかと思います。
#余談ですが、DLR Consoleのソースコードを読むとDLRのホスティングの方法を理解することができます。何故なら、複数の言語を実際にホスティングしているからです。