Pregunta

La aplicación My Flash (AS3 / AIR) actualmente utiliza una arquitectura poco habitual (para una aplicación Flash) para proporcionar clases base particulares para contenido cargado en tiempo de ejecución. El contenido externo se publica con clases base 'stub', que son eclipsadas por las clases base 'reales' en el tiempo de ejecución cuando se carga. He escuchado que Adobe hace referencia a esto como bootstrapping ( pdf ), y ha estado funcionando muy bien para mí hasta ahora. No es diferente a una arquitectura DLL, aunque no estoy calificado para decirlo con seguridad.

Hasta ahora, el contenido externo que he estado cargando se ha cargado desde el mismo SecurityDomain (mismo sandbox), lo que me permite cargar fácilmente el contenido en un ApplicationDomain . Desafortunadamente, por lo que puedo decir, un ApplicationDomain que abarca el SecurityDomain s no puede estar relacionado, es decir, no puedo hacer que un AppDom de un SecurityDom sea el hijo de un AppDom de otro SecurityDom.

Pero ahora necesito cargar este contenido externo desde fuera de mi Sandbox de aplicaciones. Hay muchas formas de lograr la comunicación entre los SecurityDomain , aunque la mayoría de ellos son muy limitados, la API de sandboxBridge de AIR es probablemente la más poderosa. Desafortunadamente, ninguno de estos métodos de comunicación me permite lograr esta arquitectura de arranque.

Observo que el objeto LoaderContext tiene una propiedad securityDomain , pero la seguridad de Flash prohíbe que los 'swfs locales' la toquen (lanza un SecurityError o similar).

SWFLoader de Flex tiene una propiedad trustContent que parece prometedora, pero me inclino a asumir que tiene las mismas restricciones que la configuración del SecurityDomain en el Loader 's LoaderContext .

Sospecho que tendré que rediseñar (lo cual no será fácil), pero pensé que solo había comprobado aquí que no me he perdido algo en mi investigación.

Entonces ... ¿alguna idea o perla de sabiduría? Me encantaría especialmente si alguien de Adobe que trabaja en el modelo de Seguridad pudiera darme un definitivo " sí / no puede / no puede hacerse " ...

Gracias de antemano!

Addendum: Desde entonces he decidido volver a diseñar la arquitectura para que todo el arranque se realice en el dominio externo. Mi pregunta sigue en pie, sin embargo, por curiosidad.

¿Fue útil?

Solución 2

Al momento de escribir este artículo, determiné que no puede cargar un ApplicationDomain en su propio SecurityDomain si es de otro dominio, incluso con AIR.

Por diseño, supongo.

Otros consejos

Hablando técnicamente, ¿no sería posible que su aplicación AIR simplemente guarde los SWF externos en el directorio de su aplicación y los cargue desde allí para que vivan en el mismo entorno limitado de seguridad?

Sin embargo, hay algunas razones realmente obvias por las que esto podría ser Bad Karma, por lo que parece que cualquier solución plantea necesariamente la cuestión de si tratar de colocar el contenido de la aplicación local y el contenido no confiable remoto en el mismo dominio de la aplicación es el enfoque correcto de la arquitectura. ..?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top