DenerViana-BuildingBlocks
1.0.35
dotnet add package DenerViana-BuildingBlocks --version 1.0.35
NuGet\Install-Package DenerViana-BuildingBlocks -Version 1.0.35
<PackageReference Include="DenerViana-BuildingBlocks" Version="1.0.35" />
<PackageVersion Include="DenerViana-BuildingBlocks" Version="1.0.35" />
<PackageReference Include="DenerViana-BuildingBlocks" />
paket add DenerViana-BuildingBlocks --version 1.0.35
#r "nuget: DenerViana-BuildingBlocks, 1.0.35"
#:package DenerViana-BuildingBlocks@1.0.35
#addin nuget:?package=DenerViana-BuildingBlocks&version=1.0.35
#tool nuget:?package=DenerViana-BuildingBlocks&version=1.0.35
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
- .NET 8.0 SDK
- RabbitMQ
- MongoDB
- SQL Server
Variáveis e Configuração
Cada aplicação possui arquivos appsettings.Development.json para configurar:
- MongoDbSettings (Clients API):
MongoDbConnection: string de conexão MongoDBDatabaseName: 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áriosPOST /User: Cria um novo usuário (requer cabeçalhos customizados comox-origin,x-user-id,x-user-name,x-correlation-id)- Swagger UI disponível em
/swagger
Clients API
GET /Client: Lista todos os clientesPOST /Client: Cria um novo cliente (requer cabeçalhos customizados)- Swagger UI disponível em
/swagger
Nota: Para exemplos detalhados de requisições HTTP, consulte os arquivos
.httppresentes 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
- Autor: Dener Viana
- Contato: viana.dener@gmail.com
- GitHub: viana-dener/DenerViana.Rpc.RabbitMQ.Repo
- Para dúvidas técnicas, utilize as Issues do GitHub.
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 | Versions 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. |
-
net8.0
- AutoMapper (>= 12.0.1)
- EasyNetQ (>= 7.8.0)
- FluentValidation (>= 12.0.0)
- MediatR (>= 12.5.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 8.0.1)
- Microsoft.AspNetCore.OpenApi (>= 7.0.0)
- Microsoft.EntityFrameworkCore (>= 8.0.10)
- Microsoft.Extensions.Options (>= 9.0.4)
- MongoDB.Driver (>= 2.26.0)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.5.2)
- Polly.Extensions.Http (>= 3.0.0)
- Serilog.AspNetCore (>= 9.0.0)
- Serilog.Enrichers.CorrelationId (>= 3.0.1)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Extensions.Hosting (>= 9.0.0)
- Serilog.Settings.Configuration (>= 9.0.0)
- Serilog.Sinks.Elasticsearch (>= 10.0.0)
- Swashbuckle.AspNetCore (>= 7.0.0)
- Swashbuckle.AspNetCore.Annotations (>= 7.0.0)
- System.Text.Encodings.Web (>= 9.0.4)
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 |