Hatena::ブログ(Diary)

NyaRuRuの日記 RSSフィード

archive

2006-10-19 Diamond of Death

In-Process コンポーネント技術の限界

『漏れのある抽象化の法則』の世界の話.

ローカルにはうまく行っているように見えて,全体としてはまるでうまく行かないことがあります.

例えば,以下の問いはいずれも局所的には Yes が正解です.

  • Visual Studio は,Internet Explorer をホストできる (ブラウザを内部に表示することができる)
  • Visual Studio は,対応するバージョンの CLR をホストしている
  • Internet Explorer は,CLR をホストできる
  • Internet Explorer は ActiveX Plug-in をホストできる
  • WPF は内部的に Direct3D 9 を活用する

一方で,いくつかのコンポーネント技術には技術上の制約があります.例えば次のような.

  • 同一の Win32 プロセス内で,バージョンの異なる Direct3D を同時に使用することは想定されていない
  • 同一の Win32 プロセス内で,バージョンの異なる CLR を同時にホストすることはできない

さて,ルール説明は以上で終了です.

それでは次の絵から間違いを見つけてください.





この辺の『漏れ』の問題,結構やばいところまで来ている思ってるんですけどね..NET Framework 1.0 が Windows Vista で正式サポートされないどころじゃないというか.

例えば,Flash のようなコンポーネントが Direct3D 7 を使っていたとして,Internet Explorer でそういうページをぽんと開くと.んで,今度は次に別のタブで XAML を読み込もうとするとクラッシュ,なんてことが起きても不思議じゃない状況です.

他にも,Visual Studio 2005 用のアドインである "Cider" は,Visual Studio 2005 上で WPF の WYSIWYG 開発を実現してくれますが,これ,XAML 開いた瞬間に,d3d9.dll 等の DLL を devenv.exe のプロセス内にロードしているわけです.もし仮に,Visual Studio のアドインで Direct3D 7 を使ったものがあったりしたらどうなるでしょう? と.

社本@ワック社本@ワック 2006/11/10 21:41 複数バージョンのCLRがロードできるようにならない限り、Shell ExplorerがCLRをホストする(=シェル拡張が、.NET Frameworkで作成できるようになる)なんてことはできないでしょうね。

sha256sha256 2006/12/19 01:52 こんなこと言ってますねえ。
http://blogs.msdn.com/oldnewthing/archive/2006/12/18/1317290.aspx

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/NyaRuRu/20061019/p3