p. 2
sumário 04 usando expressões regulares edição 12 número 12 ano 03 2009 editores alexandre tarifa diego nogare emerson facunte sergio gonçalves revisÃo felipe pocchini fernanda sallai montagem formataÇÃo milton carvalhaes editoraÇÃo e diagramaÇÃo adriano almeida colaboradores adriano luciano candido caio azevedo diego nogare felipe pocchini fernanda sallai fúlvio cezar canducci dias ricardo josé alves neste artigo veremos como utilizar expressões regulares para validar e-mail e cep por fernanda sallai 07 chamadas de funções e mensagens com javascript como criar uma classe de envio de mensagem e chamada de funções em javascript por fúlvio cezar canducci dias 14 aplicações com n camadas em asp .net parte i aplicando conceitos de camadas em asp.net por felipe pocchini 18 implementando service broker sistema de fila de mensagens por ricardo josé alves /adriano luciano candido fale com editor É muito importante para a equipe saber a sua opinião sobre a revista caso tenha alguma critica sugestão ou elogio entre em contato caso tenha interesse em publicar um artigo na revista envie o título e um resumo do tema em formato word site@codificandomagazine.net 23 workaround com .net sap connector 2.0 mais um artigo de como utilizar o .net sap connetor 2.0 por diego nogare 27 sql reporting service 2005 parte ii continuação do artigo explorando microsoft sql reporting service 2005 por caio azevedo produzido por www.codificando.net 03 editorial 36 .close
[close]
p. 3
edição 12 número 12 ano 03 2009 editorial pessoal no mês de outubro tivemos bastante novidade com relação ao codificando .net não só na revista mas como um todo eu acredito de verdade que o principal fator de sucesso desta revista gratuita são as pessoas que dedicam várias horas de seus dias para colaborar de forma voluntária para que a mensagem possa ser entregue em todos os cantos do país e de fora também como todos nós somos de comunidade nada mais justo do que buscarmos um novo membro pro time na nossa comunidade analisamos todos os candidatos buscando o que mais havia colaborado conosco pra nossa alegria o felipe pocchini foi escolhido o novo membro do time o felipe já chegou trabalhando bastante apesar de originalmente ter sido contratado pra nos ajudar nas revisões técnicas ele já fez o novo layout do site da revista e está trabalhando no layout do site dos podcasts não menos importante que o novo membro a galera que já está com a gente no time é de fundamental importância para que o trabalho seja realizado da melhor forma possível agradeço intensamente a todos vocês adriano almeida fernanda sallai milton carvalhaes muito obrigado time diego nogare site@codificandomagazine.net
[close]
p. 4
e-magazine usando expressões regulares neste artigo veremos como utilizar expressões regulares para validar e-mail e cep por fernanda sallai neste artigo aprenderemos como verificar se o formato de email e ou cep informado pelo usuário é correto usando as expressões regulares obs estou realizando a validação através de código gerenciado mas é possível fazer a mesma validação utilizando componentes do próprio visual studio mas isso não será abordado neste artigo primeiramente mas o que são expressões regulares conforme aurélio marinho jargas É uma composição de símbolos caracteres com funções especiais que agrupados entre si e com caracteres literais formam uma seqüência uma expressão esta expressão é interpretada como uma regra que indicará sucesso se uma entrada de dados qualquer estiver de acordo com essa regra ou seja obedecer exatamente a todas as suas condições vamos à prática a parte de criar um projeto não será abordada neste artigo neste exemplo usarei uma aplicação windows forms e a lingua gem c mas é claro que poderá ser utilizado em qualquer tipo de aplicação e linguagem fazendo algumas adaptações conforme sua escolha criaremos o layout conforme a figura 1 figura 1 criando layout do formulário codificando.net e-magazine no evento click do botão btnverificar inclua o código conforme listagem 1 private void btnverificar_click object sender eventargs e se os campos informados estão no formato incorreto if validarcampos exibe uma mensagem informando o campo com formato inválido messagebox.show mensagem atenÇÃo messageboxbuttons.ok messageboxicon.warning
[close]
p. 5
usando expressões regulares e-magazine
true se o campo está com formato correto e false se está incorreto returns private bool validarcampos bool formatocorreto true se o txtemail.text não estiver vazio if txtemail.text string.empty se o formato de email estiver incorreto if isvalidemail txtemail.text formatocorreto false mensagem o e-mail informado é inválido por favor verifique txtemail.focus return formatocorreto se o txtcep.text não estiver vazio if txtcep.text string.empty se o formato de cep estiver incorreto if validacep txtcep.text formatocorreto false mensagem o cep informado é inválido por favor verifique txtcep.focus return formatocorreto return formatocorreto true se o formato do cep estiver correto e false se está incorreto returns private bool validacep string cep se a quantidade de dígitos do cep for igual a 8 if cep.length 8 a variável cep recebe os cinco primeiros dígitos três últimos dígitos ex 09999-999 cep cep.substring0 5 cep.substring5 3 txtcep.text recebe o valor da variável cep txtcep.text cep retorna true ou false return system.text.regularexpressions.regex .ismatchcep 0-9 5 0-9 {3 true se o formato do e-mail estiver correto e false se está incorreto returns private bool isvalidemail string email retorna true ou false return system.text.regularexpressions.regex .ismatchemail user host listagem 1 criando codificação do botão btnverificar codificando.net e-magazine ao executar o código e informar dados no formato inválido figura 2 é exibida as mensagens figura 3 e 4 conforme o www.codificando.net out nov 2009 5
[close]
p. 6
usando expressões regulares formato do campo informado pelo usuário incorretamente 2 user host a definem um grupo e-magazine b opcional ocorre 0 ou 1 vez c
[close]
p. 7
e-magazine chamadas de funções e mensagens em javascript nesse artigo mostrarei como criar uma classe de envio de mensagem em javascript que também terá suporte para chamar funções de javascript que estejam na página por fúlvio cezar canducci dias criaremos uma aplicação class library chamada jvscript usando a linguagem visual basic conforme as figuras 1 e 2 o próximo passo é adicionar ao projeto duas referências que serão de extrema importância system.web e system.web.extensions.veja como adicioná -las nas figuras 4 e 5 figura 1 criando um novo projeto codificando.net e-magazine figura 4 adicionando referências figura 2 configurando o projeto o projeto criado será exibido conforme figura 3 e renomeie a class1.vb para alerta.vb veja figura 3 figura 3 exibindo estrutura do projeto criado figura 5 selecionando as referências que serão adicionadas no projeto www.codificando.net out nov 2009 7
[close]
p. 8
chamadas de funções e mensagens em javascript e-magazine o diagrama de classes é um componente visual para construções de classes no visual studio veja na figura 6 como adicioná-lo no nosso projeto e na figura 7 a visualização do diagrama a classe chaves.vb será composta por apenas um campo de nome _chave e uma propriedade de nome chave o motivo principal de criar essa classe chaves.vb é que a alerta.vb e a classe funcao.vb herdaram os métodos na figura 9 e 10 visualize a classe chaves.vb criada figura 6 adicionando diagrama de classes figura 7 visualizando o diagrama de classes figura 9 visualizando a classe chaves.vb vamos agora criar todas as classes e métodos do projeto veja como adicionar uma classe na figura 8 codificando.net e-magazine figura 10 visualizando a codificação da classe chaves.vb figura 8 adicionando uma nova classe no diagrama o propósito desse projeto não é construir passo a passo a classes e sim demonstrar o poder e a flexibilidade que elas trarão para o desenvolvimento de páginas em www.codificando.net out nov 2009 8
[close]
p. 9
chamadas de funções e mensagens em javascript aspx a figura 10 exibe o nosso diagrama de classes finalizado com as suas heranças agregações e sobrecargas de métodos e a listagem 1 exibe a codificação gerada na criação do diagrama e-magazine abaixo tem os códigos fontes gerados em nosso diagrama de classes mas que também foram modificados para sua adequação a esse projeto figura 11 exibindo o diagrama de classes classe alerta public class alerta inherits chaves private _alerta as string public sub new chave alerta end sub public property alerta as string get return _alerta end get setbyval value as string _alerta value end set end property end class classe chave public class chaves private _chave as string public sub new chave end sub public property chave as string get return _chave end get setbyval value as string _chave value end set end property end class classe funcao public class funcao inherits chaves private _funcao as string public sub new chave funcao end sub public property funcao as string get return _funcao end get setbyval value as string _funcao value end set end property end class codificando.net e-magazine www.codificando.net out nov 2009 9
[close]
p. 10
chamadas de funções e mensagens em javascript classe clientejs imports system imports system.web imports system.web.ui public class clientejs private _alerta as new alerta private _funcao as new funcao private _pagina as page public sub new alertas _alerta funcoes _funcao end sub public sub newbyval _alerta as alerta alertas _alerta end sub public sub newbyval _pagina as page byval _alerta as alerta alertas _alerta pagina _pagina end sub public sub newbyval _funcao as funcao funcoes _funcao end sub public sub newbyval _pagina as page byval _funcao as funcao funcoes _funcao pagina _pagina end sub public property alertas as alerta get return _alerta end get setbyval value as alerta _alerta value end set end property public property funcoes as funcao get return _funcao end get setbyval value as funcao _funcao value end set end property public property pagina as page get return _pagina end get setbyval value as page _pagina value end set end property public sub enviaralerta enviaralertapagina end sub public sub enviaralertabyval _pagina as page if e-magazine _pagina.clientscript.isclientscriptblo ckregisteredalertas.chave false then _pagina.clientscript.registerclientscr iptblock pagina.gettype alertas.chave alert alertas.alerta true _pagina.clientscript.isclientscriptblo ckregisteredalertas.chave end if end sub public sub enviaralertabyval _pagina as page byval _alerta as alerta alertas _alerta pagina _pagina enviaralerta end sub public sub enviaralertabyval _pagina as page byval _chave as string byval _alerta as string alertas.alerta _alerta alertas.chave _chave pagina _pagina enviaralerta end sub public sub enviarfuncao enviarfuncaopagina end sub public sub enviarfuncaobyval _pagina as page if _pagina.clientscript.isclientscriptblo ckregisteredfuncoes.chave false then _pagina.clientscript.registerclientscr iptblock pagina.gettype funcoes.chave funcoes.funcao true _pagina.clientscript.isclientscriptblo ckregisteredfuncoes.chave end if end sub public sub enviarfuncaobyval _pagina as page byval _funcao as funcao funcoes _funcao pagina _pagina enviarfuncao end sub public sub enviarfuncaobyval _pagina as page byval _chave as string byval _funcao as string funcoes.chave _chave funcoes.funcao _funcao pagina _pagina enviarfuncao end sub end class codificando.net e-magazine www.codificando.net out nov 2009 10
[close]
p. 11
chamadas de funções e mensagens em javascript lasse scriptmanagerjs imports system imports system.web imports system.web.ui imports system.web.ui.scriptmanager public class scriptmanagerjs private _alerta as new alerta private _funcao as new funcao private _pagina as page public sub new alertas _alerta funcoes _funcao pagina _pagina end sub public sub newbyval _alerta as alerta alertas _alerta end sub public sub newbyval _pagina as page byval _alerta as alerta alertas _alerta pagina _pagina end sub public sub newbyval _funcao as funcao funcoes _funcao end sub public sub newbyval _pagina as page byval _funcao as funcao funcoes _funcao pagina _pagina end sub public property alertas as alerta get return _alerta end get setbyval value as alerta _alerta value end set end property public property funcoes as funcao get return _funcao end get setbyval value as funcao _funcao value end set end property public property pagina as page get return _pagina end get setbyval value as page _pagina value end set end property public sub enviaralerta enviaralertapagina end sub public sub enviaralertabyval _pagina as page e-magazine if _pagina.clientscript.isclientscriptbl ockregisteredalertas.chave false then scriptmanager.registerclientscriptblock pagina _pagina.gettype alertas.chave alert alertas.alerta true _pagina.clientscript.isclientscriptbl ockregisteredalertas.chave end if end sub public sub enviaralertabyval _pagina as page byval _alerta as alerta alertas _alerta pagina _pagina enviaralerta end sub public sub enviaralertabyval _pagina as page byval _chave as string byval _alerta as string alertas.chave _chave alertas.alerta _alerta pagina _pagina enviaralerta end sub public sub enviarfuncao enviarfuncaopagina end sub public sub enviarfuncaobyval _pagina as page if _pagina.clientscript.isclientscriptbl ockregisteredfuncoes.chave false then scriptmanager.registerclientscriptblock pagina _pagina.gettype funcoes.chave funcoes.funcao true _pagina.clientscript.isclientscriptbl ockregisteredfuncoes.chave end if end sub public sub enviarfuncaobyval _pagina as page byval _funcao as funcao funcoes _funcao enviarfuncao pagina end sub public sub enviarfuncaobyval _pagina as page byval _chave as string byval _funcao as string funcoes.chave _chave funcoes.funcao _funcao pagina _pagina enviarfuncao end sub end class codificando.net e-magazine www.codificando.net out nov 2009 11
[close]
p. 12
chamadas de funções e mensagens em javascript e-magazine explicarei o que cada classe faz para um melhor entendimento classe chaves.vb será uma classe de apoio pois o seu motivo de existir será que outras duas classes alerta e funcao herdarão abstração de dados especialização a sua única propriedade chave a propriedade chave é do tipo string classe alerta.vb terá as propriedades alerta e chave herança da classe chaves.vb e as duas são do tipo string essa classe será utilizada como tipo de dado para as classes clientejs.vb e scriptmanagejs.vb abstração de dados agregação classe funcao.vb a classe funcao.vb terá as propriedades funcao e chave herança da classe chaves.vb e as duas são do tipo string essa classe será utilizada como tipo de dado para as classes clientejs e scriptmanagerjs.vb abstração de dados agregação executa dentro dos famosos updatepanel do ajax ou seja a diferença da classe clientejs.vb e scriptmanagerjs é que a scriptmanagerjs você vai trabalhar junto com o scriptmanager e o clientejs.vb não precisa criaremos um novo projeto asp.net ajax enabled web site onde usaremos a dll compilada do nosso projeto jvscript a dll está localizada na pasta bin debug jvscript.dll iremos realizar dois testes um rodando dentro de um updatepanel e outro fora do updatepanel a figura 11 exibe o layout da página figura 11 exibindo o layout da página codificando.net e-magazine classe clientejs.vb:a classe clientejs.vb terá as propriedades pagina que é do tipo page e dois tipos de dados que serão das classes alerta.vb e funcao.vb respectivamente alertas do tipo de dado alerta classe alerta.vb e funcoes do tipo de dados funcao classe funcao.vb essa classe possuirá métodos de envio de mensagens com várias sobrecargas de métodos que mostrará alerta ou chamará outras funções em javascript classe scriptmanagerjs a classe scriptmanagerjs é praticamente igual à classe clientejs.vb tendo a diferença que ela antes de fazer as codificações nos botões vamos fazer referenciar a nossa dll jvscript.dll veja na figura 12 a estrutura do projeto figura 12 visualizando a estrutura do projeto agora vamos fazer as duas rotinas dos botões do nosso projeto web um que está www.codificando.net out nov 2009 12
[close]
p. 13
chamadas de funções e mensagens em javascript e-magazine dentro do updatepanel esse ta com o nome de dentro do updatepanel e o outro fora do updatepanelesse ta com o nome fora do updatepanel mas antes disso na tag head da página vamos criar um função básica em javascript conforme a listagem 2 listagem 2 incluindo função em javascript figura 11 visualizando o resultado após o clique do botão bt_foraup e bt_dentroup dê um duplo clique no botão fora do updatepanel e vamos criar sua rotina exemplo de como utilizar a nossa dll criada para emitir alertas e funções de javascript observe a listagem 3 e 4 a codificação do evento click dos botões e na figura 12 o resultado após o clique dos botões bom pessoal esse é um simples exemplo de como trabalhar com classes no visual studio fúlvio cezar canducci dias fulviocanducci@hotmail.com sou estudante do curso de sistemas de informação da faculdade uniesp presidente prudente e programador web a 5 anos com as linguagem php asp asp.netc e vb.net configuro servidores 2003 server para rodar aplicações web iis e ftp e active directory configurações intermediárias codificando.net e-magazine listagem 3 incluindo codificação no botão bt_foraup listagem 4 incluindo codificação no botão bt_dentroup www.codificando.net out nov 2009 13
[close]
p. 14
e-magazine aplicações em n camadas com asp .net parte i aplicando conceitos de camadas em asp.net por felipe pocchini aplicações em n camadas são desenvolvidas de forma distribuída onde cada camada tem sua responsabilidade dentro do contexto para um modelo de aplicação web são comumente usadas 3 camadas presentationapresentação business lógica do negócio e dataresponsável pelas transações com o banco da dados para este artigo iremos usar uma camada a mais chamada entitynossa biblioteca de entidades vamos criar um controle de clientes simples onde nosso objetivo é focar no aprendizado de aplicações em n camadas figura 2 criando uma solução em branco com a solução criada é hora de criar as camadas vamos começar com a camada que será a biblioteca de entidades É nela que definiremos todas as entidades que vamos usar nesse exemplo para adicionar a camada ao projeto vamos clicar com o botão direito na solução e adicionar um novo projeto codificando.net e-magazine figura 1 exemplo de aplicação em n camadas para começar o desenvolvimento iremos abrir o visual studio 2008 ou 2010 e criar um novo projeto do tipo blank solution figura 3 adicionando um novo projeto a solução add new project esse novo projeto vai ser do tipo class www.codificando.net out nov 2009 14
[close]
p. 15
aplicações em n camadas com asp .net parte i e-magazine library pois será apenas a biblioteca de entidades pronto com o diagrama de classes aberto vamos criar a classe cliente de maneira muito fácil figura 4 projeto do tipo class library com o projeto adicionado a solução podemos agora trabalhar na entidade principal que será a classe cliente figura 7 adicionando uma nova classe ao diagrama add class essa é a visualização da classe cliente dentro do diagrama figura 5 projeto criado por padrão já é criada no projeto uma nova classe onde você poderá deletá-la pois iremos utilizar um ótimo recurso do visual studio chamado view class diagram responsável em gerenciar as classes do projeto conforme mostra a figura a baixo codificando.net e-magazine figura 8 visualização da classe cliente dentro do diagrama figura 6 visualizando o diagrama de classes da camada de entidades view class diagram dando continuidade iremos adicionar os atributos e as propriedades necessárias para manipular a entidade cliente como o foco é estudar aplicações em n camadas vamos trabalhar com atributos simples pra não prolongar muito nosso tempo mais uma vez vamos contar com recursos do visual studio para facilitar nossa vida www.codificando.net out nov 2009 15
[close]