Pergunta

aplicativo My Flash (AS3 / AIR) está usando uma arquitetura um pouco incomum (para um aplicativo Flash) para fornecer determinadas classes base para conteúdo carregado em tempo de execução. O conteúdo externo é publicado com as classes 'rascunho' de base, que são eclipsada pelas classes de base 'reais' em tempo de execução quando é carregado. Eu já ouvi essa referido pela Adobe como bootstrap ( pdf ), e ele tem trabalhado muito bem para mim até agora. Não é diferente de uma arquitetura de DLL creio eu, embora eu não sou qualificado para dizer com certeza.

Até agora, o conteúdo externo eu tenho sido de carga foi carregado dentro do mesmo SecurityDomain (mesmo sandbox), o que me permite carregar facilmente o conteúdo em um ApplicationDomain criança. Infelizmente, tanto quanto eu posso dizer, um ApplicationDomains que SecurityDomains extensão não podem ser relacionados -. Que é, eu não posso fazer uma AppDom de um SecurityDom a criança de um AppDom de outro SecurityDom

Mas agora eu preciso carregar este conteúdo externo a partir de fora da minha sandbox do aplicativo. Há muitas maneiras de conseguir uma comunicação através SecurityDomains - embora a maioria deles são muito limitados, sandboxBridge API do AIR é provavelmente o mais poderoso. Infelizmente, nenhum destes métodos de comunicação permitem-me para alcançar essa arquitetura bootstrapping.

Eu noto que o objeto LoaderContext tem uma propriedade securityDomain, mas a segurança do Flash proíbe 'swfs locais' de tocá-lo (ele lança um SecurityError ou similar).

SWFLoader do Flex tem uma propriedade trustContent que parece promissor, mas eu estou inclinado a supor que ele tem as mesmas restrições que definir o SecurityDomain em Loader do LoaderContext.

Eu suspeito que vou ter que redesenhar (que não será fácil), mas eu pensei que eu tinha acabado de verificar aqui que eu não perdi alguma coisa na minha pesquisa.

Então ... quaisquer ideias ou pérolas de sabedoria? Eu especialmente em pânico amor que se alguém da Adobe que trabalha no modelo de segurança poderia me dê um direito "sim / não pode / não pode ser feito" ...

Agradecemos antecipadamente!

Adenda: Eu já decidiu re-projetar a arquitetura para que o bootstrapping tudo acontece no domínio externo. A minha pergunta ainda permanece, no entanto, por curiosidade.

Foi útil?

Solução 2

No momento da escrita, eu determinei que você não pode carregar um ApplicationDomain em seu próprio SecurityDomain se for de outro domínio, mesmo com o ar.

Por design, eu acho.

Outras dicas

Tecnicamente falando, não seria possível para o seu aplicativo AIR para simplesmente salvar os SWFs externos dentro do seu diretório de aplicativos, e carregá-los de lá para que eles vivem na mesma sandbox de segurança?

No entanto, existem algumas razões muito óbvias porque esta seria mau Karma, então parece que qualquer solução levanta necessariamente a questão de se tentar colocar o conteúdo do aplicativo local e remoto de conteúdo não confiável para o mesmo domínio de aplicativo é a abordagem de arquitetura direito ..?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top