Posts filed in Silverlight

[Silverlight]Silverlight 3 betaだとローカルでうんたら

「Silverlight 3 betaだとブラウザで表示しているSilverlightのコンテンツをローカル(OutOfBrowser)でも使えるよ」の仕組みを適当に調べてみた。

 

もろもろの環境作って、以下のSilverlightのサイトにある「#11: Out-of-browser Experiences」ソースをダウンロードし、 サンプルを ビルドして試した。

Videos : The Official Microsoft Silverlight Site
http://silverlight.net/learn/videocat.aspx?cat=12#sl3

 

実行してみると、「MyTasks」というSilverlightコンテンツがlocalhostで立ち上がって、Silverlight上で右クリックしたらこんな感じ。「Install MyTasks onto this computer…」を選んでみた。

outofbowse01

次に、ダイアログがでてきて、「OK」するとローカルにアプリとして展開、自動でローカルアプリになったSilverlightのコンテンツが普通のEXEウィンドウで立ち上がった。
outofbowse02

 

んで、ウィンドウのタイトルバーに「MyTasks」ってあって、右クリックしてみると、今度は「Remove this application…」のメニューになってる。
outofbowse03_0

 

ブラウザのSilverlightもまだ生きてて、こっちも「Remove this application…」になってた。かしこい。
outofbowse04

 

どこにローカルに関連するファイルとかあるんかなーと見てみたら
Windows XPで「C:\Documents and Settings\[ユーザー]\Local Settings\Application Data\Microsoft」に「Silverlight」てのができてて、そん中に「Offline」ってフォルダがあった。(たぶんVistaだとRomingの中とか)

そのなかの「localhost.0」ってのが今回できたローカル用ファイルみたい。(localhost実行だからこんな名前なのかな?)
outofbowse05_0

Windows XP
C:\Documents and Settings\[ユーザー]\Local Settings\Application Data\Microsoft\Silverlight\Offline\localhost.0

 

.xapとかある。なんかhtmlもあるんです。

htmlのobject タグのsourceが「value=”offline://localhost.0″」となってて、さっきの「localhost.0」を指してるっぽい。

<html xmlns="http://www.w3.org/1999/xhtml" >
  <!-- saved from url=(0014)about:internet -->
<head>
  <style type='text/css'>
    html, body { height: 100%; overflow: auto; }
    body { padding: 0; margin: 0; }
    #silverlightControlHost { height: 100%; }
  </style>
</head>
<body scroll=no>
    <div id="silverlightControlHost">
      <object data="data:application/x-silverlight," type="application/x-silverlight" width="100%" height="100%">
          <param name="source" value="offline://localhost.0"/>
          <param name="background" value="white" />

          <a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
              <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
          </a>
      </object>
      <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
    </div>
</body>
</html>

 

で次。
outofbowse06

デスクトップのショートカットのプロパティを見たら
「”C:\Program Files\Microsoft Silverlight\3.0.40307.0\sllauncher.exe” localhost.0」だってさ。「sllauncher.exe」ってので動かしてるっぽい。
ここでもさっきの「localhost.0」がでてきた。

 

ふーん、だいたい分かったから、いたずらする。

そのSilverlightの内容が表示されてるローカルのEXEウィンドウにURLショートカットをD&Dします。

 

結果コレ。
outofbowse07_0
タイトルバーは「MyTasks」のまま。

 

ローカル?でSilverlightを動かす「sllauncher.exe」ってやつは、ウィンドウ全体にIEコンポーネント(WebBrowserコンポーネント的なやつ?)を敷いてるのただのEXEってことですか?

結局IEだったとしたら、そりゃIEにFlash Playerが入っていれば、SWFがあるサイトだって動くよね。GoogleのURLショートカットからGmailへのログインだってOKだったよ。普通にWebのネットワークと繋がって、UIが全然ないIEってことだからそうなるよね。

 

んー、Out of Browserと、確かにWeb上のブラウザ外ではあると思います。

しかしながら、IEのセキュリティ設定をそのまま持ってるってことなの?

でも、なんつーかウェブ上でしてることと同じことではないの?。まだbetaだからってこと?。もっと劇的なローカルだからできることとか用意されてんのか?

Web上からだってローカルのストレージ(IsolatedStorage)は使えるんだし、よくわかんね。

 

Webから右クリックで・・・というのは良いアイディアだと思うのだけど、なんか拍子抜け。

なんというか、もっと直接.xapファイルをローカルEXEとして起動するみたいな仕組みに成ってるのかと思ってたけど、本当にこの適当に確認した仕組みのとおりだったら見せかけだけのギミックみたいでなんかつまんない。

あーでも、Macではどうやるんだろう?とかあるけど、このへんでおしまい。

 

ちなみにローカルデータの使用はC#のソースで以下になってた。

if (NetworkInterface.GetIsNetworkAvailable())
{
 // save online using web service
}
{
// use IsolatedStorage because we're offline
}

ってネットワーク上かどうかのフラグ判定して、Webかローカルのストレージ(IsolatedStorage)のどっちを使うか振り分ける感じだね。

なんだか、いろいろまだ不明点は残るけど、いちばんの収穫はif文でelseって省略できるのかな?って発見したこと。
知らなかったな、そんな書き方しないけど一度試してみよ。

 

Related posts

[Silverlight]Adobe AS3 Class Diagram Viewer

既に、Pepeさんやnitoyonさんが紹介している「Flex, ActionScript, AIR Posters」をWebで見れるようにしてみました。

Flex Team
Update on Flex, ActionScript, AIR Posters

中垣 茂 ( Shigeru Nakagaki ) | ブログ ( Flex, AIR, ColdFusion )
AS3, Flex 3, AIR ポスター...97メガっすか

てっく煮ブログ
AIR・AS3・Flex3のクラス相関図ポスターが公開中

 

申し訳ないですが、Silverlightです。
Silverlight 2.0 Beta Silverlight 3のプラグインが必要なので見たい人は入れてください。

Microsoft Silverlight: Light Up the Web
http://www.microsoft.com/silverlight/default.aspx

 

Deep Zoom Adobe ActionScript 3.0 Class Diagram Viewer – Silverlight 3
http://violentcoding.com/content/AdobeAS3ClassDiagramViewer/index.html

posters.pdfから1枚7,200×10,800ピクセル(解像度300相当)のPNG画像に書き出し、それら5枚を横に並べています。各画像のサイズは、22.3MB、32.3MB、32.7MB、24.1MB、30.0MBというボリュームです。

Adobe AS3 Class Diagram Viewer01

 

SilverlightのDeep Zoomという機能を使って表示してます。
MIX08で紹介されていたHard Rock Cafeのサイトで使っているやつです。

Hard Rock Memorabilia
http://memorabilia.hardrock.com/

マウスドラッグで画像の移動やマウスホイールで拡大縮小ができます。

Adobe AS3 Class Diagram Viewer02

Deep Zoomでは拡大縮小や移動を行っている最中に、結構な負荷がかかっています・・・。
CPU%で拡大縮小・移動時には80% – 90%位のスコアをたたき出しております。

 

作りはMSエバンジェリスト 大野さんの完コピです。

develop .net : Silverlight 2 の新機能 – Deep Zoom
http://blogs.msdn.com/mohno/archive/2008/03/12/silverlight-2-deep-zoom.aspx

develop .net : Silverlight 2 の新機能 – Deep Zoom(マウスホイール編)
http://blogs.msdn.com/mohno/archive/2008/03/12/Silverlight-2-Deep-Zoom-with-Mouse-Wheel.aspx

Related posts

[Silverlight]SWF+Silverlight1.1のサンプル更新

この前、SWFからExternalInterfaceを経由して、Silverlight 1.1 のDLLを使用するサンプル作ってみましたが、Silverlight1.1 が Alpha Refresh版となったことで、Alpha Refresh用にサンプル・ソースを変更しました。

[Flash]SWFからSilverlight 1.1のDLLを使う
http://violentcoding.com/blog/2007/06/10/archives/8

 

変更といっても、Silverlight.js差し替えたり、
CreateSilverlight.jsの中で「 Sys.Silverlight.createObjectEx({source: ’simple.xaml’,・・・」となっている部分で、最初の「Sys.」を消すぐらいで済みました。その他はSilverlightのプロジェクト名を変えたのでネームスペースを調整しています。

 

Related posts