jan 24 2009
Agenda de Contatos (Flex + FluorineFx + C#.net + Access)
Olá pessoal, há tempos estou querendo fazer um exemplo de CRUD usando o Flex com .Net, e enfim consegui um tempo e preparei uma Agenda de Contatos.
É uma aplicação bem didática que aborda conceitos de Inserir, Atualizar, Excluir e Selecionar registros em uma base de dados.
De início pode parecer que compliquei o desenvolvimento, mas é que eu quis demonstrar não apenas o CRUD, mas também como chamar outro componente baseado em Canvas para fazer a Inserção e Edição.
Também fiz uma classe que herda RemoteObject para executar nossos métodos do ASP.net de forma mais fácil.
Eu diria que este exemplo é um complemento do outro tutorial que fiz de como integrar o Flex com .Net.
Usei um pouco de CSS e alguns Effects, coisa simples mas que fica bem bacana.
A aplicação está disponível on line neste link. (O view source dela está habilitado)
O download do código está disponível neste outro link.




janeiro 29th, 2009 at 06:56
Olá Vinicius.
Depois que vi seu exemplo surgiu a seguinte dúvida.
Tem como integrar net com flex usando o linq?
Se usar o linq terei algum problema na integração?
Pergunto isso pois sou desenvolvedor java e sofro com alguns problemas na integração de java + hibernate + spring + blazeds + flex, o velho problema de lazy loading.
Vi que o linq também tem lazy load então fiquei com essa dúvida, já procurei pela internet e não achei nenhum artigo ou tutorial desta integração usando linq.
Outra pergunta, qual seria mais apropriado para essa integração weborb ou fluorinefx?
Obrigado e parabéns pelo seu exemplo.
janeiro 30th, 2009 at 08:46
Grande Vinicius!
Cada post que você põe aqui me ajuda em algo aqui, mas eu gostaria de saber, se você sabe algum jeito de passar o DataTable pro Flex..
Como não programo a muito tempo em flex e em .NET ainda nào consegui nenhuma solução…
Valeu e parabéns pelo exemplo!
fevereiro 1st, 2009 at 10:35
Bom dia Antônio…
Primeiramente obrigado!! =D
Olha eu tenho certeza que com o linq funciona, mas realmente não sei te dizer como é o lazyload dele, pois nunca fiz nenhum teste. No meu caso uso ADO.net nativo, como no exemplo e meio que faço o lazy “na mão”.
fevereiro 1st, 2009 at 10:45
Bom dia Gustavo, obrigado pelo comentário…
Cara eu sei que funciona, e segundo a tabela de conversão do FluorineFx:
http://www.fluorinefx.com/docs/fluorine/typeconversion.html
o ActionScript recebe o DataTable como Object.
Mas sinceramente não sei como fica, pois neste caso teremos objetos genéricos, o que pode dificultar o seu desenvolvimento.
Gosto sempre de trabalhar com mapeamento de classes, pois os objetos ficam fortemente “tipados”.
Quando der um tempo vou fazer uns testes e posto os comentários.
fevereiro 3rd, 2009 at 09:50
E ae Vinícius, muito bom o post, como sempre esclarecedor. Parabéns. Você teria um link ou material que ensinasse a fazer um menu bar dinamico. Dependendo do usuário logado ele montaria um menu?
Grato
fevereiro 25th, 2009 at 20:34
Olá vinicius…
cara, adorei seu tutorial, muito bom mesmo!!!
rodei ele aqui na meu pc e funcionou perfeitamente!!!
Como estou estudando Flex, eu comecei a observar como vc o fez… daí me surgiu uma dúvida:
pra que server esse trecho de código vinicius?
private var _rstOk:Function;
public function set rstOk(valor:Function):void { this._rstOk = valor; }
private var _rstCancelar:Function;
public function set rstCancelar(valor:Function):void { this._rstCancelar = valor; }
pode me explicar? vc declarou uma variavel do tipo function é isso? na praia porque vc fez isso? (desculpa a pergunta idiota mas eu sou realmente novato)
abraço!
fevereiro 26th, 2009 at 08:28
Olá Wilson, sua pergunta não é tão básica assim não, realmente o Flex trabalha com um conceito um pouco diferente do que estams acostumados em Delphi ou C# ou até mesmo VB.
Acontece que ele usa chamadas assíncronas, ou seja, ele “sai” executando todas as linhas do seu código antes que a anterior termine.
Ná prática acontece assim:
1 - Código;
2 - CódigoMaisDemorado;
3 - Código;
Imagine sua aplicação rodando os códigos acima, normalmente em Delphi ou C# como exemplifiquei, ela rodará a linha 1, só depois de terminar de executar ele vai para a linha 2 e só após completar a execução dela o sistema começará a rodar a linha 3.
No Flex é diferente, ele roda a linha 1, já começa a rodar a 2 e já começa a rodar a 3.
Esse é um dos motivos para usarmos os ResultsEvents do Flex, que no exemplo eu usei como Function.
Como funciona, eu tenho uma Function como atributo da minha classe (tela no caso), e só depois de eu fazer o que quiser nesta tela, chamarei ela.
Neste caso o código fica encapsulado, ou seja, independente de onde eu chamar est tela, quando for o “Resultado” dela for OK ele executa a função que recebeu como parâmetro da tela que a chamou, e para o Cancelar a mesma coisa.
É meio complexo o negócio no começo, mas assim que você entender o conceito corretamente não vai mais querer largar Flex ;)
fevereiro 26th, 2009 at 13:51
Fala Vinicius, muito bacana o tutorial.
Ele é muito semelhante a um que eu tinha feito aqui pra estudar, porém o método que usei para integrar com o .NET e obter/gravar dados no BD foi o HttpService. Vi que vc usou uma abordagem diferente, o RemotingService.
Sabe me dizer qual é mais vantajoso e por quê?
Obrigado.
fevereiro 26th, 2009 at 16:36
Olá Rodrigo, tudo bem!
Então é difícil dizer qual é melhor, depende de onde você vai aplicar.
Aqui na empresa sempre optamos pelo RemoteObject, pois ele é bem mais rápido do que o HttpService, porém dá um pouco mais de trabalho para desenvolver e mapear as classes Flex/.Net e tal.
Veja neste link a comparação entre as 3 formas de integração: HttpService, WebService e RemoteObject…
http://www.themidnightcoders.com/blog/2007/03/flex-remoteobject-vs-webservice.html
março 10th, 2009 at 15:27
Olá Vinícius. Muito Bom este artigo. Estou iniciando em flex e tenho uma duvida. Gostaria de saber como faço para conectar com uma base que está no SQL Server. Ja tentei de tudo aqui.. mas não funciona. desde já, agradeço a sua atenção.
março 10th, 2009 at 19:13
Olá Felipe..
Para usar o SqlServer você precisará apenas de mudar a string de conexão do arquivo Web.config.
Use a opção “Build Connection String” do Visual Studio e aponte o seu banco de dados.
Pra ficar melhor ainda, recomendo você mudar as classes OleDb para Sql, e com isso obter acesso nativo ao SqlServer, para isso você substituirá as seguintes classes:
OleDbConnection > SqlConnection
OleDbCommand > SqlCommand
OleDbDataReader > SqlDataReader
Pesquise sobre o assunto, é bem simples de se fazer.
março 12th, 2009 at 08:58
Valeu vinicius. Funcionou!! =)
março 20th, 2009 at 11:23
Opa! estou tentando publicar uma aplicaçao flex, e da erro no Gateway.aspx
Tem como vc explicar como fica a hierarquia dos arquivos no servidor de ftp ?
vlw !
março 20th, 2009 at 13:26
Boa tarde Gustavo, devido a grande procura, acabei fazendo um post sobre este assunto, da uma olhada:
http://www.viniciussandim.com/?p=184
Qualquer dúvida deixe um comentário por lá. :)
março 27th, 2009 at 11:18
Bom dia Vinicius,
Estou começando a trabalhar com flex agora, então baixei o seu código pra testar o seu funciona perfeitamente, porém tentei fazer o meu com base no seu e o flex não consegue enxergar os métodos no asp.net
março 27th, 2009 at 12:24
Olá Daniele..
Recomendo você dar uma olhada no tutorial “Integrando Adobe Flex - FluorineFx - C#.net”, pois lá é feito passo a passo a configuração do FluorineFx, assim fica mais fácil você encontrar onde está o problema, seguem os links:
Parte 1 -> http://www.viniciussandim.com/?p=60
Parte 2 -> http://www.viniciussandim.com/?p=61
Source -> http://www.viniciussandim.com/?p=80
Att;
abril 22nd, 2009 at 17:51
Vinicius,
Primeiramente parabéns pela iniciativa.
Segundo, eu fiz o seu tutorial e o tutorial deste link: http://programandoem.net/2008/08/05/criando-um-projeto-flex-3-com-fluorinefx-e-linq-parte-1/
Voce usou um versão diferente do fluorine? Já que neste tutorial não precisamos configurar nada. Qual a diferença??
abril 22nd, 2009 at 18:24
Olá Marco, obrigado…
Acontece que no tutorial mencionado, o SaintBr usa o template que o FluorineFx cria no Visual Studio.
Este template cria um monte de arquivos de configuração e alguns de exemplo.
No meu caso prefiro criar apenas as tags que irei utilizar, pois acho que template cria muito código atoa.
abril 22nd, 2009 at 19:22
Entendi!
Valeu pela rápida resposta!
junho 16th, 2009 at 00:26
Olá Vinícius,
Não consegui compilar. Na verdade não entendi muito bem o método de compilação. É necessário IIS para rodar a aplicação ? ou se eu rodar no VS e depois no Flex builder vai funcionar ?
Abraço
junho 18th, 2009 at 15:58
Olá Vinícios,
Estou tendo um problema com uma aplicação onde ao abrir o site é carregado normalmente mas ao tentar conectar ao banco ele mostra este erro:
faultCode:Client.Error.MessageSend faultString:’Send failed’ faultDetail:’Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url
Não sei o que pode ser, mas acho que não esta ativando o Gateway.aspx.
junho 20th, 2009 at 17:10
Olá Gabriel, olha em desenvolvimento, não é necessário ter o IIS não, o servidor do prório Visual Studio roda.
Pra isso vá até o VS, e na opção Open Web Site… selecione a pasta Net.
Em seguida vá até o Flex, com o botão direito no Flex Navigator, clique sobre Import… General>Existing projects into workspace… selecione a Pasta Flex.
Feito isso, você vai ter o projeto aberto no VS e no Flex, então no Visual Studio, rode a aplicação com CTRL + F5, anote o número da porta que o servidor web do VS vai gerar pra você e mude o arquivo services-config.xml, que está no projeto Flex dentro da pasta source, o número da porta do caminho da página Gateway.aspx.
Recomendo você dar uma olhada nos tutoriais de que fiz passo a passo, que mostra toda essa configuração:
Parte 1: http://www.viniciussandim.com/?p=60
Parte 2: http://www.viniciussandim.com/?p=61
Qualquer dúvida deixe outro comentário por ai..
T+
junho 20th, 2009 at 17:17
Olá Zanotti, seguinte…
Execute os mesmos passos que eu recomendei para o Gabriel, deve ser o número da porta do arquivo services-config.xml que está dentro da pasta src de seu projeto Flex que está diferente da porta que o seu VS gerou quando você compilou seu projeto pela primeira vez.
junho 21st, 2009 at 14:29
Vinícius,
Obrigado por responder, vou tentar seguir o que você me disse.
Abraço
junho 22nd, 2009 at 12:34
Resolvi o problema, que não era problema e sim somente configuração com a pasta definida na locaweb para executar arquivos asp.net, feito isso o sistema roda normalmente…
Obrigado
julho 12th, 2009 at 18:19
[...] demonstrar tudo isso que estou falando, resolvi criar uma agenda de contatos idêntica a que fiz em Flex, e vou posta-la em breve [...]
julho 29th, 2009 at 09:15
Olá Vinícius, gostaria de saber se existe a possibilidade de eu alterar a conexão do seu código, ele é voltado para web, mais eu precisava mudar para aplicação desktop.
outubro 24th, 2009 at 18:00
Seus posts são muito bons!
Está ajudando muito a todos!
Recomendo que você coloque um link do PayPal para quem quiser contribuir com você.
Quando você tiver um tempo, seria muito legal se você implementasse nesta sua agenda a opção do usuário inserir a foto do contato que está cadastrando.
O fluorine serializa imagens?
Você teria algum exemplo de um cadastro de imagens?
Obrigado! Parabéns!
novembro 7th, 2009 at 13:01
Olá Vinicius, muito 10 essa agenda, realmente uma agenda online quebra o galho, criei uma para mim que esta sendo muito util, caso alguem queira visualizar e tambem fazer o downloads basta visitar o seguinte endereço http://www.abreubusiness.com.br/.
janeiro 29th, 2010 at 20:12
Caramba Gilson! Que bacana a agenda! Parabéns pel aplicação.
junho 10th, 2010 at 17:06
Vinícius,
Muito maneiro esse seu tutorial, a Agenda ficou maneiro com os efeitos do Flex to fazendo um relatorio em Flex com o datagrid e pie chart, usei com webservice e funcionou legal, porem um pouco lento e a lentidão está na parte de recuperar os dados do .net para o flex e olhando o seu post resolvi passar a usar o FluorineFx e segui os passo a passo a sua aplicação , tanto o dotnet quanto o flex estão compilando mais na hora de executar o método do dotnet pelo flex ocorre esse erro abaixo e num sei o que e é bati as configurações e aunica diferença que vi e que eu referencie a DLL do 3.5 do Fluorine no dotnet e você usou a do 2.0.
Você poderia me ajudar com alguma dica ? de o que pode está dando esse erro ?
Ocorreu um erro ao tentar executar o método no asp.net.
faultCode:Client.Error.MessageSend faultString:’Send failed’ faultDetail:’Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: ‘http://localhost:3183/GCAP/default.aspx”
julho 5th, 2010 at 12:06
Olá Vinícius,
Parabéns pelos seus tutoriais (este e o do Flex Mania 2009).
Estou tentando fazer uma agenda utilizando o Mysql e asp net.
Tentei utilizar os arquivos mas quando modifico o endpoint uri no flex, para o meu localhost, ele ainda continua procurando o uri antigo e dá erro dizendo q não encontra.
Onde mais eu devo modificar o valor do endpoint uri? Apenas no service-config.xml ou tem outro local tbm?
Obrigado,
Abraços
julho 5th, 2010 at 14:40
Olá Vinícius,
Eu estou utilizando o flex 4 e acho que deu algumas imcompatibilidades. Compilei no flex 3 e deu tudo certo, funcionou perfeito.
Brigadão pela ajuda e Parabéns pelos posts novamente.
Abraços