0

我的 Flash (AS3/AIR) 应用程序目前使用一种稍微不寻常的架构(对于 Flash 应用程序)来为运行时加载的内容提供特定的基类。外部内容是使用“存根”基类发布的,在加载时会在运行时被“真实”基类所掩盖。我听说这被 Adob​​e 称为bootstrapping ( pdf ),直到现在它对我来说一直运行良好。我相信它与 DLL 架构没有什么不同,尽管我没有资格肯定地说。

到目前为止,我一直在加载的外部内容是从同一个SecurityDomain(同一个沙箱)中加载的,这使我可以轻松地将内容加载到 childApplicationDomain中。不幸的是,据我所知,ApplicationDomain跨度SecurityDomains 的 s 不能相关 - 也就是说,我不能使一个 SecurityDom 的 AppDom 成为另一个 SecurityDom 的 AppDom 的子项。

但现在我需要从我的应用程序沙箱外部加载这些外部内容。有很多方法可以实现跨SecurityDomains 的通信——尽管其中大多数都非常有限,但 AIR 的sandboxBridgeAPI 可能是最强大的。不幸的是,这些通信方法都不允许我实现这种引导架构。

我注意到该LoaderContext对象有一个securityDomain属性,但 Flash 安全性禁止“本地 swfs”触摸它(它会抛出一个SecurityError或类似的)。

Flex'sSWFLoader有一个trustContent看起来很有希望的属性,但我倾向于假设它与SecurityDomainLoader's中设置的限制相同LoaderContext

我怀疑我将不得不重新设计(这并不容易),但我想我只是在这里检查一下我没有错过我的研究中的任何东西。

那么......任何想法或智慧的珍珠?如果从事安全模型工作的 Adob​​e 人员能给我一个明确的“是/否,它可以/不能完成”,我会特别喜欢它......

提前致谢!

附录:从那以后,我决定重新设计架构,以便引导全部发生在外部域上。然而,出于好奇,我的问题仍然存在。

4

2 回答 2

1

从技术上讲,您的 AIR 应用程序不能简单地将外部 SWF 保存在您的应用程序目录中,然后从那里加载它们以便它们存在于同一个安全沙箱中吗?

然而,这将是 Bad Karma 有一些非常明显的原因,所以似乎任何解决方案都必然会提出一个问题,即尝试将本地应用程序内容和远程不受信任的内容放入同一个应用程序域是否是正确的架构方法..?

于 2008-10-23T05:57:49.033 回答
1

在撰写本文时,我确定如果它来自另一个域,即使使用 AIR ,您也无法将其加载ApplicationDomain到您自己的域中。SecurityDomain

我猜是设计使然。

于 2009-09-02T03:04:47.883 回答