Escolha uma Página

Faala time. Bom ou não?

Primeiramente Feliz 2020 a todos. A muito tempo não escrevo. Foram muitos acontecimentos neste final de ano, muitas coisas para resolver, mudanças… 😀 Mas voltar a escrever é sempre bom e, graças a Deus, estou de volta com o primeiro artigo deste ano. Bora?

Continuando a falar sobre Feature Toggle, neste artigo teremos um pouco de mão na massa. Vale deixar claro que nem tudo é só código mas particularmente gosto muito da parte prática. Desta forma consigo fixar melhor o conhecimento.

Se está chegando agora, não deixe de conferir os outros dois artigos:
Parte 1
Parte 2

O projeto

O grande objetivo é ver de forma prática como funciona a adoção de Feature Toggles em um projeto. Sendo assim, inicaremos a criação de uma aplicação MVC em .net core. Com o tempo vamos evoluir a aplicação para aprimorar os conhecimentos.

O desenho básico da aplicação é representado na imagem abaixo:

Desenho da aplicação do Feature Toggle

Será uma aplicação simples mas o seu modelo serve como implementação da estratégia de Toggles.

Basicamente será uma aplicação Asp.net Core MVC que consumirá uma API pública. Além disso será utilizado um serviço externo, o Config Cat, como provedor de toggles para a aplicação e utilizaremos uma biblioteca chamada Refit para consumir a API de forma simples.

Requisitos

  • Visual Studio Code / Visual Studio
  • .net core 3.1
  • Criar uma conta no ConfigCat

Config Cat

O Config Cat será o Toggle Service da solução, que nada mais é de uma interface onde os usuários poderão ligar ou desligar funcionalidades e estas refletirem na aplicação.

Este serviço possui uma camada gratuita, então não teremos qualquer problema para utilizá-lo.

  • É um formulário simples. Ao final você acessará um Dashboard já contendo um Toggle.

Criação do Projeto

O projeto poderá ser criado através do Visual Studio, selecionando uma aplicação Web, .net Core, MVC. No entanto, vou criar o projeto utilizando a linha de comando e editá-lo no Visual Studio Code. Este projeto é compatível com Windows, Linux e Mac.

Acesse o prompt de sua preferência e em seguida crie e acesse um diretório para conter o código-fonte da aplicação. Após definir um diretório de preferência, digite os seguintes comandos:

dotnet new mvc FeatureToggle -o . 
dotnet new sln FeatureToggle 
dotnet sln add FeatureToggle.csproj

A primeira linha cria um projeto do tipo MVC no diretório atual. A linha seguinte cria um arquivo de Solution e a terceira linha adiciona o projeto na Solution.
Criar uma solution é opcional, mas ao criá-la podemos maner a compatibilidade com o Visual Studio e abrir a solução com seus respectivos projetos.

Serão necessários alguns pacotes nuget para consumir a API e também para o consumo dos toggles através do ConfigCat. Digite os seguintes comandos:

dotnet add package refit --version 5.0.23
dotnet add package Refit.HttpClientFactory --version 5.0.23 
dotnet add package ConfigCat.Client --version 3.2.28

Ainda no diretório que contém o projeto, digite o comando “code .“. Lembrando que é necessário que o Visual Studio Code esteja instalado.

Após abrir o Visual Studio Code, crie a estrutura de acordo com a imagem a seguir:

Estrutura do projeto de Feature Toggle

Nesta estrutura temos a criação de alguns arquivos base para a solução:

  • Config
    • ConfigCatOptions.cs – Vai conter as configurações do config cat. A classe, neste momento será como segue:
  • Filters
    • FeatureToggleFilterAttribute.cs – Será um filtro que irá anotar as rotas da aplicação e gerenciará se determinada funcionalidade está disponível ou não. Neste momento a classe encontra-se vazia:
  • Service
    • IDogAPIService.cs – interface que será utilizada em conjunto com o Refit para consumir a API.
  • Toggles
    • Contract
      • IFeatureToggle.cs – Interface que será utilizada para criação dos features toggles

Considerações finais

A estrutura básica está pronta e por hoje está de bom tamanho. Nos próximos artigos vamos implementar o conteúdo das classes criadas e acrescentar funcionalidades ao projeto.

Se houve alguma dúvida, não deixe de me enviar comentários e também acessar o repositório contendo o código desenvolvido: https://github.com/codefc/serie-feature-toggle

É isso aí pessoal. Até o próximo artigo e um feliz 2020.