GithubHelp home page GithubHelp logo

vestibularapi's Introduction

Projeto:

Tech Challenge FASE 3: Qualidade e Segurança no Desenvolvimento - Aplicação Prova e Processamento Resultado.


O Problema:

O Tech Challenge desta fase será a construção de dois microsserviços que devem se comunicar através de um broker como RabbitMQ ou SB (Service Bus).

Por exemplo: um microsserviço que recebe um input "gatilho" e dispara um evento para um broker que deve processar e salvar o dado em um banco de dados. Esse banco de dados pode ser o mesmo criado na primeira fase do curso.


Descrição do projeto:

Projeto desenvolvido pelo grupo de estudos da Pós Tech FIAP do curso: Arquitetura de Sistemas .NET com Azure.

Trata-se de uma aplicação no qual sua arquitetura é baseada em Event Driven e Microsserviços na estrutura de producer, fila, consumer e persistencia. Este projeto foi desenvolvido utilizando as tecnologias, a saber:

  • Linguagem de programação C# com os frameworks .NET e ASP. NET Core nas versões 8;
  • O serviço (service bus) de filas em nuvem da Azure e;
  • Banco de dados local.

Producer

Este serviço está separado em camadas com responsabilidades especificas, sendo:

  • A camada do Core, no qual, administra e implementa o modelo de domínio;
  • A camada de infraestrutura que representa os mapeamentos das entidades e respectivamente seus relacionamentos para a devida persistência no banco de dados e por fim;
  • A API que possui os endpoints responsáveis por realizar o cadastro dos alunos e provas, também, enviar as respostas de cada aluno relativo as provas para a fila e aguardar o processamento para apresentação do resultado.

Fila

Irá receber as provas, questões respondidas de cada aluno e aguardar o processamento para o resultado.

Consumer

Este serviço receberá da fila a prova preenchida por aluno e irá aplicar as regras de negócio específicas para processar o resultado e apresentar o ranqueamento do aluno.


Participantes do projeto:


Desenvolvimento (Como rodar):

Para executar esses projetos você precisa seguir as etapas abaixo:

"MassTransitAzure": {
   "Conexao": "Endpoint=sb://azureservicebustc3.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=PH1uXI/hSnOm5c5V1Z2w53P+cIz+Qrrjq+ASbKvikk8=",
   "NomeFila": "Fila"
 }
  • Abrir o projeto, preferencialmente, na IDE Visual Studio considerando que facilitará para a execução;
  • Configurar a api como startup project;
  • Rodar o comando update-database no package manage console apontando para o projeto de infraestrutura (neste instante, será criado um caderno e 30 questões automaticamente);
  • Clicar na opção, configurar startup projects, selecionar multiple startup projects e colocar o projeto consumidor quanto o projeto vestibularapi como start;
  • Após iniciar o swagger realizar as devidas interações com a aplicação;
  • 1º: cadastrar o aluno (Aluno/CreateAluno);
{
  "id": 0,
  "nome": "AlunoTeste",
  "cpf": "11111111111",
  "dataCadastro": "2024-03-19T22:14:11.437Z",
  "cadernoId": 1,
  "pontuacao": 0
}
  • 2º: cadastrar a prova com as suas respectivas respostas (essas provas que vão para a fila) (Prova/CreateProva);
{
  "alunoId": 1,
  "cadernoId": 1,
  "respostas": [
    {
      "id": 0,
      "provaId": 0,
      "NumeroQuestao": 1,
      "alternativaEscolhida": "B"
    },{
      "id": 0,
      "provaId": 0,
      "NumeroQuestao": 2,
      "alternativaEscolhida": "B"
    },{
      "id": 0,
      "provaId": 0,
      "NumeroQuestao": 3,
      "alternativaEscolhida": "B"
    },{
      "id": 0,
      "provaId": 0,
      "NumeroQuestao": 4,
      "alternativaEscolhida": "B"
    }
  ]
}
  • 3º: Clicar no endpoint de avaliar o aluno e passar o id do aluno criado no passo 1º (Aluno/AvaliarAluno);
  • A fim de tornar o exemplo mais real, é possível incluir mais alunos e respostas repetindo os passos 1º, 2º e 3º;
  • 4º: Clicar no endpoint de ranking para poder gerar o ranqueamento (Ranking/RankearAluno);

vestibularapi's People

Contributors

daviemanuelnogueira avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.