& # 8220; Бутстрапирование & # 8221; удаленный SWF-файл в приложение SecurityDomain (actionscript3)

StackOverflow https://stackoverflow.com/questions/224422

Вопрос

Приложение My Flash (AS3 / AIR) в настоящее время использует немного необычную архитектуру (для приложения Flash) для предоставления определенных базовых классов для загруженного содержимого во время выполнения. Внешний контент публикуется с базовыми классами-заглушками, которые затмеваются реальными базовыми классами во время выполнения при его загрузке. Я слышал, что Adobe называет это начальной загрузкой ( pdf ), и до сих пор это работало очень хорошо для меня. Я полагаю, что это мало чем отличается от архитектуры DLL, хотя я не могу сказать наверняка.

До сих пор загружаемое мной внешнее содержимое загружалось из того же SecurityDomain (та же песочница), что позволяет мне легко загружать содержимое в дочерний ApplicationDomain . К сожалению, насколько я могу судить, ApplicationDomain , которые охватывают SecurityDomain , не могут быть связаны, то есть я не могу сделать AppDom одного SecurityDom дочерним для AppDom из другого SecurityDom.

Но теперь мне нужно загрузить этот внешний контент извне моей изолированной программной среды приложения. Существует множество способов установить связь между SecurityDomain - хотя большинство из них очень ограничены, API-интерфейс sandboxBridge в AIR, вероятно, является наиболее мощным. К сожалению, ни один из этих способов коммуникации не позволяет мне достичь этой архитектуры начальной загрузки.

Я заметил, что объект LoaderContext имеет свойство securityDomain , но защита Flash запрещает касаться его «локальным swfs» (выдает ошибку SecurityError или аналогичный).

Flex SWFLoader имеет свойство trustContent , которое выглядит многообещающим, но я склонен предположить, что оно имеет те же ограничения, что и установка SecurityDomain в LoaderContext Loader .

Я подозреваю, что мне придется изменить дизайн (что будет нелегко), но я подумал, что просто проверю здесь, что я ничего не пропустил в своем исследовании.

Итак ... есть идеи или жемчужины мудрости? Мне бы очень понравилось, если бы кто-то из Adobe, работающий над моделью безопасности, мог дать мне окончательный ответ "да / нет, это можно / нельзя сделать" ...

Заранее спасибо!

Addendum: С тех пор я решил изменить архитектуру, чтобы все начальное загрузочное обновление происходило во внешнем домене. Однако мой вопрос все еще стоит из любопытства.

Это было полезно?

Решение 2

На момент написания я решил, что вы не можете загрузить ApplicationDomain в свой собственный SecurityDomain , если он из другого домена, даже с AIR.

По замыслу, я думаю.

Другие советы

С технической точки зрения, может ли ваше приложение AIR просто сохранить внешние SWF-файлы внутри каталога приложения и загрузить их оттуда, чтобы они находились в одной изолированной программной среде безопасности?

Однако есть несколько действительно очевидных причин, по которым это может быть «плохой кармой», поэтому кажется, что любое решение обязательно поднимает вопрос о том, является ли попытка поместить контент локального приложения и удаленный ненадежный контент в один домен приложения правильным подходом к архитектуре ..

scroll top