私の Flash (AS3/AIR) アプリケーションは現在、(Flash アプリの) 少し変わったアーキテクチャを使用して、実行時に読み込まれたコンテンツに特定の基本クラスを提供しています。外部コンテンツは「スタブ」基本クラスで公開されますが、実行時に読み込まれると「実際の」基本クラスによって隠されます。Adobe ではこれをブートストラップ( pdf )と呼んでいると聞いたことがありますが、これまでのところ非常にうまく機能しています。確かなことを言う資格はありませんが、私が信じている DLL アーキテクチャと同じです。
これまでロードしていた外部コンテンツは、同じSecurityDomain
(同じサンドボックス) 内からロードされていたため、 child 内のコンテンツを簡単にロードできましたApplicationDomain
。残念ながら、私が知る限り、ApplicationDomain
s にまたがるSecurityDomain
s は関連付けることができません。つまり、ある SecurityDom の AppDom を別の SecurityDom の AppDom の子にすることはできません。
しかし、今度はこの外部コンテンツをアプリケーション サンドボックスの外からロードする必要があります。を介して通信を行う方法はたくさんありますがSecurityDomain
、そのほとんどは非常に限定されていますが、AIR のsandboxBridge
API はおそらく最も強力です。残念ながら、これらの通信方法では、このブートストラップ アーキテクチャを実現することはできません。
LoaderContext
オブジェクトにプロパティがあることに気付きましたsecurityDomain
が、Flash セキュリティにより、「ローカル swfs」がオブジェクトに触れることが禁止されています (SecurityError
または同様のものがスローされます)。
Flexには有望に見えるプロパティSWFLoader
がありますが、 で を設定するのtrustContent
と同じ制限があると思いがちです。SecurityDomain
Loader
LoaderContext
再設計する必要があると思いますが (これは簡単ではありません)、調査で何かを見逃していないことをここで確認したいと思います。
それで... アイデアや知恵の真珠はありますか?セキュリティモデルに取り組んでいるアドビの誰かが決定的な「はい/いいえ、できます/できません」と言ってくれたら、特にうれしいです...
前もって感謝します!
補遺:それ以来、ブートストラップがすべて外部ドメインで行われるように、アーキテクチャを再設計することにしました。しかし、私の質問はまだ好奇心から立っています。