Приложение My Flash (AS3 / AIR) в настоящее время использует немного необычную архитектуру (для приложения Flash) для предоставления определенных базовых классов для загруженного содержимого во время выполнения. Внешний контент публикуется с базовыми классами-заглушками, которые затмеваются реальными базовыми классами во время выполнения при его загрузке. Я слышал, что Adobe называет это bootstrapping ( pdf ), и до сих пор это работало очень хорошо для меня. Я полагаю, что это мало чем отличается от архитектуры DLL, хотя я не могу сказать наверняка.
До сих пор загружаемый мною внешний контент загружался из одной и той же SecurityDomain
(той же песочницы), что позволяет мне легко загружать содержимое в дочерний ApplicationDomain
. К сожалению, насколько я могу судить, ApplicationDomain
s, которые охватывают SecurityDomain
s, не могут быть связаны, то есть я не могу сделать AppDom одного SecurityDom дочерним для AppDom от другого SecurityDom.
Но теперь мне нужно загрузить этот внешний контент извне моей изолированной программной среды для приложений. Существует множество способов установить связь между SecurityDomain
s - хотя большинство из них очень ограничены, API AIR sandboxBridge
, вероятно, является наиболее мощным. К сожалению, ни один из этих способов коммуникации не позволяет мне достичь этой архитектуры начальной загрузки.
Я заметил, что объект LoaderContext
имеет свойство securityDomain
, но безопасность Flash запрещает "локальным swfs" прикасаться к нему (он выдает SecurityError
или подобное).
В Flex SWFLoader
есть свойство trustContent
, которое выглядит многообещающим, но я склонен предположить, что оно имеет те же ограничения, что и установка SecurityDomain
в Loader
LoaderContext
.
Я подозреваю, что мне придется изменить дизайн (что будет нелегко), но я подумал, что просто проверю здесь, что я ничего не пропустил в своем исследовании.
Так ... есть идеи или жемчужины мудрости? Мне бы очень понравилось, если бы кто-то из Adobe, работающий над моделью безопасности, мог дать мне однозначное «да / нет, это может / не может быть сделано» ...
Заранее спасибо!
Приложение: С тех пор я решил перестроить архитектуру так, чтобы все начальные загрузки происходили во внешнем домене. Однако мой вопрос до сих пор стоит из любопытства.