Desafio para a seleção da MXM. O Objetivo era criar um monitor de processos do Sistema operacional, listando os processos, os recursos consumidos, com opção de ordenação nas colunas e utilizar gráficos para ilustrar o processamento.
- .NET Core SDK 8
- Node.js e npm
- Angular 17 /
npm install -g @angular/cli@17
> git clone https://github.com/barbaradamasdev/DesafioMXM.git
# Acesse o diretório do projeto backend:
> cd backend/ProcessosAPI/
# Restaure as dependências:
> dotnet restore
# Inicie o backend com o comando
> dotnet watch run
# Acesse o diretório do projeto frontend:
> cd frontend/MonitorProcessos
# Instale as dependências do Angular
> npm install --legacy-peer-deps
# Inicie o servidor de desenvolvimento do Angular
> ng serve
💡💡💡Nota: Embora não seja recomendado o uso do
--legacy-peer-deps
, é necessário neste caso para forçar a instalação. A versão do Google Charts utilizada é muito antiga para o Angular 17, e esta solução foi adotada porque não gerou conflitos no nível do projeto.
Loading para sinalizar ao usuário o carregamento | Tabela de processos com ordenação e opção de busca | Armazenamento por drives existentes e detalhamento do gráfico com mouse | Responsividade |
---|
Tecnologia | Uso | Site |
---|---|---|
SignalR | Biblioteca que facilita a adição de funcionalidades em tempo real aos aplicativos web. | SignalR |
Swagger | Ferramenta para documentação de APIs RESTful. | Swagger |
Diagnostics | Namespace do .NET que fornece classes para interagir com o sistema operacional. | System.Diagnostics |
PerformanceCounter | Classe para acessar e monitorar o desempenho do sistema, incluindo o uso da CPU. | PerformanceCounter |
Management Object Searcher | Classe para executar consultas WMI (Instrumentação de Gerenciamento do Windows) e recuperar informações sobre o sistema operacional. | ManagementObjectSearcher |
Google Charts | Biblioteca JavaScript para criar gráficos interativos e visualizações de dados na web. | Google Charts |
- Precisei entender a estrutura e como utilizar o SignalR tanto no backend quanto no frontend. Além disso, dediquei um tempo criando o Swagger para documentação da API antes de compreender completamente a necessidade para o SignalR, desafio que foi rapidamente solucionado e serviu para praticar.
- Foi desafiante encontrar uma biblioteca certa que atendesse às necessidades específicas de manter de forma dinâmica o gráfico para refletir as mudanças em tempo real. Procurando por bibliotecas encontrei a do Google que foi a utilizada no projeto. Com essa, tive uma nova dificuldade que foi de ajustar o tamanho e a aparência do gráfico garantindo uma experiência visual agradável e pensando em usabilidade.
- Na tentativa do deploy obtive erros na versão do Google Charts que é incompatível com a versão do framework. A solução encontrada foi utilizar a flag
--legacy-peer-deps
durante a instalação, mesmo não sendo recomendado. Essa medida foi necessária para evitar conflitos no projeto e permitir a integração do Google Charts com o Angular 17.
Bárbara Damasceno | barbaradsa@gmail.com | Linkedin | Portfolio