Hoje vamos criar um projeto simples para implementarmos as quatro operações básicas (Buscar, Adicionar, Alterar e Remover ) e com isso começarmos a manipular as informações no MongoDB.

Código deste post disponível em: https://github.com/Baldotto/CRUD.MongoDB

1 – Requisitos

2 – Setup da Aplicação

  • Criaremos uma solução conforme imagem abaixo:

  • Vamos dividir a aplicação em quatro camadas conforme imagem abaixo:

  • Na camada 0 – Vamos criar um projeto ASP.NET Core Web Application / WebAPI conforme imagens

    • Na camada 1, 2 e 3 vamos criar um projeto .NET Stantard para cada camada conforme imagens abaixo:

  • Com todas as camadas criadas temos que finalizar o setup instalando o driver do MongoDB, AutoFac e o Swagger, são passos simples! Vamos executar o comando install-package MongoDB.Driver no pakage manager console no projeto Data.MongoDB conforme imagem abaixo:

 

  • Vamos executar o comando install-package AutoFac no pakage manager console no projeto CrossCutting.IoC e no projeto VB.CRUD.Service.WebAPI  e o comando Autofac.Extensions.DependencyInjection somente no projeto VB.CRUD.Service.WebAPI conforme imagem abaixo:

  • Vamos executar o comando install-package Swashbuckle.AspNetCore no pakage manager console no projeto VB.CRUD.Service.WebAPI conforme imagem abaixo:

Finalizamos o setup e podemos partir para implementação!!

3 – Implementação

Link para download do código:
https://github.com/Baldotto/CRUD.MongoDB

Não achei uma boa ideia copiar o código diretamente no post, pois ficaria muito cansativo. Disponibilizei todo o projeto no link acima e vou fazer uma breve descrição das camadas.

Temos quatro camadas, aí aparece uma dúvida. Por onde deveríamos começar? Esta postagem não tem relação alguma a padrões de desenvolvimento, mas vamos seguir algumas ideias existentes dentro do DDD, quem quiser se aprofundar mais sobre o assunto existe o livro Domain Driven Design do Eric Evans. Vamos começar com a concepção da camada de Domínio e estrutura das nossas classes e assim modelar o funcionamento da nossa aplicação.

Domain – A ideia desta aplicação é implementar o CRUD apontando para um MongoDB. Fiz um exemplo muito simples, por isso neste primeiro momento o domínio vai existir somente com a Classe Post e Entity.

Service – É a camada que vai expor os serviços para consumo a partir da tecnologia WebAPI, que possui apenas uma controller para realizar as 4 operações e não teremos uma camada intermediária como application, utilizada por muitas aplicações web. Estamos executando a controller chamando diretamente o repositório, devido ao baixo nível de complexidade desta aplicação.

Infra – Camada onde será implementada o acesso aos dados, neste caso as configurações e implementações com o driver do mongoDB.

CrossCutting – Camada que fornece  “suporte” a toda aplicação, neste cenário temos um projeto para injetarmos dependências utilizando o AutoFac.

4 – Executando a aplicação

  • Primeiro passo será configurar o projeto correto como start da aplicação conforme imagem abaixo:

  • Ao inicializar a aplicação o resultado esperado será este:

  • Executando a chamada do POST e verificando os resultados:
    • DTO utilizado:
      • {
        "titulo": "Meu primeiro teste",
        "conteudo": "Vamos ver como isso funciona!"
        }
    • Resultados:

Baixem o código, façam seus testes! Espero que este exemplo possa ajudar.

Lembrando que para a aplicação executar com sucesso o mongoDB precisa estar iniciado conforme passos descritos aqui: 
http://www.100loop.com/introducao-ao-mongodb-docker-para-iniciantes/

Qualquer dúvida estou a disposição no e-mail: contato@viniciusbaldotto.com.br

Até logo!