That's the point: você NÃO precisa se preocupar com o protocolo.

Por exemplo, supondo que queira usar um método de autenticação qualquer que não 
o provido "out-of-the-box", basta consumir o seguinte evento:

Public Shared Event AuthenticateEvent(ByVal userName As String, ByVal password 
As String, ByVal session As SessionManagement.Session, ByRef success As 
Boolean, ByRef message As String, ByRef handled As Boolean)


Ou seja, é bem mais alto nível... Você pega os dados que o usuário está te 
passando e devolve apenas sucesso (sim ou não) e uma mensagem a ser exibida no 
client. Pronto.

A idéia é fazer exatamente apenas o necessário (autenticar o usuário com a 
senha provida) e retornar algo para o client (sucesso ou não). Toda a 
infra-estrutura de transferência de dados, de validação, de exibição do 
resultado no client, tudo é feito automaticamente (claro, sempre com 
possibilidade de intervenção caso queira fazer algo mais customizado).

No final deste processo de autenticação, um evento é disparado no Flex dizendo 
que o usuário se autenticou (e as informações do usuário logado ficam 
disponíveis ao client).

Mas o "tcham" da coisa mesmo é: eu não preciso consumir o evento acima. Basta 
eu configurar minha base de dados para usar o ASP.Net SQL Membership e voilá! 
Ele autentica sozinho sem eu (no papel de programador do APLICATIVO) precisar 
fazer nada.


From: Mário Júnior 
Sent: Sunday, November 22, 2009 8:36 PM
To: flexdev@googlegroups.com 
Subject: [flexdev] Re: Novo framework


:)
Acho q o protocolo é o MAIS importante... é como vc irá dispor os dados.
Se quer algo gene'rico, entao terá q cair no uso de REST com xml ou json.

Se eu quiser adotar seu fw, terei q usar seu protocolo da mesma forma q terei 
de usar o AMF.
Nao sei qual o custo de usar Fluorine ou WebORB em se tratando de recursos de 
server, etc...
Em java, usar AMF com blazeds ou graniteds é só adicionar as dependencias 
(jars).

Enfim.... quanto ao restante da idéia - das funcionalidades -  acho q podem ser 
sim interessantes. Me parece (nao tenho certeza) que o LiveCycle ES 
(http://www.adobe.com/products/livecycle/) faz isso, com ferramentas de geracao 
de forms e auth.. tanto com componentes client-side como server-side, e com 
client para Flex/AIR (alguem pode confirmar, talvez o Saulo ou o Vicente :D)

No entanto, o LC ES é pago, e ainda nao vi nenhuma alternativa open-source.

Ultimamente ando muito sem tempo, mas a partir de 2010 coloquei como objetivo 
pessoal ingressar-me em algum projeto open-source, quem sabe ...

[]s.




2009/11/22 J.C.Ködel <jcko...@gmail.com>

  O protocolo aqui é o de menos.

  AMF é legal, mas necessita de um server (sei que existe o Fluorine e o WebOrb 
para .net, mas o Fluorine não é lá muito bom e o WebOrb é pago para fins 
comerciais) e o principal: não é genérico. Preciso de algo que seja genérico 
(não preso aos dados que o meu aplicativo opera) e que seja extensível.


  From: Mário Júnior 
  Sent: Sunday, November 22, 2009 8:11 PM
  To: flexdev@googlegroups.com 
  Subject: [flexdev] Re: Novo framework


  Fiquei curioso de uma coisa... o AMF já é compactado  - nao com Zlib -  pra q 
criar outro protocolo? 
  Ou ainda q o AMF nao use Zlib naturalmente, ainda é possivel compactá-lo 
usando zLib... entao, pq um novo protocolo e nao entao compactar o AMF???


  []s. 


  2009/11/22 J.C.Ködel <jcko...@gmail.com>

    Olá povo!

    Vou apresentar aqui um brinquedinho novo em que venho trabalhando. O 
intúito é ver se ele seria útil para outras pessoas (no caso abriria o 
código-fonte no CodePlex) e ter uma ajuda quanto à idéias, recursos, etc.

    Então, comecemos do começo:

    O intuito é fazer um framework que faça de tudo com o mínimo de esforço do 
programador. Queries, transferência de dados, grids, paginação, autenticação, 
enfim, o máximo de componentes inteligentes que resolvam os problemas comuns de 
um aplicativo, deixando o programador livre para programar o aplicativo em si, 
e não sua infraestrutura.

    Um pequeno demo pode ilustrar isso com mais detalhes: 
http://www.kodelsolutions.com/Maya

    No demo vemos uma janela de autenticação, com possibilidade de criação de 
novas contas, disparo de e-mails e recuperação de senha, além da escolha de 
linguagem utilizada no aplicativo e troca de senha.

    O aplicativo demo em si possui apenas 2 componentes neste ponto: 
AuthenticationWindow e ChangePasswordWindow. Ele consegue fazer toda a parte de 
autenticação, criação de contas etc. com apenas um componente, que é 
customizável (o logo do aplicativo, os botões que aparecem, até as abas que 
aparecem).

    O client (Flex neste exemplo, mas a idéia é fazer clients também em AIR e 
Silverlight) comunica-se com um servidor em .net que trafega as requisições em 
um protocolo hyper leve, compactado via zLib. O protocolo por sí só já 
economiza aproximadamente 90% do que uma chamada à web service, por exemplo, 
utilizaria. Não contente com isso, o protocolo ainda é compactado usando zLib, 
que pode fazer com que os dados trafegados fiquem com apenas 30% de seu tamanho 
original. Ou seja, a comunicação via rede entre o servidor e o client gasta 
infinitamente menos banda do que qualquer tecnologia que existe hoje em dia, 
exceto socket (que, como sabemos, nem sempre é possível usar, ainda mais em 
provedores externos, como o meu GoDaddy, que bloquearia as portas).

    Como funciona isso? Até agora, o esquema é o seguinte:

    1) O client pergunta pro server "Ô, tio, quem sou eu?". O server então 
aciona uma dll do seu aplicativo que customizará algumas das ações do 
framework. Neste ponto, ele retorna o nome do aplicativo, sua versão e as 
linguagens disponíveis (inglês, português, etc.).

    2) O client está customizando a janela de autenticação com um logotipo e 
permitindo o acesso a todas as abas do componente de autenticação (logo, na 
janela de autenticação, o único trabalho do programador é colocar o logotipo em 
uma propriedade, o resto ele faz sozinho).

    3) Então o usuário tenta criar uma nova conta. O client fala pro server 
"Esse cara com estes dados tá querendo criar uma conta nova". O server então 
dispara um evento para o teu aplicativo dizendo isso. Teu aplicativo neste 
ponto pode ou não implementar este evento. Se implementar, então ele é o 
responsável por todo o processo de criação de conta, do jeito que o programador 
quiser. Mas, se não quiser trabalho, o aplicativo simplesmente não processa o 
evento. Neste ponto, o framework diz "Ok. Vou cuidar disso eu mesmo". E utiliza 
um recurso interno para criação de contas (que, no caso, é o ASP.Net SQL 
Membership), criando a conta e criando um e-mail de confirmação. A idéia sempre 
será essa: permitir ao aplicativo fazer tudo o que o framework faz mas, se não 
quiser, o framework sempre conterá uma forma "genérica" de se fazer algo.

    4) O e-mail de confirmação é outro evento do teu aplicativo (este é 
obrigatório consumir). Ele vai pegar a linguagem que o usuário selecionou e 
montar uma mensagem contendo as informações da conta. Devolve-se esta mensagem 
para o framework e ele se encarrega de colocar numa lista de e-mails pendentes 
de envio e os envia assim que a lista for processada (automaticamente). Todo o 
restante do processo de criação de contas corre pelo servidor agora, até o 
momento em que a conta for realmente criada onde, novamente, é disparado um 
evento para o teu aplicativo que, se não o consumir, deixa o framework criar a 
conta usando o processo interno.

    5) Tudo funcionaria basicamente da mesma forma: para toda ação possível do 
framework, ele implementaria uma solução pré-pronta. (Ex.: um datagrid que 
obtem dados de uma view onde, no Client, o datagrid teria apenas uma 
propriedade: o nome da view/método que obtém os dados). Se o teu aplicativo não 
consome o evento, o framework faz o trabalho por você (isso serve apenas para 
poder customizar o aplicativo). Mas, se teus dados vierem de um web-service, 
por exemplo, sem problemas. Para aquela view em específico, você consome o 
evento e lida com os dados por si mesmo (desde que devolva ao framework 
utilizando um XML que é protocolizado).

    6) Uma vez autenticado, o framework pede o menu principal (presume-se que 
todos os aplicativos tenham a mesma cara, porém, uma vez que o menu é um XML, 
nada impede do client implementá-lo como uma árvore, por exemplo, ao invés de 
uma barra de menus).

    Toda a comunicação entre o client e o server é feito com chaves de 
tradução, ou seja, no menu, o server não passa a palavra "Mudar senha", mas sim 
uma chave "{ChangePassword}" que o client traduzirá, dependendo da linguagem 
escolhida no logon (mais ou menos como o sistema de localização do Flex, porém 
os dados vêm do servidor ao invés de serem compilados no client, permitindo a 
adição de outras linguagens no futuro).

    O demo só permite autenticar, criar contas, recuperar senha, logar-se, 
mudar a senha atual e deslogar-se, porém, conforme ele for se desenvolvendo, 
tudo será feito a partir do mesmo princípio (atualmente o MXML possui 30 linhas 
e o ActionScript umas 35. No lado server, está tudo automático. Pra não falar 
que ele não faz nada, ele monta o corpo dos e-mails e carrega os arquivos de 
linguagens a partir de um txt simples, dependendo da linguagem escolhida pelo 
usuário).

    Os Alerts bonitinhos, os efeitos, tudo isso é incorporado no framework, 
então o usuário precisa somente chamar: MsgBox.show(MensagemOuChaveTradução, 
function(dialogResult:int){}, MsgBox.CRITICAL | MsgBox.YES_NO, "Título");

    Os próximos passos serão:

    1) Um datagrid com paginação e um filtro de pesquisa avançado, onde a única 
coisa que o programador precisa fazer é definir o método que preencherá os 
dados. Se não for customizado, o framework sozinho irá até a tabela que o grid 
definiu, irá filtrá-la, paginá-la e montar o grid final na tela. Grids serão 
tão fáceis quanto fazer uma view no SQL e setar o nome desta view no componente 
DataGrid. Este componente será mais aprimorado que o datagrid original e terá 
um painel à esquerda onde o usuário poderá montar filtros complexos (ex.: Preço 
de Custo maior que 10 e menor que 20) e com suporte à paginação (sem que 
precise-se programar nada pra isso).

    2) Um formulário mais inteligente, com múltiplas colunas, componentes 
melhores (autocomplete, masked textbox, etc.), com validações automáticas, etc. 
Feito em XML. Assim, o programador somente irá desenhar o form de uma forma bem 
simples usando XML (ex.: <Field source="Name" label="{Name}" maxLength="32"/>) 
e o client irá desenhar um form completo, com validação, ajuda, componentes 
mais inteligentes, etc. Sem que nada seja programado pelo programador.


    Atualmente ele está sendo desenvolvido em VB.Net 9 usando ASP.Net, MSSQL 
2008 e o primeiro client em Flex.

    A idéia final é fazer tanto vários clients (Flex, AIR, Silverlight, Windows 
Forms, WPF) quanto vários servers (.net, Java, PHP) e várias bases (MSSQL, 
MySQL, FireBird, PostGre).

    O que acham?


    P.S. 1: Será open-source? Vou usar o conceito de torrent pra decidir isso: 
se só ouverem "leechers", não. Se houver pessoas que desejam de fato ajudar, 
sim.

    P.S. 2: Criei conta mas meu e-mail não chegou. Poisé... coisas da 
GoDaddy... demora um século pra enviar e-mail =( Mas uma hora chega ;-)



----------------------------------------------------------------------------

    J.C.Ködel - Programador Microsoft.net/Adobe Flex
    TDS-Enterprise - http://www.tds-enterprise.com 



  -- 
  Mario Junior
  Enterprise Java / Flex Architectures
  Adobe Certified Expert Flex 3 with AIR

  Sofshore Informática
  http://www.sofshore.com.br
  +55 (48) 3337 2003
  Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
  Florianopolis SC Brasil





-- 
Mario Junior
Enterprise Java / Flex Architectures
Adobe Certified Expert Flex 3 with AIR

Sofshore Informática
http://www.sofshore.com.br
+55 (48) 3337 2003
Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
Florianopolis SC Brasil

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev" 
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com 
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com 
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Responder a