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

『漏れのある抽象化の法則』の世界の話.
ローカルにはうまく行っているように見えて,全体としてはまるでうまく行かないことがあります.
例えば,以下の問いはいずれも局所的には Yes が正解です.

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

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

さて,ルール説明は以上で終了です.
それでは次の絵から間違いを見つけてください.












この辺の『漏れ』の問題,結構やばいところまで来ている思ってるんですけどね..NET Framework 1.0 が Windows Vista で正式サポートされないどころじゃないというか.
例えば,Flash のようなコンポーネントDirect3D 7 を使っていたとして,Internet Explorer でそういうページをぽんと開くと.んで,今度は次に別のタブで XAML を読み込もうとするとクラッシュ,なんてことが起きても不思議じゃない状況です.
他にも,Visual Studio 2005 用のアドインである "Cider" は,Visual Studio 2005 上で WPFWYSIWYG 開発を実現してくれますが,これ,XAML 開いた瞬間に,d3d9.dll 等の DLL を devenv.exe のプロセス内にロードしているわけです.もし仮に,Visual Studio のアドインで Direct3D 7 を使ったものがあったりしたらどうなるでしょう? と.