Question

L'application My Flash (AS3 / AIR) utilise actuellement une architecture légèrement inhabituelle (pour une application Flash) afin de fournir des classes de base particulières pour le contenu chargé au moment de l'exécution. Le contenu externe est publié avec les classes de base 'stub', qui sont éclipsées par les classes de base 'réelles' lors de son chargement. J'ai entendu cela sous le nom de bootstrapping ( pdf ), et cela a très bien fonctionné pour moi jusqu'à maintenant. Ce n’est pas sans rappeler une architecture de DLL, même si je ne suis pas qualifié pour le dire.

Jusqu'à présent, le contenu externe que j'ai chargé était chargé depuis le même SecurityDomain (même sandbox), ce qui me permettait de charger facilement le contenu dans un enfant ApplicationDomain . Malheureusement, pour autant que je sache, un ApplicationDomain qui s'étend sur SecurityDomain ne peut pas être associé - c'est-à-dire que je ne peux pas transformer un AppDom d'un SecurityDom en un enfant d'un AppDom. depuis un autre SecurityDom.

Mais maintenant, je dois charger ce contenu externe depuis l'extérieur de mon sandbox d'applications. Il existe de nombreuses façons de réaliser la communication entre SecurityDomain - bien que la plupart d'entre elles soient très limitées, l'API sandboxBridge d'AIR est probablement la plus puissante. Malheureusement, aucune de ces méthodes de communication ne me permet de réaliser cette architecture de démarrage.

Je remarque que l'objet LoaderContext a une propriété securityDomain , mais la sécurité Flash interdit à 'swfs locaux' de le toucher (il génère un SecurityError ou similaire).

Le SWFLoader de Flex possède une propriété trustContent qui semble prometteuse, mais je suis enclin à supposer que les mêmes restrictions s'appliquent que la définition du SecurityDomain dans le LoaderContext de Loader .

Je pense que je devrai refondre (ce qui ne sera pas facile), mais je pensais simplement vérifier ici que mes recherches n'ont pas manqué.

Alors ... des idées ou des perles de sagesse? J'adorerais surtout si un membre d'Adobe qui travaille sur le modèle Sécurité pouvait me donner un code définitif "oui / non, cela peut / ne peut pas être fait" ...

Merci d'avance!

Addendum: J'ai depuis décidé de redéfinir l'architecture pour que l'amorçage se produise entièrement sur le domaine externe. Ma question reste cependant, par curiosité.

Était-ce utile?

La solution 2

Au moment de la rédaction de ce document, j’ai constaté qu’il était impossible de charger un ApplicationDomain dans votre propre SecurityDomain s’il provenait d’un autre domaine, même avec AIR.

Par conception, je suppose.

Autres conseils

Techniquement, votre application AIR ne pourrait-elle pas simplement sauvegarder les fichiers SWF externes présents dans votre répertoire d'applications et les charger à partir de cet emplacement afin qu'ils résident dans le même sandbox de sécurité?

Cependant, il existe des raisons vraiment évidentes pour lesquelles il s'agirait d'un Bad Karma. Il semble donc que toute solution soulève nécessairement la question de savoir si essayer de placer le contenu d'applications locales et le contenu distant non approuvé dans le même domaine d'applications constitue la bonne approche en matière d'architecture. ..?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top