silverlight、使ってマスカ?
昨年、silverlight4がリリースされて「業務システムもsilverlightで!」と言われてから早1年近く。中々情報が増えませんね。
そうこうしているうちにsilverlight5のベータリリースも迫ってきた今日この頃です。
そこで、WebアプリやWindowsアプリの開発経験者が、silverlightアプリ開発時に悩みそう(というか、悩んだ)なポイントに対する小ネタを紹介していきたいと思います。
(本当に小ネタなんです。ええ。)
業務アプリの要件というと「他(既存)システムとの連携」なんていうのが良く出てくるかと思います。
最近ですとお互いにWebアプリであることが多いのでURLパラメータやPOSTによるブラウザ間連携が一番シンプルな方法でしょうか。
その際に懸念として上がってくるのが、silverlightの起動処理の重さ。
PCのCPUが最近のCore-iなんちゃらとかなら、かなりヘビーなアプリでもサクっと起動してくれますが、そんなPC環境はそうそう多く無いわけで、一昔前のCPUだと・・・。
だけど、一度起動してしまえばPCスペックに関係無く結構サクサク動いてくれる、という利点もあったりします。
(じゃぁ一体何で起動処理は重いんだ?というのはまた改めて)
そこでちょっと考えてみました。
ブラウザ間連携で毎回silverlightアプリを読み込んでいたら業務に耐えられない。
だったら、起動済みのアプリに対して外部からデータを投げ込んで処理すればいいんじゃね?
ということで、ローカルメッセージ機能を使ってブラウザ間連携をしてみました。
(前フリ長い)
ちなみに、ローカルメッセージ機能自体はsilverlighr3で追加された機能です。
詳しいことはこちらで
Silverlight ベースのローカル アプリケーション間の通信
さて、もちろんローカルメッセージはsilverlightアプリ間での通信手段なので外部のWebアプリとの連携にはそのまま使えません。
ということで、下の図のように、ちょっと連携方法を変えてみます。
本来の連携したいアプリ間に連携用のsilverlightアプリを挟んで、silverlightアプリ間でローカルメッセージによる連携を行う、という方法です。
(赤い線の部分がローカルメッセージによる通信になります)
この時、連携用のsilverlightアプリBは極力軽いアプリにするのがミソです。
連携用のロジックが書かれただけのアプリがベストです。
これで、「高速で起動可能なsilverlightアプリに対して外部アプリから連携することによって、silverlightアプリの起動時間が最短に出来るよね!silverlightアプリAは一度起動しちゃえばローカルメッセージ通信で初期処理いらずさ!」となって問題が解決(改善)されるはず。。。
それでは実際にサンプルコードを・・・おっと、時間のようです。
ということで「次回、サンプルコードは完成するのか?」で。