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:

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.
- Efetue o seu cadastro em https://app.configcat.com/signup

- É 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:

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:
- 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:
- 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.
- 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
- IFeatureToggle.cs – Interface que será utilizada para criação dos features toggles
- Contract

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.