Embed or link this publication
Description
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[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]
p. 16
aplicações em n camadas com asp .net parte i e-magazine crie mais esses atributos seguindo os passos acima cpf email id telefone para visualizar o código da entidade cliente basta dar um duplo clique na classe using system using system.collections.generic using system.text namespace ntier.entity public class cliente[close]
p. 17
aplicações em n camadas com asp .net parte i e-magazine com a classe cliente definida temos nossa camada de entidades concluída utilizando apenas uma entidade nesse exemplo na segunda parte desse artigo vamos criar a camada de dados data que ficará responsável pelas transações sql com o banco de dados participe desse artigo deixando seu comentário http www.desenvolvendoparaweb.net group/aspnet para saber mais http msdn.microsoft.com/pt-br/library bb384398.aspx até a próxima grande abraço a todos felipi pocchini graduado em ciência da computação pela universidade josé do rosário vellano unifenas em alfenas mg trabalha com desenvolvimento de aplicações web e windows forms utilizando a tecnologia .net moderador da comunidade desenvolvendo para web colaborador da comunidade codificando.net e mantém o blog www.felipepocchini.net codificando.net e-magazine www.codificando.net out nov 2009 17[close]
p. 18
e-magazine implementando o service broker sistema de filas de mensagens por ricardo josé alves /adriano luciano candido o sql server 2005 introduziu o service broker um sistema de filas de mensagens para aplicações distribuídas garantindo que todas as mensagens persistam e são recebidas mesmo quando ocorrem falhas no sistema possibilitando uma nova geração de aplicações altamente escaláveis os desenvolvedores de software criam a maioria das aplicações usando processamento seqüencial e síncrono neste modelo a transação é iniciada o dado é bloqueado para evitar o uso por outras transações as alterações são efetuadas e o dado é desbloqueado isto funciona bem para certas aplicações mas existem aplicações as quais necessitam de consistência para operações que envolvem vários bancos de dados plataformas e até mesmo outras empresas muitas vezes estas transações simplesmente enviam alguma requisição de processamento e não exigem um retorno imediato de resposta pois têm a garantia de suas requisições serem processadas tão breve quanto possível embora essas transações sejam assíncronas não corremos o risco de quebra de integridade dos dados pois todas as requisições são colocadas em uma fila transacional ou seja esta fila de requisi ções pode ser modificada e as requisições já disparadas são perfeitamente gerenciadas pelo service broker podendo ser retiradas e modificadas desta forma mesmo em caso de falha no sistema teremos todas as transações preservadas pelo service broker em uma tabela e elas serão aplicadas tão logo quanto possível garantindo que as mensagens envolvidas no processo sejam corretamente formatadas entendidas e processadas pelas aplicações que as enviam e recebem com este trabalho não há um consumo de recursos geradores de esperas que impactem na performance da aplicação e a segurança tem um nível de confiabilidade maior as partes envolvidas ou seja as que enviam e recebem são os endpoints a implementação física de um endpoint são os bancos de dados envolvidos o service broker é a ponte de envio e recepção de dados entre os endpoints o endpoint que envia é o initiator e o endpoint receptor é o target o gerenciamento desta comunicação pelo service broker é chamado de conversation a troca de dados entre os endpoints cujo tipo é um dialog ou seja a comunicação entre dois endpoints os objetos que compõem o service broker são codificando.net e-magazine www.codificando.net out nov 2009 18[close]
p. 19
implementando o service broker e-magazine · queues que são as tabelas onde as mensagens messages são armazenadas É a estrutura de armazenamento usada para armazenar as mensagens a serem processadas services está atrelado a um queue e é a camada que abstrai o armazenamento físico isolando os queues impondo regras na conversação permitida através dos contracts contracts que é a lista de message types que podem ser enviadas e recebidas message types tipos de mensagem suportados e formatação que garante a aceitação destas mensagens criando uma message type vamos criar duas message types com validação well_formed_xml conforme mostrado na figura 2 · · · figura 2 criando uma message type habilitando o service broker o service broker vem desabilitado por padrão por não ser necessário à execução principal do sql server 2005 através do sql server management studio insira o comando conforme figura 1 utilizaremos como banco de dados o adventureworks atente para as nomenclaturas que são case-sensitive os tipos de message types são · none qual aceita qualquer dado em qualquer formato no corpo da mensagem · · · empty força o corpo da mensagem a não ter dado nenhum codificando.net e-magazine well_formed_xml é permitido apenas um corpo de mensagem em formato xml valid_xml with schema collection é permitido apenas um corpo de mensagem em formato xml mas o documento é checado frente a um schema collection criando um contract vamos criar um contract para as duas messages criadas anteriormente conforme figura 3 figura 1 habilitando o service broker www.codificando.net out nov 2009 19[close]
p. 20
implementando o service broker e-magazine serão usados para possibilitar que um id de produto seja enviado a outro banco de dados e tenha uma fatura cdm retornada conforme figura 5 figura 3 criando um contract este contract vai restringir os dois tipos de mensagens em uma conversa em particular proporcionando um canal onde as entradas e saídas da conversation estarão completamente definidos criando message queues neste passo vamos criar duas queues a queuecdmprodutoid e queuecdmresultado cdm no nome é a abreviação de contadomaterial a fatura em si desta forma estaremos criando a estrutura de armazenamento das messages conforme a figura 4 figura 5 criando dois services criando conversations a conversation criada na figura 6 vai usar os services e o contract criados anteriormente codificando.net e-magazine figura 6 criando uma conversation enviando e recebendo mensagens criamos portanto toda a infraestrutura necessária para nosso exemplo de service broker agora vamos finalmente inserir mensagens na fila messages no queue criado utilizando o comando send figura 4 criando duas queues criando services agora criaremos dois services os quais www.codificando.net out nov 2009 20[close]
p. 21
implementando o service broker e-magazine e remover elas usando o comando receive e repassá-las para processamento vamos visualizar o conteúdo das queues conforme a figura 7 figura 9 consultando as queues novamente começo figura 7 consultando as queues como podemos observar as filas estão vazias utilizando agora o resultado da consulta no @dialogteste vamos enviar uma mensagem do tipo enviarcontadomaterialproduto de acordo com a figura 8 figura 10 consultando as queues novamente meio codificando.net e-magazine figura 8 consultando as queues vamos consultar as queues novamente veja os resultados na figura 9 10 e 11 figura 11 consultando as queues novamente final da linha nas figuras 12 13 e 14 vamos proceder ao recebimento e visualizar o resultado www.codificando.net out nov 2009 21[close]
p. 22
implementando o service broker e-magazine figura 12 recebendo a mensagem começo figura 15 consultando as queues novamente verificamos agora que estão vazias as mensagens foram tratadas ricardo josé alves pós graduando em bancos de dados e business intelligence possui o título de bacharel em ciência da computação com ênfase em análise de sistemas e técnico em processamento de dado além de extensão em gestão de projetos analista de sistemas e suporte atuando há 12 anos em gerência de projetos de infraestrutura arquitetura de soluções desenvolvimento de sistemas e gerenciamento de ti na área bancária e governo figura 13 recebendo a message meio adriano luciano candido adriano.luciano@gmail.com é pós-graduado no mba em gestão projetos da fgv certificado nos títulos da microsoft mcpd mcdba mcsd.net mcsd mcad mcsa instrutor oficial microsoft e consultor especializado em tecnologia microsoft e em gestão de projeto atuando a mais de 10 anos no mercado de tecnologia palestrante e professor de pós-graduação em diversas universidades de são paulo mantém o site www.adrianoluciano.net codificando.net e-magazine figura 14 recebendo a mensagem final da linha consultando novamente as duas queues conforme figura 15 www.codificando.net out nov 2009 22[close]
p. 23
e-magazine workaround para trabalhar no sap com o .net sap connector 2.0 através de rfc mais um artigo de como utilizar o .net sap connetor 2.0 por diego nogare para finalizar a seqüência dos artigos de sap prometidos esta publicação contempla a criação de um workaround para se trabalhar com o .net sap connector 2.0 no visual studio 2005 ou visual studio 2008 infelizmente o componente do sap para se conectar no vs é limitado à versão 2003 para isso criamos uma alternativa para se trabalhar com versões mais atuais do visual studio este artigo não vai entrar em detalhes de como funciona a parte de escrita ou de leitura de rfcs do sap se quiserem acompanhar estes processos foram criados e publicados dois outros artigos sobre estes assuntos eles podem ser acessados pelos links abaixo leitura http www.linhadecodigo.com.br artigo.aspx?id=2343 escrita http www.linhadecodigo.com.br artigo.aspx?id=2354 da forma que as aplicações foram construídas nos artigos citados a idéia era apenas exemplificar as formas de trabalho com sap connector não me apeguei em nenhum momento em desenvolver em camadas porém para se trabalhar com versões mais recentes do vs será necessário desenvolver as partes do proxy e rfcs do sap em uma class library e então gerar uma dll deste projeto no vs 2003 e importar essa dll gerada no vs2005 vs2008 basicamente é este o workaround que existe para se trabalhar com versões mais recentes do vs utilizando o sap vou iniciar a explicação mostrando como é a geração da dll através da class library do visual studio 2003 passando para as referências das dlls necessárias no vs2005 vs2008 e finalizando com a criação da mesma aplicação de leitura do sap criada anteriormente mas utilizando as versões mais recentes do vs a geração da dll consiste em criar um novo projeto do tipo class library dentro da solution e realizar toda a parte de inclusão do proxy onde serão inseridas as rfcs dentro deste novo projeto veja a figura 1 a solution explorer com o projeto de class library codificando.net e-magazine www.codificando.net out nov 2009 23[close]
p. 24
workaround com o .net sap connector 2.0 e-magazine figura 2 solution explorer do vs2008 figura 1 solution explorer do vs2003 com a class library e seus arquivos agora que a solution foi criada é hora de adicionar as referências necessárias para trabalhar com a dll gerada pela class library do vs2003 para utilizar as rfcs do sap são necessárias três novas referências para a nova aplicação funcionar as referências são 1 dll da class library gerada no exemplo é chamada de interfacesap.dll dll do sap connector 2.0 que está na pasta de instalação do sap connector geralmente fica dentro de c program files sap sap .net connector 2.0 sap.connector.dll referência do próprio .net para system.web.services que é através desta tecnologia que o .net se conecta ao sap usando o componente do sap connector após esta alteração simples no projeto que havia sido criado anteriormente uma dll referente à sua class library é compilada e ficará na pasta de build do seu projeto agora que já existe a dll que faz os meios de campo entre o net e o sap é necessário criar uma aplicação no vs2005 e/ou vs2008 para utilizar esta dll e conseguir trabalhar com o sap vamos então criar um projeto do vs2008 do tipo windows forms application usarei o c express para mostrar que com a versão express do visual studio também é possível realizar esta tarefa um alerta interessante é que a forma que será realizado para o vs2008 pode ser utilizada para o vs2005 também sem nenhuma mudança significativa a figura 2 exibe o projeto criado no vs2008 2 3 codificando.net e-magazine veja a figura 3 e 4 as referências do projeto antes e depois de adicionar estas acima www.codificando.net out nov 2009 24[close]
p. 25
workaround com o .net sap connector 2.0 e-magazine acompanhe a listagem 1 os códigos em c para acessar o sap e popular um datatable private void acessarsap try lendosap proxy new lendosap xxxxx bay2_n2rv_rpcamtable tabelasap new bay2_n2rv_rpcamtable proxy.bay2_n2rv_rfc_pxp_camphref tabelasap figura 3 referências do projeto antes da adição necessária datatable dt new datatable dt.columns.add codigo dt.columns.add nome foreach bay2_n2rv_rpcam linha in tabelasap datarow dr dt.newrow dr codigo linha.codca dr nome linha.descc dt.rows.adddr datagridview1.datasource dt catch exception ex messagebox.show ex.message codificando.net e-magazine figura 4 referências do projeto depois das adições necessárias listagem 1 código em c do método acessarsap agora que as referências necessárias foram inclusas no projeto vamos adicionar um datagridview no formulário e provar que a solução funciona no método load do formulário adicionamos uma chamada para o método acessarsap que carregar os dados na grid a execução da aplicação com este código dá um retorno muito próximo do que foi apresentado no artigo de leitura do sap utilizando o vs2003 veja a figura 5 como ficou o resultado da aplicação construída com c 2008 express www.codificando.net out nov 2009 25[close]
Comments
no comments yet

























