検索
リンク
タグ
ASP.NET
.NET
ASP.NET MVC
F#
Visual Studio
Azure
ASP.NET Core
ライトニングトーク
Plone
Selenium
AJAX
C#
jQuery
SQL Server
ADO.NET Entity Framework
JavaScript
WebMatrix
EFCore
LINQ
Fizz-Buzz
カテゴリ
最新の記事
最新のコメント
記事ランキング
最新のトラックバック
以前の記事
2024年 03月 2024年 02月 2024年 01月 2023年 12月 2023年 11月 2023年 10月 2023年 09月 2023年 08月 2023年 07月 2023年 06月 2023年 05月 2023年 04月 2023年 03月 2023年 02月 2023年 01月 2022年 12月 2022年 11月 2022年 10月 2022年 09月 2022年 08月 2022年 07月 2022年 06月 2022年 05月 2022年 04月 2022年 03月 2022年 02月 2022年 01月 2021年 12月 2021年 11月 2021年 10月 2021年 09月 2021年 08月 2021年 07月 2021年 06月 2021年 05月 2021年 04月 2021年 03月 2021年 02月 2021年 01月 2020年 12月 2020年 11月 2020年 10月 2020年 09月 2020年 08月 2020年 07月 2020年 06月 2020年 05月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 12月 2019年 11月 2019年 10月 2019年 09月 2019年 08月 2019年 07月 2019年 06月 2019年 05月 2019年 04月 2019年 03月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 09月 2018年 08月 2018年 07月 2018年 06月 2018年 05月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 11月 2017年 10月 2017年 09月 2017年 08月 2017年 07月 2017年 06月 2017年 05月 2017年 04月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 09月 2016年 08月 2016年 07月 2016年 06月 2016年 05月 2016年 04月 2016年 03月 2016年 02月 2016年 01月 2015年 12月 2015年 11月 2015年 10月 2015年 09月 2015年 08月 2015年 07月 2015年 05月 2015年 04月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 09月 2014年 08月 2014年 06月 2014年 04月 2014年 03月 2014年 02月 2014年 01月 2013年 12月 2013年 10月 2013年 09月 2013年 08月 2013年 07月 2013年 06月 2013年 05月 2013年 04月 2013年 03月 2013年 02月 2013年 01月 2012年 12月 2012年 11月 2012年 10月 2012年 09月 2012年 08月 2012年 07月 2012年 06月 2012年 05月 2012年 04月 2012年 03月 2012年 02月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 10月 2009年 09月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 |
2010年 01月 05日
ある日、ふと気がつくと、イントラネット専用のWebアプリケーションのページに貼り付けた Windows フォームユーザーコントロールが、[X] になって表示されていなかった。
そう、古来 .NET 1.x の時代より、.NET の Windows フォームユーザーコントロールは、ActiveX コントロールのように、HTML ページ中に貼り付けできるのだ。 知られているような知られていないような機能ではあるが...。 クライアントが .NET Framework インストール済み Windows OS & IE だと、 <object class="Webサーバー上のアセンブリファイル名.そのアセンブリ中のクラスの完全限定名" /> というタグを HTML ページ中に記述することで、.NET の Windows フォームユーザーコントロールをページ中に貼り付けることができる。 できるのである、が、しかし、このページが私の PC では、機能しなくなっていたのだ。 同僚の PC で確認させてもらうと、こちらはちゃんと HTML ページ中に当該 Windows フォームユーザーコントロールがインスタンス化されて貼り付いて動作している。 うーん、どうなっている? 自分の PC は昨年末に Windows 7 Pro (x86) にクリーンインストールしたばかり。 同僚の PC は未だ Windows XP Pro SP3 である。 PC の各種構成は、Active Directory 傘下、グループポリシーで配信されていることを考えると、環境設定によるものではなさそうな気がする。 となると、OS の差なのか? もう Windows 7 (ないしはその上の IE 8 )では、HTML ページに Windows フォームユーザーコントロールを貼り付けることは許されないのだろうか...(*1) ...と思案に暮れていたときに、ふと思い出したのが、WPFブラウザアプリケーション。 拡張子 .xbap ( Xaml Browse APplication の略? ) で表される、ブラウザ(といってもIEだが) のウィンドウ内で動作する .NET アプリケーションの一形態だ(以下、XBAP と表記する)。 XBAP は ClickOnce の一種なのだが、独立したウィンドウを持つわけではなく、スタートメニューにも登録されず、Webサーバー上に配置したこのXBAP へのURLを開くことで IE のウィンドウ内でのみ動作する(*2)。 見た目はまるっきり HTML ページのようなものだ。 "ブラウザ内で動く" という意味では、Silverlight と似てはいる。 しかし、Sliverlight は ( 3 からはブラウザ外実行があるとはいえ ) 結局は HTML ページ内の object タグに過ぎないのに比べ、XBAP は IE のウィンドウ内にこそはめ込まれているものの、HTMLページは一切存在せず、HTML ページに埋まっているわけではない。 また Silverlight はクライアントの OS は Windows のみならず、Mac OS や Moonlight によって Linux 上でも動作する。 ブラウザだって、IE だけではなく、Firefox や Chrome でも動作する。 加えて、CLR のサブセットを内蔵しているのでクライアントOS への .NET Framework ランタイムのインストールは無用である。 しかし、XBAP はあくまでも ClickOnce の一種。 クライアント OS に .NET Framework がインストールされていることが必要である。 Mono の事情はよく知らないが、事実上、Windows OS & IE の組み合わせに限定されるのだろう。 そんな XBAP だが、Silverlight との最大の違いは、XBAP は完全信頼、すなわち、ローカルにインストールされた通常の .NET アプリケーション (.exe) と同等のセキュリティ権限で動作することが可能、という点である。 Silverlight も 4 からはブラウザ外実行における権限昇格によってかなりいろいろなことができるそうで、"アプリケーションのプラットフォーム" として注目している。 しかし、Silverlight 4 は今日現在まだリリースされたわけではなく、また、権限昇格はあくまでもブラウザ外実行に限られるし、"完全信頼" というわけではないようだ。 いっぽうの XBAP はブラウザウィンドウ内にはめ込まれたまま完全信頼で動作させることが可能。 通常の Web アプリケーション・HTML ページ上から XBAP にジャンプしてきても、一貫してブラウザ内での動作であるため、ユーザー体験的には HTML なのか XBAP なのかの区別なく操作できてなかなかなよいのである。 XBAP を完全信頼で動作させるには、詳しくは下記サイトが参考になる。 http://blogs.microsoft.co.il/blogs/maxim/archive/2008/03/05/wpf-xbap-as-full-trust-application.aspx (このページは、"XBAP 完全信頼" で検索して、.NET Framework フォーラムのスレッドにヒットして見つけた。) ポイントをかいつまんで書くと、次のとおり。
加えて、LAN 内の Active Directory 傘下の全クライアントPCには、グループポリシーによって、各種証明書を「信頼されたルート証明機関」「信頼された発行元」に登録するよう配信することもお茶の子さいさい。 シスアドなら自分の席でマウス片手で実行できる。 こうして、.NET Windows フォームユーザーコントロールを利用していた件の Web アプリケーションは、XBAP としてリプレースに成功したのであった。 ということで、今更ながら、XBAP に開眼した次第。 白状すると、実は、XAML をちゃんと書くのはこれが初めてである。 しかしこうして XBAP に目覚めた今後は、さらに XAML に触れる機会が増えることと思う。 実際、現在稼働している .exe 形式の .NET Windows フォームアプリを、XBAP にリプレースすることまで思案中だ。 そして、こうして XAML に慣れてくることは、Silverlight 対応への布石にもつながる。 *1) 実はこれは勘違いだったかもしれない。グループポリシー配信のほうが誤っていた可能性が浮上してきたのだ。なので、Win7であろうと、適切な環境構築ができていれば、ちゃんと Winフォームを貼り付けできていたかもしれない。 *2) 必ずしも Web サーバー上に配置して HTTP,HTTPS プロトコル経由でダウンロードする、という必要はない。ファイルシステム上に配置した .xbap ファイルを、エクスプローラからダブルクリックで開いても、IEが立ち上がって動作する。
by developer-adjust
| 2010-01-05 22:35
| .NET
|
Comments(2)
Commented
by
naoki
at 2010-01-06 11:11
x
XBAP悪くはないんですが、詰め込み過ぎると激重になりやすいのと、ロードまでに時間がかかること、ドラッグ&ドロップの制約等、意外と制約多いので気を付けた方がいいですよー。
数年前調べたところ、モーダルなウィンドウを作れなかったような… まぁ自分がマニアックな使い方しようとしてたからなので気にならないかもしれませんが参考までに。
0
Commented
by
developer-adjust at 2010-01-06 12:59
そうですね、初回のロードには数秒ほど時間がかかる(ロード中のプログレスバー付きの画面が表示される)のを確認しております。
しかし、いったんダウンロードキャッシュに格納されたら、2回目以降は瞬速で起動するようです。 幸い、自分のケースでは、そんなに重いアプリはXBAP化しないので無難そうです。 ドラッグ&ドロップとか、モーダルウィンドウとか、完全信頼モードでも制約あるんでしょうかね。 実は近々、進捗状況を表示するモーダルダイアログを表示させるつもりなので、そこでなにかわかりましたら、またブログ記事投稿したいと思います。
|
ファン申請 |
||