DenerViana-BuildingBlocks 1.0.35

dotnet add package DenerViana-BuildingBlocks --version 1.0.35
                    
NuGet\Install-Package DenerViana-BuildingBlocks -Version 1.0.35
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DenerViana-BuildingBlocks" Version="1.0.35" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DenerViana-BuildingBlocks" Version="1.0.35" />
                    
Directory.Packages.props
<PackageReference Include="DenerViana-BuildingBlocks" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DenerViana-BuildingBlocks --version 1.0.35
                    
#r "nuget: DenerViana-BuildingBlocks, 1.0.35"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DenerViana-BuildingBlocks@1.0.35
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DenerViana-BuildingBlocks&version=1.0.35
                    
Install as a Cake Addin
#tool nuget:?package=DenerViana-BuildingBlocks&version=1.0.35
                    
Install as a Cake Tool

Dener Viana - implementa o padrão RPC (Remote Procedure Call)

Visão Geral

Este repositório implementa um sistema de APIs que utilizam o padrão RPC (Remote Procedure Call) sobre RabbitMQ para promover comunicação eficiente entre serviços, com foco em escalabilidade, modularidade e flexibilidade. O projeto é composto por múltiplas aplicações, incluindo APIs para gerenciamento de usuários e clientes, além de um conjunto de "building blocks" reutilizáveis.

Funcionalidades

  • APIs RESTful para Usuários e Clientes: Permite listar, cadastrar e consultar entidades de usuários e clientes.
  • Comunicação via RabbitMQ (RPC): As APIs utilizam o padrão RPC para comunicação assíncrona e desacoplada entre os serviços.
  • Validação e Segurança: Validação avançada de rotas, dados e cabeçalhos, incluindo autenticação de requisições.
  • Documentação Automática com Swagger: Endpoints documentados e exploráveis via Swagger UI.
  • Monitoramento e Health Checks: Health checks configuráveis e integração com Serilog para monitoramento e logging avançado.
  • Integração com MongoDB e SQL Server: Suporte a múltiplos backends de dados.
  • Arquitetura Modular: Uso de "building blocks" para facilitar manutenção e evolução.

Arquitetura

  • Microserviços/Modular: Cada aplicação (Users API, Clients API) é separada e utiliza seus próprios contextos de dados, serviços de domínio e repositórios.
  • Camadas:
    • Presentation: Endpoints, validações e configuração de rotas.
    • Application: Serviços de aplicação e mapeamentos (AutoMapper).
    • Domain: Entidades, interfaces e regras de negócio.
    • Infra: Implementação de repositórios, contexto de banco de dados, integrações externas.
    • Building Blocks: Componentes compartilhados como middlewares, validações, notificações e interfaces.
  • Padrão de Injeção de Dependências: Configurado via BootStrapper em cada aplicação.
  • Documentação e Configuração via appsettings.json e SwaggerSettings.

Tecnologias Utilizadas

  • .NET 8.0 (C#)
  • RabbitMQ (mensageria e RPC)
  • MongoDB (armazenamento de clientes)
  • SQL Server (armazenamento de usuários)
  • Entity Framework Core
  • AutoMapper
  • FluentValidation
  • Serilog (logging)
  • Swagger (Swashbuckle) (documentação de APIs)
  • Polly (resiliência)
  • Docker (opcional para deploy)
  • HealthChecks

Configuração do Ambiente

Pré-requisitos

Variáveis e Configuração

Cada aplicação possui arquivos appsettings.Development.json para configurar:

  • MongoDbSettings (Clients API):
    • MongoDbConnection: string de conexão MongoDB
    • DatabaseName: nome do banco
  • ConnectionStrings (Users API):
    • SqlServerConnection: string de conexão SQL Server
  • AppSettings:
    • Chaves de autenticação e URLs permitidas
  • SwaggerSettings:
    • Título, descrição, contato, licença e versão da API
  • Serilog:
    • Nível de logs e integração com Elasticsearch

Edite os arquivos de configuração conforme seu ambiente.

Inicialização

# Restaurar dependências e compilar
dotnet restore
dotnet build

# Executar APIs (exemplo Users API)
cd src/Users/DenerViana.Rpc.RabbitMQ.Users.Api
dotnet run

Endpoints das APIs

Exemplos de Endpoints

Users API
  • GET /User: Lista todos os usuários
  • POST /User: Cria um novo usuário (requer cabeçalhos customizados como x-origin, x-user-id, x-user-name, x-correlation-id)
  • Swagger UI disponível em /swagger
Clients API

Nota: Para exemplos detalhados de requisições HTTP, consulte os arquivos .http presentes em cada projeto (DenerViana.Rpc.RabbitMQ.Users.Api.http, DenerViana.Rpc.RabbitMQ.Clients.Api.http).

Testes

  • O projeto é estruturado para suportar testes unitários e de integração (verifique se há projetos de teste dedicados).
  • Recomenda-se o uso do xUnit, NUnit ou MSTest junto ao FluentAssertions.
  • Para executar testes:
    dotnet test
    
  • As validações de rotas e dados são amplamente cobertas por regras no FluentValidation.

Licença

Este projeto está licenciado sob a licença GNU General Public License v3.0 (GPL-3.0). Veja o arquivo LICENSE.md para mais detalhes.

Informações Gerais e Contato


Para usuários leigos:
Esta aplicação permite criar e consultar dados de usuários e clientes através de APIs modernas, utilizando tecnologia de ponta e segurança.
Para começar, basta seguir os passos de configuração e acessar a documentação via navegador.

Para usuários técnicos:
O sistema é modular, aderente a boas práticas de engenharia de software, fácil de estender e integrar com outros sistemas via RabbitMQ.


Observação: Esta documentação foi gerada automaticamente com base na análise do código-fonte em maio de 2025. Para informações completas e atualizadas sobre endpoints, recomenda-se consultar o Swagger da aplicação em execução.


Limitação de busca: Os resultados apresentados são baseados em uma busca limitada de arquivos do repositório. Veja mais detalhes e arquivos diretamente no GitHub Code Search.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.35 215 6/7/2025
1.0.34 147 6/7/2025
1.0.33 207 6/6/2025
1.0.32 207 6/6/2025
1.0.31 201 6/6/2025
1.0.30 217 6/4/2025
1.0.29 212 6/4/2025
1.0.28 222 5/29/2025
1.0.27 231 5/26/2025
1.0.26 233 5/26/2025
1.0.25 222 5/26/2025
1.0.24 181 5/25/2025
1.0.23 179 5/25/2025
1.0.22 169 5/25/2025
1.0.21 175 5/25/2025
1.0.20 228 5/21/2025
1.0.19 230 5/21/2025
1.0.18 227 5/21/2025
1.0.17 229 5/21/2025
1.0.16 221 5/21/2025
Loading failed