.NET

Tecnologia Microsoft .NET

SharePoint – Desenvolvimento em Camadas

Neste artigo vou demonstrar como desenvolver um aplicativo usando o ambiente SharePoint 2010.

Usarei um exemplo bem simples para ilustrar a questão da arquitetura e como desenvolver de forma nativa, sem necessidade de utilização de banco de dados externo a nossa aplicação.

Vou assumir como premissa que você ja tenha o ambiente SharePoint 2010 assim como o Visual Studio 2010 ou o Visual Studio 2012 instalado e configurado.

Utilizarei uma abordagem simples em 3 camadas para a arquitetura da aplicação.

A aplicação que será desenvolvida, será um “web diário“. A aplicação em si não é relevante (crie a sua própria), o que é importante neste artigo, é entender como desenvolver nativamente em SharePoint.

Então vamos por a mão na massa.

Para baixar o projeto Login to view.

 

A estrutura da nossa aplicação deverá ficar conforme a imagem abaixo:

 

image

Vamos criar nosso projeto. Com o Visual Studio aberto, clicamos em New Project (conforme imagem abaixo).

image

Em seguida será aprestada a tela para criação do projeto. Vamos preencher conforme a imagem a seguir:

image

Depois de preenchido o nome do projeto e clicado em “OK”, o Visual Studio vai iniciar o Wizard de criação de um projeto de Visual Webpart novo.

Neste Wizard, dizemos em qual o servidor do Sharepoint vamos utilizar para desenvolvimento, selecionamos “Deploy as a farm solution” e clicamos em Finish.

image

 

Assim que o Visual Studio terminar de gerar o projeto, teremos a seguinte configuração no nosso projeto:

image

Vamos renomear a Webparte que tem o nome de “VisualWebPart1” para “WPDiario” e dentro da pasta Features vamos renomear a “Feature1” para “FTDiario”. Não vou entrar em detalhes sobre a questão das Features neste artigo.

Agora, vamos criar a estrutura de pastas para a nossa aplicação.

Clique com  o botão direito sobre o projeto “WebDiario” e clique em Add -> New Folder e coloque o nome de “DAL” na pasta criada. Repita este procedimento para criar as pastas “BUS”, “ENT”, “USR”.

Após a criação de todas as pastas, arraste a webpart “WPDiario” para dentro da pasta “USR” conforme a imagem abaixo:

image

Vamos agora criar uma classe Diário para cada uma das camadas envolvidas na nossa aplicação:

Daremos os seguintes nomes para as classes:

Na pasta BUS: DiarioBus.cs

Na pasta DAL: DiarioDal.cs

Na pasta ENT: DiarioEnt.cs

Ficamos com a nossa aplicação da seguinte forma:

image

 

Agora que já temos a estrutura do projeto pronta para codificar, vamos criar a lista no SharePoint, que servirá como uma tabela de banco de dados para a nossa aplicação.

Vamos abrir o site onde estamos trabalhando nossa aplicação SharePoint. No meu caso, estou usando um site criado zerado e com o padrão de layout do sharepoint conforme imagem abaixo.

image

 

Vou partir da premissa que você sabe criar uma lista no sharepoint e já vou apresentar a lista pronta. Só para exclarecer, estou usando um “Custom List” com o nome de “LST_Diario”.

image

Uma vez que já temos nossa lista criada, podemo voltar para o Visual Studio e começar a codificar nosso projeto.Data

Vamos começar a codificar pela classe de entidade, pois precisamos mapear os atributos entre a lista do sharepoint “LST_Diario” e a classe de entidade “DiarioEnt.cs”.

Abrimos então o arquivo DiarioEnt.cs e adicionamos as linhas de código abaixo:

image

 

Após criarmos nossa classe de entidade que mapeia a lista do sharepoint, vamos codificar a classe “DiarioDal” da camada de dados “DAL”.

Implementarei inicialmente um método listar simples sem filtros. Não é uma boa prática, pois trará todos os dados da lista, mas para fins de exemplo está bom.

image

 

Uma vez a camada de dados pronta, podemos então implementar a camada de negócios “BUS”.

No nosso caso abaixo, não farei nenhum tratamento com regra de negócio, mas como manda a regra, eu tenho que sempre passar pela camada de negócio para chegar a camada de usuário, por isso , nosso método de negócio será somente uma chamada a classe de dados e retorno da lista conforme abaixo.

A modelagem mais adequada para a questão das listas seria ter uma classe DiárioEnt e uma classe ItemDiarioEnt, mas para simplificação do exemplo estou adotando a própria classe de DiarioEnt para listar seus itens.

Classe de negócio “DiarioBus” fica da seguinte forma:

image

 

Vamos agora codificar nossa Webpart. Vamos clicar em WPDiario e entrar no modo de design. Vou adicionar um objeto “botão” e um “GridView”.

O Botão tem como objetivo chamar o método da camada de negócio e o GridView exibirá os dados da lista.

O exemplo deverá ficar da seguinte forma:

image

Vamos dar um duplo clique no botão e iniciar a codificação da chamada ao método de negócio.BUS

 

image

Assim que tivermos codificado nosso exemplo, podemos fazer o Deploy para fazer o teste com nossa webpart. Lembre-se de adicionar algums itens na lista do sharepoint, caso contrário, não haverá retorno devido ao fato de não haver registro na lista do sharepoint.

Adicionei 3 linhas de registro para testar a aplicação.

SNAGHTML14c0b24b

Com a nossa webpart publicada, podemos acessar a página do sharepoint para testar nossa aplicação.

A página deverá ficar com a seguinte cara:

SNAGHTML14e0989d

Depois que clicamos no botão “Carregar Grid” nossa aplicação vai na lista do SharePoint buscar as informações da lista conforme a imagem abaixo.

SNAGHTML14e20387

 

Espero que tenha gostado do artigo.

Qualquer consideração que deseje fazer, entre em contato.

Márcio Pulcinelli.


Criando Virus de Computador

imageAcredito que este seja o artigo mais controverso que estou escrevendo, mas vou tentar dar uma visão de como funciona um vírus de computador, e ainda apresentar um código fonte na prática. De qualquer forma para entender como funciona, vou me utilizar de conceitos de biologia para definição de vírus.

Sei que a Wikipedia não é um lugar muito bom como fonte de referência, mas a definição que vou citar abaixo está bem clara do que é um vírus.

Um vírus é um pequeno agente infeccioso que pode se replicar somente no interior das células de organismos vivos. Vírus infectar todos os tipos de organismos, de animais e plantas para bactérias e archaea.

No caso de um computador, um vírus pode ser qualquer autômato (produto de software), que atue internamente fazendo com que o sistema operacional tenha comportamentos indesejados ou fora do padrão de execução. Ou seja, efetuando atividades que não são desejadas pelo usuário, como por exemplo a captura das teclas do teclado que foram digitadas pelo usuário, efetuar a leitura dos e-mails do usuário e envia-los para um outro servidor e muitas outas atividades que possam ser prejudicial ao usuário de uma forma geral.

Um vírus é sempre um parasita, ou seja, está sempre “escondido” ou “hospedado” em algum outro agente, que no caso do ser humano, são as células do corpo. No caso de um computador, um vírus pode se hospedar em algum outro software que tenha uma finalidade legítima que o usuário esteja esperando.

O que seria se hospedar em algum outro software? Quando digo “se hospedar”, na verdade quero dizer que o código do vírus deverá ser inserido (ou injetado) no código binário original do programa, desta forma infectando o programa hospedeiro. Uma outra abordagem seria o próprio programador do código original injetar, de forma maliciosa, o código que libertará o vírus no computador.

A abordagem que utilizaremos neste artigo será a de injetar de forma maliciosa o código que irá liberar o vírus dentro do computador. Trocando em miúdos, o nosso sistema vai gerar um novo executável que será o nosso vírus.

Como o intuito deste artigo é demonstrar como o vírus atuará, criarei uma aplicação hospedeira bastante trivial (uma calculadora) onde o usuário vai clicar e executar uma soma (bastante simples por sinal), mas que na verdade internamente vai infectar o sistema com um vírus. O nosso trabalho sobre o vírus será um pouco mais complexo, pois é onde queremos nos focar e dedicar mais atenção.

De qualquer maneira, vamos começar pelo começo!

O Hospedeiro

Criaremos agora nossa aplicação hospedeira (que estará infectada com o vírus). Para isso utilizaremos a linguagem C# por nos fornecer algumas vantagens, de qualquer forma, você poderá implementar a ideia em qualquer linguagem de programação que desejar.

Vamos abrir o Visual Studio para começar a criar nosso aplicativo hospedeiro. Nele vamos criar um formulário com dois campos para efetuar cálculos de soma e subtração.

SNAGHTMLef6ad

Assim que clicarmos em OK, nosso projeto será criado pelo Visual Studio. Existe um motivo para a utilização do .NET framework 2.0, que é fazer com que nossa aplicação rode no maior número de sistemas operacionais possível.

Se estiver tudo correto, você deverá estar vendo esta tela abaixo:

SNAGHTML1373d8

Desenhe o seu sistema hospedeiro como desejar, no meu caso montei uma calculadora (A mais simples que consegui) conforme a imagem abaixo.

SNAGHTML1b56b7

E o código da calculadora deverá ficar como apresentado abaixo:

SNAGHTML27b145

Neste momento já temos nossa calculadora funcionando, não é a mais bonita, mas funciona. Vamos compilar e colocar para funcionar, veja na imagem abaixo o resultado.

SNAGHTML2a95aa

Esta singela calculadora hospedará internamente o vírus que iremos criar agora.

A princípio pensei em criar o vírus usando Visual C++, pois me dá um conjunto de funcionalidades enorme para programação Windows, mas para fins educacionais, continuarei usando o próprio C#. Acredito que facilitará o entendimento do nosso exemplo.

O Vírus

Bom… Agora que já temos o nosso hospedeiro, vamos criar o autômato que se hospedará nele (nosso vírus). A questão das rotinas de execução do vírus dependem muito das heurísticas deste determinado vírus. Pensei em algumas opções e cheguei a conclusão de que, para este exemplo, vamos fazer o vírus capturar teclas do teclado para obter conversas e senhas do usuário e enviar esses dados por e-mail para uma conta qualquer.

Então! Mão a obra!!!

Vamos adicionar agora um outro projeto dentro da solução do Visual Studio na qual criamos nosso primeiro projeto (a calculadora).

SNAGHTML8b2c50

É importante que o vírus tenha um nome bastante parecido com os nomes dos arquivos do sistema operacional, pois isso fará com que fique mais complicado saber se o arquivo é um vírus ou um arquivo do sistema operacional.

Vamos criar uma aplicação do tipo “Windows Forms Application”.

Após criado o projeto, sua solução deverá ficar como a imagem abaixo:

SNAGHTML935f22

Vamos excluir o “Form1.cs”, pois ele não fará parte do nosso vírus.

SNAGHTML94c821

Depois que excluir o arquivo, crie uma classe com o nome de Win32.cs. Essa classe será responsável pelas funções da API do Windows que utilizaremos na construção do vírus.

Vou usar neste exemplo o conceito de Hook que é um mecanismo pelo qual um aplicativo pode interceptar eventos, tais como mensagens, ações do mouse e teclas digitadas. Uma função que intercepta um determinado tipo de evento é conhecido como um procedimento de Hook. Um procedimento de Hook pode agir em cada evento que recebe, em seguida, modificar ou rejeitar o evento.

Sei que a utilização de HOOK não é um conceito muito difundido, pois vai bem a fundo no sistema operacional, mas acredito que seja um dos principais conceitos para entender o desenvolvimento para Windows mais a fundo.

Vamos codificar nossa classe Win32.cs, o código segue abaixo (O código é pequeno, mas bastante útil em certas situações):

image

Essa é a nossa pequena classe que fará quase todo o trabalho de captura das teclas do teclado da máquina infectada.

Com a classe Win32.cs pronta, podemos agora partir para o desenvolvimento principal. Utilizarei a própria classe Program.cs, que foi gerada pelo Visual Studio, mas farei algumas modificações para que ela funcione como desejado.

Vamos abrir o código da nossa classe Program.cs e codificar conforme abaixo:

image

image

image

image

É importante observar que este código é somente para ilustrar como fazer um vírus, ele precisa ser bastante otimizado e melhorado. A título de exemplo, acho que está de bom tamanho, pois o intuito deste artigo é demonstrar como um vírus pode ser criado e não criar um vírus de verdade.

Assim que o código acima estiver criado, podemos compila-lo e testa-lo. Como essa aplicação não tem interface, para verificar se tudo está funcionando de forma correta, é necessário abrir o arquivo log.txt que é gerado através da rotina abaixo no nosso código.

image

Esta rotina é responsável por armazenar as teclas digitadas. Então, coloque a aplicação para rodar (ela vai rodar em background) e digite algum texto em qualquer lugar (no Word, Notepad, Excel, onde você quiser) e o conteúdo será armazenado.

Já temos o nosso vírus criado. Agora precisamos infiltrar o vírus no hospedeiro (nossa calculadora) e fazer com que o hospedeiro libere o vírus no sistema para que ele comece a capturar as teclas.

Infiltrando o Vírus no Hospedeiro

Esta é a parte final do artigo. Para começarmos, vamos voltar no projeto da calculadora, clicar com o botão direito sobre o projeto e em seguida em Properties.

SNAGHTMLceaed8

A seguinte tela se abrirá:

SNAGHTMLd27707

Após clicar no item Resources, clique em Add Existing File… Conforme a imagem abaixo:

SNAGHTMLd5431b

Será aberta uma caixa de seleção de arquivos conforme a imagem abaixo:

SNAGHTMLd8c333

Selecione o executável do vírus e clique em “Open”. Você deverá ver a janela da seguinte maneira:

SNAGHTMLdd1a76

Esta é a forma mais fácil de hospedar um vírus dentro de um hospedeiro. Existem outras formas mais baixo nível, talvez eu aborde em algum outro artigo, pois vai demandar um conhecimento mais aprofundado de Assembly ou IL que deixaria muito extenso este artigo.

Vamos agora finalizar codificando as rotinas de liberação do vírus através do hospedeiro.

Quando o usuário executar a calculadora, o vírus deverá ser liberado no sistema e deverá iniciar suas atividades.

Então, vamos iniciar a codificação. Como o Visual Studio já fez uma parte do trabalho, que é transformar o nosso vírus em array de bytes, precisamos agora extrair o vírus  de dentro do hospedeiro.

Vamos criar duas funções dentro do frmCalculadora.cs para fazer a extração do vírus e em seguida executar o vírus na máquina.

Segue abaixo o código das funções:

SNAGHTML4d9878

A primeira função (ou método), extrai o vírus para alguma pasta/nome arquivo passado por parâmetro, a segunda função executa o vírus na máquina.

Até aqui já temos uma boa ideia de como um vírus é hospedado em um outro aplicativo. Agora falta chamar os dois métodos que foram criados para liberar o vírus na máquina e coloca-lo em execução.

No construtor da classe frmCalculadora.cs vamos adicionar as chamadas aos métodos que criamos. Fazendo com que o vírus seja liberado e inicie seu trabalho conforme o código abaixo:

SNAGHTML5827ad

O código acima é bastante primário, o ideal seria desenhar um método que busque locais remotos dentro dos diretórios de sistema para que se torne mais complicado a descoberta do vírus. O nome do vírus também deveria ser um nome muito parecido com os nomes dos arquivos da pasta system, para manter a dificuldade. Seria também importante ajustar o atributo de visibilidade do arquivo para hidden, colocar uma chamada ao vírus no registro do Windows ou algum outro meio que faça com que o arquivo seja executado sempre que o sistema operacional for carregado.

De qualquer forma, como foi dito no início deste artigo, o intuito não era criar um vírus de verdade, mas sim apresentar como poderia ser feito.

Vamos agora compilar e testar o resultado do projeto. Rodamos a calculadora e automaticamente o vírus será lançado no sistema operacional e será executado passando a agir sozinho.

Se você fez tudo corretamente, e rodou a calculadora, já deve estar no diretório o seu vírus e residente em memória.

SNAGHTML7c827a

SNAGHTML7e60c7

Assim que houver alguma tecla pressionada, será gerado um arquivo log.txt no mesmo diretório em que o vírus está residente e as teclas estarão sendo capturadas e armazenadas neste arquivo. Se fosse um vírus de verdade, este arquivo deveria ser enviado para algum servidor na internet.

SNAGHTML842cbd

Se você abrir seu arquivo, verá as teclas que foram capturadas diretamente através do sistema de Hook do Windows.

Baixe o código fonte completo aqui –> Login to view.

Espero que tenham gostado do artigo. Como eu já disse algumas vezes, o intuito deste artigo não era desenvolver um vírus de verdade, mas sim conceber a ideia por traz da criação do vírus.

Este artigo é para que você intenda o funcionamento e possa se defender deste tipo de ameaça sabendo com o que está lhe dando. Nunca criar algo deste tipo para utilizar de forma antiética.


Até o próximo artigo. Deixe seu comentário!

Márcio Pulcinelli @ OminaVincit!


Gerenciando "Global Lists" no TFS

Neste artigo demonstrar como adicionar, atualizar e excluir uma determinada lista global (global list) para uma determinada coleção do Team Foundation.

Segundo a Microsoft, por meio de listas global, você pode minimizar o trabalho que é necessário para atualizar uma lista em que vários tipos de “Work Items” compartilham. Listas globais são listas de seleção que você pode incluir em um ou mais campos e tipos de “Work Item”. Você pode definir listas globais para uma equipe de projeto, uma coleção de equipe de projeto, um modelo de processo, ou fluxo de trabalho global.

É possível definir uma lista global no seu próprio arquivo de definição, em um para um tipo de “Work Item”, ou no “Work Flow” global. Quando você usa a definição de lista global, você pode gerenciar as listas globais que estão definidas para uma coleção usando os seguintes comandos na ferramenta “witadmin” através da seguinte linha de comando:

destroygloballist:  Exclui uma determinada lista global.

exportgloballist: Exportações das listas globais para um arquivo XML, ou para a janela do Prompt de Comando.
importgloballist: Importações das listas globais de um arquivo XML. Se você tentar importar uma lista global que já existe no servidor, um aviso perguntando se você deseja substituir o que está no servidor. Se você tentar importar uma lista global que já não existe, o comando cria uma nova lista global.
listgloballist: Exibe o nome de cada lista global definido no servidor.
O utilitário de linha de comando witadmin  está localizado no seguinte caminho “Drive: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE” no computador cliente que executa o Team Explorer. Para máquinas de 64 bits, a ferramenta está no “Drive: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE“.
Para que a ferramenta funcione de forma correta, você deverá ter alguns privilégios. Para a coleção de projeto de equipe, onde as listas globais são definidas, você deve ter o conjunto de permissões a seguir:
  • Para exportar ou listar listas globais, você deve ser membro do grupo “Readers” ou ter seus “View Work Items” devem estar ajustados para “Alow”.
  • Para destruir ou importar listas global, você deve ser um membro do grupo de segurança do “Team Foundation Administrators”  ou do grupo de segurança “Project Administrators”.
É importante frisar que mesmo se você fizer logon com permissões administrativas, você deve abrir uma janela de prompt de comando em nível elevado para executar essa função em um servidor que está executando o Windows Server 2008. Para abrir uma janela de Prompt de Comando privilegiada, clique em Iniciar, clique com Prompt de Comando e selecione Executar como Administrador.
Exemplos de linha de comando:
destroygloballist
witadmin destroygloballist /collection:CollectionURL /n:GlobalListName [/noprompt] [/force]
exportgloballist
witadmin exportgloballist /collection:CollectionURL [/f:FileName] [/e:Encoding]
importgloballist
witadmin importgloballist /collection:CollectionURL /f:FileName [/e:Encoding]
listgloballist
witadmin listgloballist /collection:CollectionURL
Abaixo segue um exeplo de como utilizar o comando:

Exibindo os nomes das Listas Globais

O exemplo a seguir mostra as listas globais definidas no servidor. O exemplo exporta as listas global usando o padrão UTF-8 encoding.
witadmin listgloballist /collection:http://ServidorTFS:8080/tfs/Collection1

Exportar a definição de listas globais

O exemplo a seguir exporta a lista global.
witadmin exportgloballist /collection:http://ServidorTFS:8080/tfs/Collection1 /f:mygloballists.xml
O exemplo a seguir exporta as mesmas listas globais para o mesmo servidor, mas usa a codificação Unicode (UTF-7):
witadmin exportgloballist /collection:http://ServidorTFS:8080/tfs/Collection1 /f:mygloballists.xml /e:utf-7

Importar a definição de listas globais

O exemplo a seguir importa lista global.
witadmin importgloballist /collection:http://ServidorTFS:8080/tfs/Collection1 /f:mygloballists.xml
O exemplo a seguir importa as mesmas listas globais para o mesmo servidor, mas usa a codificação Unicode (UTF-7).
witadmin importgloballist /collection:http://AdventureWorksServer:8080/AWTeam/Collection1 /f:C:mygloballists.xml /e utf-7
Espero que tenham gostado do artigo. Qualquer questão, me escreva.
Márcio Pulcinelli @ OminaVincit!

Como Excluir Coleções do Team Foundation

SNAGHTML8ee9e4Neste artigo vou apresentar como excluir uma coleção do Team Foundation. Para isso, vamos em primeiro lugar verificar o nome de nossas coleções.

 

 

 

 

Vamos abrir o Team Foundation Server Administration Console.

SNAGHTML91e477

Assim que você clicar no ícone acima, a seguinte tela deverá se abrir.

SNAGHTML94fce7

Na imagem acima vemos duas coleções criadas, vamos então excluir a coleção “ProjetoTesteCollection”.

Para excluir uma coleção no TFS 2010, precisamos fazer isso através de linha de comando. O comando utilizado para tal é o TFSCONFIG COLLECTION.

TFSConfig Collection {/attach | /detach | /delete} [/collectionName:CollectionName] [/collectionDB:ServerName;DatabaseName] [/clone]

SNAGHTML9af4fb

Abra o prompt de comando conforme imagem acima e entre na pasta do Team Foundation:

SNAGHTML9d89ab

Digite a seguinte linha de comando:

TFSConfig Collection  /delete /collectionName:ProjetoTesteCollection

SNAGHTMLa04e51

Assim que digitar a linha de comando e pressionar <Enter>, o TFSConfig deverá perguntar se é realmente isso que você deseja fazer, conforme a imagem abaixo:

SNAGHTMLa368d3

Digite “Yes” e o TFSConfig excluirá sua coleção. Veja abaixo:

SNAGHTMLa67283

A partir deste momento sua coleção não mais existe no servidor do TFS assim como todos os projetos que existiam dentro desta coleção. É importante frisar que os sites do SharePoint não serão excluídos e nem a base de dados que foi criada no servidor do SQLServer.

Espero que tenham gostado do artigo. Qualquer dúvida me escreva.

Márcio Pulcinelli @ OminaVincit


Utilizando Connection Factory em C#

 image Este artigo tem como objetivo apresentar uma abordagem bastante factível para a utilização de Connection Factory utilizando a linguagem C#.

Vou abordar neste artigo como criar as classes que farão acesso a dados de forma transparente facilitando a manutenção do código posteriormente.

 

Você poderá encontrar mais informações em: http://ultradbfactoring.codeplex.com/

Primeira Etapa

Para começar, criaremos um projeto do tipo Class Library que armazenará nossas classes criadas e assim poderemos adicionar posteriormente nossas classes a qualquer projeto que desejarmos utilizar. Crie seu componente conforme a imagem abaixo:

 image

Vamos então excluir a classe "Class1.cs" que o Visual Studio criou. Em seguida vamos começar a criar nossas classes.

SNAGHTML4072cf

Uma vez deletada a classe, vamos criar nossa primeira classe. Vamos clicar em Add New Item em seguida escolher a opção Classe conforme imagem abaixo:

SNAGHTML431362

Chamaremos esta classe de ConnectionFactory.cs, pois será a classe que nos gerará os objetos de acesso a dados de forma dinâmica.

Assim que clicarmos em "Add", o Visual Studio irá gerar a classe para nós conforme a próxima imagem:

SNAGHTML45d8f1

Veja que nossa classe está criada. Iremos adicionar dois métodos nesta classe: um método para criar objetos de banco de dados e outro método para recuperar strings de conexão pelo nome.

O primeiro método que será criado é o:

image

Este método é responsável por recuperar a string de conexão através do nome da conexão dado no arquivo app.config.

Vamos agora implementar nosso método:

SNAGHTML4f190d

Já com o nosso primeiro método (GetConnectionStringByName) implementado, podemos seguir para a criação do segundo método de nossa classe. Este método tem como objetivo criar objetos de banco de dados.

image

Vamos criar o conteúdo do método para que possamos partir para a próxima etapa do nosso projeto.

SNAGHTML546181

Nossa classe completa e finalizada deverá ser implementada conforme abaixo:

image

image

image

Compilamos nosso código para verificar se até aqui está tudo conforme o planejado ou se tem erros no código e em seguida partiremos para a segunda etapa da criação do nosso componente.

Segunda Etapa

Na segunda etapa do nosso projeto, criaremos uma classe chamada de DataAccessHelper, que tratará as informações de acesso a dados, tais como Insert, Update, Delete e Select no banco de dados.

Para isso, vamos criar nossa classe conforme imagem abaixo:

SNAGHTML689d97

Assim que clicarmos em "Add", o Visual Studio criará a classe dentro do nosso projeto. Veja a imagem abaixo com a classe gerada:

SNAGHTML6a512d

A primeira ação que devemos tomar é implementar a interface IDisposable na nossa classe uma vez que queremos gerenciar o código em memória.

Esta classe conta com a seguinte estrutura:

image

Abaixo segue nossa classe completa e implementada:

image

image

image

image

image

image

Já temos nossa classe de acesso a dados e já temos a classe de DbFactory. Neste ponto já podemos compilar e verificar se nosso código está compilando ou se gerou algum erro. Se você tiver feito tudo certo, seu código estará compilando sem erros.

Terceira Etapa

Nesta etapa iremos testar nosso projeto. Para isso iremos criar um novo projeto dentro da Solution "DBFactory". A questão é: qual o tipo de solução criar? Poderíamos criar uma console app, entretanto como eu quero testar nosso projeto, vou criar um projeto de teste do Visual Studio para nosso projeto. Então mãos a obra!!

Vamos criar nosso projeto de teste conforme a imagem abaixo:

SNAGHTML84d7da

Assim que clicarmos em "OK" o Visual Studio irá gerar o projeto de teste dentro da solução DBFactory conforme apresentado abaixo:

SNAGHTML871a65

Com podemos visualizar na imagem acima, o Visual Studio criou uma classe chamada de UnitTest1.cs. Vamos excluir este arquivo para começar a codificar nosso teste.

Antes de iniciarmos nossos testes, temos que adicionar o arquivo App.Config ao projeto de teste.

SNAGHTML8ba2b7

Uma vez adicionado, vamos clicar com o botão direito sobre o projeto de teste "DBFActoryTeste" e clicar em "Properties" e em seguida em Settings conforme imagem abaixo:

SNAGHTML90605a

Clique então no link a direita "This project does not contain…" para criar um novo arquivo. Em seguida no campo "name", digite o nome que desejar (no meu caso criei o nome "strConexao"). No campo Type procure por (Connection string), o campo Scope deverá ficar como "Application", no campo value você deverá clicar no botão com os "…" para criar uma nova string de conexão para o seu banco de dados conforme imagem abaixo:

image

Para este exemplo estou usando uma base do Ms Access. Mas como já foi dito, este modelo de acesso a dados pode usar qualquer base de dados (desde que se tenha o provider para o banco de dados).

image

Vamos agora abrir nosso App.Config e visualizar o conteúdo:

image

Podemos ver que o Visual Studio Criou uma tag dentro de <connectionStrings> e deu o nome de "DBFactoryTeste.Properties.Settings.strConexao".

Para que nosso componente possa acessar esta string de conexão gerada, temos que adicionar a seguinte tag dentro do App.Config:

image

Esta tag AMBIENTE_ATIVO faz parte do nosso projeto e ela tem a função de apontar para a conexão que desejamos utilizar no nosso projeto.

Uma vez tendo configurado nosso App.Config, vamos escrever um método de teste para abrir a conexão com o banco de dados configurado. Para fazer isso, vamos clicar no nosso projeto de teste "DBFactoryTeste" com o botão direito do mouse e em seguida "Add" –> "Unit Test" para adicionar um novo Teste Unitário conforme imagem abaixo:

SNAGHTMLab71e8

Para testar se nossa conexão está aberta, vamos selecionar a propriedade "ConexaoAberta" e clicar em "OK". Assim que o botão de "OK" for selecionada, o Visual Studio vai gerar uma classe chamada "DataAccessHelperTest.cs" no nosso projeto de teste. Vamos ajustar o conteúdo desta classe conforme a imagem abaixo:

image

Para executarmos nosso teste acima, abrimos a janela "Test View" e nosso teste será exibido na lista conforme imagem abaixo:

SNAGHTMLb32a7c

image Clique neste botão para executar o teste.

Se todo seu código estiver correto, você deverá entrar em na janela "Test Result" e ver o seguinte resultado:

SNAGHTMLb95949

Então é isso pessoal, espero que tenham gostado do artigo.


Qualquer dúvida me escreva.

Márcio Pulcinelli @ OminaVincit