/gateway-wiz-template

Wiz Ocelot Gateway Template

Primary LanguageC#MIT LicenseMIT

Wiz - Gateway

Desenvolvimento, por onde começar

Passos para execução do projeto:

  1. Abrir Prompt de Comando de sua preferência (CMD ou PowerShell);

  2. Criar pasta para o projeto no local desejado;

  3. Executar os seguintes comandos;

dotnet new -i Wiz.Dotnet.Template.Gateway
dotnet new wizgateway -n [NomeProjeto]

  1. Executar comando para configurar aplicação em modo (HTTPS);

dotnet dev-certs https --trust

  1. Incluir configurações de sistema SSO (Single Sign-On) no caminho abaixo:

Local

├── src (pasta física)
  ├── Wiz.[NomeProjeto].Gateway (projeto)
    ├── appsettings.{ENVIRONMENT}.json

Dentro do arquivo appsettings.{ENVIRONMENT}.json, há o conteúdo para modificação das variáveis:

  "IdentityServer": {
    "ProviderKey": "PROVIDER_KEY",
    "Authority": "AUTHORITY",
    "ApiName": "API_NAME",
    "ApiSecret": "API_SECRET"
  }
  1. (Opcional) Inserir chave do Application Insights conforme configurado no Azure no arquivo appsettings.{ENVIRONMENT}.json.
  "ApplicationInsights": {
    "InstrumentationKey": "KEY_APPLICATION_INSIGHTS"
  }

Caso não há chave de configuração no Azure, não é necessário inserir para executar o projeto local.

Docker

├── Dockerfile

Dentro do arquivo Dockerfile, há o conteúdo para modificação das variáveis:

ENV ApplicationInsights:InstrumentationKey=KEY_APPLICATION_INSIGHTS
ENV IdentityServer:ProviderKey=PROVIDER_KEY
ENV IdentityServer:Authority=AUTHORITY
ENV IdentityServer:ApiName=API_NAME
ENV IdentityServer:ApiSecret=API_SECRET

Execução do projeto

Visual Studio

  1. Executar projeto via Kestrel;

Executar o projeto via Kestrel facilita a troca de ambientes (environments) e a verificação de logs em execução da aplicação em projetos .NET Core. Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:

├── src (pasta física)
  ├── Wiz.[NomeProjeto].Gateway (projeto)
    ├── Properties (pasta física)
      ├── launchSettings.json

Dentro do arquivo launchSettings.json, há o conteúdo que indica a configuração de ambiente via Kestrel:

    "Wiz.[NomeProjeto].Gateway": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }

Visual Studio Code

  1. (Recomendado) Instalar extensões para desenvolvimento:
  1. (Recomendado) Instalar extensões para testes:
  1. Executar projeto via Kestrel (Tecla F5);

Por padrão, todo projeto executado no Visual Studio Code é executado via Kestrel (Tecla F5). Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:

  ├── .vscode (pasta física)
    ├── launch.json
  1. Utilizar a função task para executar ações dentro do projeto. A função está presente no caminho do menu abaixo:
Terminal -> Run Task
  1. Selecionar a função task a ser executada no projeto:
    • clean - Limpar solução
    • restore - Restaurar pacotes da solução
    • build - Compilar pacotes da solução

Docker

  1. Executar comando na raiz do projeto:

docker-compose up -d

  1. logs de execução:

docker-compose logs

  1. Parar e remover container:

docker-compose down

Estrutura

Padrão das camadas do projeto:

  1. Wiz.[NomeProjeto].Gateway: responsável pela camada de disponibilização dos endpoints e autenticação dos microsserviços.

Formatação do projeto dentro do repositório:

├── src 
  ├── Wiz.[NomeProjeto].Gateway (projeto)
├── Wiz.[NomeProjeto] (solução)

Dependências

Build e testes

Não há obrigatoriedade de realização de testes unitários ou de integração. Todos os testes são executados pelos microsserviços disponibilizados.

Sonar

  1. Dentro do arquivo dos projetos (.csproj) no campo PropertyGroup, é necessário adicionar um GUID no formato abaixo:
<PropertyGroup>
  <ProjectGuid>{b5c970c2-a7cc-4052-b07b-b599b83fc621}</ProjectGuid>
</PropertyGroup>
  1. O GUID pode ser coletado no arquivo da solution ou criado pelo site: https://www.guidgenerator.com/.

CI/CD

README

  • Incluir documentação padrão no arquivo README.md.