📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados no Capítulo 17 — Programação Assíncrona com Async/Await da Especialização em Sistemas com C#. Recomendado revisar antes de iniciar.

🎯 Dashboard Financeiro em Tempo Real com SignalR & Redis

v1.0 — ASP.NET Core SignalR, WebSockets, Backplane Redis, Broadcast em Tempo Real

Série Prática C# & .NET 8 — Projeto Especializado


🏛️ Visão Geral & Arquitetura Visual

O projeto Dashboard Financeiro em Tempo Real com SignalR & Redis implementa uma infraestrutura de comunicação bidirecional de baixa latência baseada em WebSockets para transmissão de cotações financeiras em tempo real. A arquitetura emprega ASP.NET Core SignalR Hubs fortemente tipados, suporta broadcast para milhares de navegadores e aplicativos clientes simultâneos e utiliza um backplane em Redis para sincronização horizontal entre múltiplos nós de servidores.

Arquitetura do Projeto 🎯 Dashboard Financeiro em Tempo Real com SignalR & Redis

📁 Estrutura de Pastas Anti-Colisão

Os artefatos em C# / .NET 8, projetos csproj e controladores estão organizados na subpasta canônica api-aspnet/:

catalogo_projetos/sistemas_csharp_04_signalr_realtime/
├── assets/
│   └── arquitetura_csharp_04.svg
├── api-aspnet/
│   ├── Program.cs
│   ├── README.md
│   └── ...
└── index.md

🧑‍💼 Engenharia de Software & Especificação Formal

1. Histórias de Usuário (User Stories)

ID Persona Narrativa da Funcionalidade Critério de Aceitação Principal Prioridade
US-01 Trader / Usuário Quero visualizar variações de preço na tela instantaneamente sem precisar recarregar a página Conexão WebSocket ativa recebendo atualizações com latência < 10 ms. Alta
US-02 Desenvolvedor Frontend Quero me inscrever apenas nos canais dos ativos que estou monitorando Gestão de grupos no SignalR (Groups.AddToGroupAsync(Context.ConnectionId, ativo)). Alta
US-03 Arquiteto de Sistemas Quero escalar a infraestrutura em múltiplos servidores sem perder mensagens Backplane Redis sincronizando eventos entre todas as réplicas do SignalR. Alta
US-04 Desenvolvedor Backend Quero comunicação fortemente tipada entre servidor e clientes Hub herdando de Hub<ITickerClient> garantindo contratos de métodos. Alta
US-05 Engenheiro de SRE Quero fallback automático para Server-Sent Events ou Long Polling se WebSockets forem bloqueados Negociação transparente de transporte nativa do SignalR. Média

2. Requisitos do Sistema

Requisitos Funcionais (RF)

Requisitos Não-Funcionais (RNF)


3. Diagrama de Casos de Uso

flowchart TD
    Market[(fa:fa-chart-line Feed de Cotações)]
    Hub[(fa:fa-tower-broadcast SignalR Hub & Redis)]
    Browsers[(fa:fa-mobile Dashboards Conectados)]

    subgraph AppSignalR ["🎯 SignalR Real-Time Hub (api-aspnet)"]
        UC01["Estabelecer Conexão WebSocket"]
        UC02["Entrar em Grupo de Ativo Financeiro"]
        UC03["Publicar Nova Cotação no Hub"]
        UC04["Distribuir via Redis Backplane"]
        UC05["Receber Push de Cotação no Cliente"]
    end

    Browsers --> UC01
    UC01 --> Hub
    Browsers --> UC02
    UC02 --> Hub
    Market --> UC03
    UC03 --> Hub
    Hub --> UC04
    UC04 --> Hub
    Hub --> UC05
    UC05 --> Browsers

4. Matriz de Rastreabilidade (RTM)

ID Requisito História de Usuário Artefato de Código Teste de Aceitação
RF-01 US-01 api-aspnet/Hubs/ Configuração da rota do Hub
RF-02 US-02 api-aspnet/Hubs/ Métodos de agrupamento de conexões
RF-03 US-01 api-aspnet/ Serviço background de cotações
RF-04 US-04 api-aspnet/Hubs/ Broadcast tipado para grupos
RF-05 US-03, US-05 api-aspnet/ Configuração de backplane e transportes

🛠️ Implementação Guiada

📄 api-aspnet/Hubs/FinanceiroHub.cs (arquivo real do projeto)

using Microsoft.AspNetCore.SignalR;

public class FinanceiroHub : Hub {
    public async Task EnviarAlerta(string ticker, decimal preco) {
        await Clients.All.SendAsync("ReceberCotacao", ticker, preco);
    }
}

🚀 Como Executar no Laboratório

1. Navegue até a subpasta do projeto

cd catalogo_projetos/sistemas_csharp_04_signalr_realtime/api-aspnet

2. Execute via .NET CLI

dotnet run

🏁 Matriz de Checkpoints de Conclusão

Checkpoint Meta Técnica Critério de Aceite Status
CP-01 Hub SignalR Ativo Endpoint /cotacoesHub escutando conexões WebSocket PASS ✅
CP-02 Gestão de Grupos Inscrição e desinscrição de clientes por ticker financeiro PASS ✅
CP-03 Broadcast Concorrente Transmissão eficiente de mensagens em tempo real PASS ✅
CP-04 Integração Redis Backplane Suporte a distribuição em cluster multi-servidor PASS ✅
CP-05 Reconexão Automática Comportamento resiliente sob oscilação de rede validado PASS ✅