22 de mai de 2009

ServicesManager.as - Apontando Endpoints em diferentes ambientes

Quando desenvolvemos um projeto, deveriamos ter vários ambientes, podendo ser o de desenvolvimento, teste, homologação e finalmente produção. Isto gera um desconforto em relação aos endpoints.
Para resolver o problema, criei uma classe "ServicesManager.as", bem simples, mas funcional, podendo ser melhorada, e com isso, configurar esses endpoints através de um xml "ConfigServices.xml".

Para sua utilização seguimos os passos:

1-Em nossa aplicação, adicionamos o serviço apontando para o ConfigServices.xml;

    < mx:httpservice id="configServices" url="ConfigServices.xml">
             result="{setServices(event)}" resultFormat="xml"/>

2-No evento, da aplicação, creationComplete="{init();}" executamos a chamada para o serviço;

    private function init():void 
    {
        configServices.send();
    }

3- Tratamos então o result em setServices(event):

    private function setServices(event:ResultEvent):void
    {
        var servicesManager:ServicesManager = new ServicesManager();
        servicesManager.xml = XML(event.result);

        //Para cada serviço em nossa aplicação, fazemos uma chamada 
        //Por exemplo:
        srvPHP.channelSet = servicesManager.channelSet;
        servicesManager.destinationSet(srvPHP);

        srv.channelSet = servicesManager.channelSet;
        servicesManager.destinationSet(srv);

4- Agora é só manter uma copia de ConfigServices.xml em cada servidor, configurado conforme os respectivos endpoints, configurados no services-config.xml de cada ambiente.

Faça o download e importe o projeto no Flex Builder 



1 de abr de 2009

Fingerprint - Biometria AIR Flex e BlazeDS

Biometria em Flex/AIR? Sim, isso mesmo! É possível! Respondendo a vários questionamentos que encontrei na rede. E já existe. Foram muitas horas, muitos testes, mas finalmente concluído. 
Conforme os requisitos de um cliente, desenvolvi componentes, onde a interface em Flex ou AIR pode receber informações de um leitor de digitais,  funciona com várias marcas de leitores, recebe o template da digital, faz comparação na máquina cliente, ou localiza o registro relacionado na base de dados em um servidor remoto, HTTP/BlazeDS/RPC, reduzindo o tráfego na rede. É utilizada a tecnologia da brasileira Griaule, que hoje é uma referência em todo o mundo quando se fala em biometria.

Possibilidades:
1 - Comparar no cliente.
Tendo dois templates, pode-se envia-los ao componente e terá como retorno de uma verificação, um boolean.

2 - Comparar no servidor.
Disponibilizada uma base de dados em servidor, pode-se enviar através de alguma tecnologia de serviços, o template capturado no cliente, fazer um loop na base, comparando e identificando o registro correspondente. Essa forma pode ser um pouco demorada, quando se tem milhares de registros nesta base, por esse motivo, pode-se enviar um parametro extra, que seja utilizado para filtrar os possíveis registros, tipo o número do cartão de convênio saúde.


AMF Socket / Flex-Java

Nesses tempos, para atender uma necessidade em um projeto, precisei comunicar Flex e Java via socket, foi aí que encontrei o projeto Merapi , um bridge entre Web e Desktop. Infelizmente está parado na versão alpha, até funcionou, mas existem alguns problemas, tipo, quando a conecção era encerrada, entrava em algum loop, e uso da CPU ía a 100%, a porta TCP é fixa entrando em conflito com outras aplicações, e outras mais. Como não é disponibilizado o fonte e o projeto está parado, tive que desenvolver o meu próprio socket, com serialização AMF, onde trafego objetos do AS, utilizando para a serialização a tag [RemoteClass(alias="meuPackage.MinhaClasse")], deu um pouco de trabalho, mas já está em produção, testado em dois projetos de um grande cliente. Disponibilizarei as bibliotecas aqui, não sei de que forma ainda, mas será em breve.

Começar a postar

 Tava na hora de eu começar a postar na rede, não sei ainda utilizar os recursos, rs...depois de 30 anos em TI, e não saber blogar.