Fluorine, uma alternativa de Flash Remoting com ASP.NET

Nos tempos em que o Flash ainda era da Macromedia, foi criada a especificação AMF (ActionScript Message Format), para facilitar a comunicação entre o ActionScript e as demais linguagens Server-side (Gateway, mais a diante vamos ver que o que controla a comunicação entre o ActionScript e o ASP.NET é com.TheSilentGroup.Fluorine.FluorineGateway). Temos hoje várias linguagem com alguma biblioteca que implemente AMF como por exemplo o PHP, Java, ColdFusion e também o ASP.NET. Existe uma alternativa de remoting muito boa para quem trabalha com PHP que é o AMFPHP, para quem o conhece será fácil entender o funcionamento do Fluorine. E para quem não o conhece tenho certeza de que vão encontrar muito material sobre ele na Internet.

Hoje em dia já estamos na versão 3 da AMF e a Fluorine também implementa bibliotecas para uso desta versão de AMF.

Vamos ao tutorial.

Nosso primeiro passo será o download do Fluorine no link a seguir: http://fluorine.thesilentgroup.com/fluorine/download.html
Não vou dar detalhes da instalação porque é sempre a mesma coisa de Next, Next e Finish.

Após realizada a instalação do Fluorine, vamos abrir o Visual Studio e criar uma nova aplicação web File -> New -> Web Site, selecione Fluorine ASP.NET Web Application, como mostrado na figura seguinte:

Sua Solution Explorer deve se parecer com esta imagem:

Abra o arquivo Sample.cs (dentro de App_Code), vamos utiliza-lo em nosso primeiro teste do Fluorine.
Observe que a classe Sample está dentro do namespace www e que possui um método chamado Echo que retorna uma string e precisa de um parâmetro. O método pega a string do parâmetro (text), concatena com “Gateway echo: ” e retorna.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using com.TheSilentGroup.Fluorine;

namespace www
{
    [RemotingService("Fluorine sample service")]
    public class Sample
    {
        public Sample() { }

        public string Echo(string text)
        {
            return "Gateway echo: " + text;
        }
    }
}

Pressione F5 para rodar a aplicação, clique sob o arquivo Console.aspx, note que você foi redirecionado para Fluorine.aspx, o Service Browser do Fluorine, deve se parecer com a imagem seguinte:

Você pode clicar no link “• www.Sample” para ver a especificação dos métodos e também obter um exemplo de código em ActionScript 1 e 2 que já roda os métodos da classes Sample.

Para dizer ao Fluorine que você quer que determinada classe seja acessada por Flash é só você importar “com.TheSilentGroup.Fluorine” (using com.TheSilentGroup.Fluorine;), e colocar o atributo “[RemotingService("Descrição")]” na classe. Fique atento que feito isso, o Fluorine só vai mostrar no Service Browser os métodos publicos da classe, é claro que sem contar o construtor.
Veja como o Service Browser detalha os métodos das classes e já deixa um exemplo de Script para utilizarmos no Flash:

Visto que o Service Browser já gera o código correspondente em ActionScript 1 e 2, vamos deixar o nosso tutorial mais interessante e mostrar uma forma de fazer as devidas chamadas em ActionScript 3.0. Abra o Flash, e cria um arquivo novo, no primeiro frame do Flash insira o código a seguir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import flash.net.*;

function onResult(responds:Object):void {
    trace("onResult: " + responds);
}

function onFault(responds:Object):void {
    trace("fault " + responds.toString());
}

var responder : Responder = new Responder(onResult, onFault);

var gateway : NetConnection = new NetConnection();
gateway.connect("http://localhost:2471/www/Gateway.aspx");
gateway.call("www.Sample.Echo", responder, "Primeiro teste do Fluorine!");

Fique atento quanto ao endereço do Gateway.aspx, pois no nosso exemplo estou utilizando o endereço que o próprio Visual Studio cria quando rodamos a aplicação, por isto que temos esta portar “maluca” (http://localhost:2471).

Depois que você rodar a aplicação no Visual Studio, pegar o endereço gerado por ele, colar o endereço dentro de ‘gateway.connect(“ENDEREÇO“);’ e exportar o flash, você deve receber a mensagem “onResult: Gateway echo: Primeiro teste do Fluorine!”. Se foi exatamente isso que aconteceu, uueebá! Você acabou de fazer o seu primeiro teste de Flash Remoting com ASP.NET utilizando Fluorine!!! Fácil não?

Agora vamos entender cada linha de código desse nosso ActionScript 3.0:
1ª – Importamos todas as classes que nos ajudam a efetuar conexões do Flash com o “Mundo Externo”.
3ª à 9ª – Criamos as funções de callback que vão receber as respostas da nossa requisição.
11ª – Criamos um Responder para armazenar as nossas funções de respostas (onResult e onFault).
13ª – Criamos o nosso gateway, responsável pela comunicação com o Fluorine.
14ª – Conectamos o nosso gateway ao Serviço do Fluorine.
15ª – Efetuamos a chamada para o método Echo da classe Sample que se encontra no namespace www, passamos como segundo parâmetro o Responder (criado na linha 11) e como 3º parâmetro passamos o uma string, pois o método Echo precisa de uma string para funcionar.

É isso ai pessoal, espero ter ajudado aqueles que precisam da combinação Flash + ASP.NET, como foi o meu caso, pois já conhecia o AMFPHP mas no meu trabalho atual utilizamos ASP.NET.

No próximo post vou mostrar como transferir um bitmap do Flash para o Fluorine, agora a coisa vai ficar boa :)

Link para download do projeto:
http://blog.bsoares.com.br/wp-content/uploads/2009/03/20080202_projeto.zip

Links relacionados:
• Fluorine: http://fluorine.thesilentgroup.com/fluorine
• Fluorine download: http://fluorine.thesilentgroup.com/fluorine/download.html
• Flash Remoting: http://www.adobe.com/devnet/flashremoting/
• AMF3: http://osflash.org/documentation/amf3
• AMFPHP: http://www.amfphp.org
• Gateway: http://pt.wikipedia.org/wiki/Gateway


Posts relacionados:

  1. JPEG Encoder (AS3) + FluorineFx .NET Flash Remoting Gateway
  2. JPGEncoder (AS3) com AMFPHP
  3. Vector em AS3 para Flash Player 10
  4. Operações binárias
  5. Flickr – Buscar fotos por Tag com ActionScript

  1. Daniel Schmitz disse:

    Olá, , que pena nenhum comentário para um artigo tão baum! parabémsss

  2. Bruno Soares disse:

    Obrigado Daniel,
    Este post já teve comentários (no meu blog antigo..), mas quando transferi para este aqui, perdi =/

    Valew Daniel

  3. Pedro Martins disse:

    Grande ajuda.. bastante detalhado… obrigado por este post

  4. Vitor disse:

    Olá, estou desenvolvendo uma aplicação (asp.net + Fluorine), a aplicação funciona normalmente local… mas quando coloco os arquivos na rede e tento rodar o asp .net (pelo visual studio) ocorre um erro “Mensagem de Erro do Analisador: Falha na solicitação da permissão de tipo ‘System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken”

    Linha 19:
    Linha 20:
    Linha 21:
    Linha 22:
    Linha 23:

    linha 21

    sabe o que pode ser?

  5. Diego Marques disse:

    Artigo de grande ajuda…muito bom parabéns!
    Uma dúvida somente, quando publico minha aplicação tem como não permitir o acesso ao console do fluorine?
    Restringir o acesso a página fluorine.aspx
    Obrigado

    • Diego Marques disse:

      Acho que encontrei!
      Para quem quiser saber…no web.config existe esta tag

      • Diego Marques disse:

        continuação da tag…
        excludedPaths
        add path=”FluorineWebResource.axd”
        add path=”FluorineCodeGenerator.aspx”
        add path=”ScriptResource.axd”
        excludedPaths

        Tirei os sinais senão não entra no post

  1. There are no trackbacks for this post yet.

Leave a Reply