GAE Webアプリケーションのクライアントとして Silverlight をつかい、デバッグを行う

 

訳あって Silverlight を触ることになりそうなので、学習がてら、昔つくったGAEのWebアプリの画面をつくってみようと思う。

環境は、Visual Web Developer 2010 Express

Silverlight の開発環境構築は、ここを参照。

 

で、タイトルの話。何が問題かというと、Silverlight アプリケーションを作成すると、

silverlight_debug01

以下の様なダイアログが表示されて、Silverlight アプリケーションとともに、それをホストするWebアプリケーションプロジェクトが作成される。

silverlight_debug02

この状態で、デバッグを開始すると、、、

silverlight_debug03

アドホックなWebサーバー(?)が起動してそこにSilverlightアプリケーションがホストされた状態になり、デバッグも可能となっている。

silverlight_debug04

まぁ、それはそれで良いのだろうが、GAE Web アプリケーションのクライアントを作成使用とすると、いくつか問題が。

問題1:相対URLが利用できない

アドホックなWebサーバーが、ベースのURLとなっているので、GAE アプリのサービスを呼ぶためには、絶対URLを指定しなければならないが、テストの場合は、http://localhost:8080 だし、本番の場合は、http://typea-service.appspot.com だ。設定などで切り替えるのは面倒くさい。

問題2:そもそも GAE のサービスを呼び出せない

で、絶対URLを指定して、GAE のサービスを呼び出すと、当然のごとく、クロスドメイン制約に引っかかりエラーとなる。

silverlight_debug05

ということは、GAE Web アプリでホストする Silverlight アプリケーションをデバッグするには、デバッグビルドの出力先を、GAE の静的ファイルとして参照できるところにおいて、そこから起動して、デバッガをアタッチすれば、うまいこといけるのではないか?

で、まぁ自分が想定しているようにはいけたので、その手順など。

もっといいやりかたがあるかもしれないが、手順を忘れてしまいそうなのでメモ。

手順1:GAEの設定で、Silverlight のファイル置き場を作成する

ちなみに、GAE は Python。app.yaml に、静的ファイルを公開するディレクトリの設定を行う。

とりあえず、sl-client とでもして、以下の記述を追加する。

handlers:
- url: /sl-client
  static_dir: sl-client

手順2:Silverlight のデバッグ用のファイル出力先を上記手順1:で指定したディレクトリに変更する

Silverlight プロジェクトのプロパティ から、ビルドタブ、出力パスに、上記手順1:の対象となるディレクトリを指定。

silverlight_debug06

手順3:Web アプリケーションプロジェクトのカスタムWebサーバーのURLにGAEのURLを設定する

silverlight_debug07

手順4:HTTPプロトコルの規定のプログラムをInternetExplorerに変更(Chrome等になっていれば)する

「コントロール パネル\すべてのコントロール パネル項目\既定のプログラム\既定のプログラムを設定する\プログラムの関連付けを設定する」 から実施。

どうもIEでないと、デバッガをアタッチできないようだ。 ブレークポイントで止めたり、できないのは不便なので、涙をのんでデフォルトの設定を変更する。

silverlight_debug08

手順5:GAEを起動した状態で、デバッグを開始する

silverlight_debug09

めでたく、期待通りの動きをしつつ、ブレークポイントでも停止してくれました。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です