Este projeto consiste na implementação de uma central de comunicação distribuída de atendimento da turma utilizando gRPC e Protocol Buffers (protobuf). Ele substitui a comunicação direta via sockets do laboratório anterior por uma interface definida por contrato, implementando duas abordagens de comunicação:
- Chamada Unária (ConsultarHorario): Requisição e resposta simples para consulta de horários.
- Streaming de Servidor (AcompanharAvisos): Inscrição em tempo real para recebimento contínuo de avisos publicados pelo servidor.
O sistema possui implementações equivalentes tanto em Java quanto em Python, demonstrando a interoperabilidade e a independência de linguagem proporcionada pelo ecossistema gRPC.
- Linguagens: Java (JDK 17) e Python (3.10+)
- Comunicação e Serialização: gRPC e Protocol Buffers (protobuf)
- Gerenciador de Dependências: Maven (Java) e pip (Python)
- Ferramentas: Git
- IA de Apoio: Este projeto contou com o auxílio de inteligência artificial para otimização e aprendizado:
- ChatGPT: Utilizado para consulta de dúvidas conceituais, resolução de erros específicos e estruturação de lógica.
- Antigravity: Utilizado para auxiliar na escrita de código, refatoração, automação e suporte no desenvolvimento das atividades do laboratório.
Antes de começar, verifique se você tem instalado:
- Java JDK 17 ou superior (
java -version) - Maven 3.8+ (
mvn -version) - Python 3.10+ (
python --version) - Git
O arquivo de contrato formal está em proto/central.proto.
O plugin do Maven compila automaticamente o .proto ao rodar a fase de compilação:
cd java/grpc-central
mvn compileGere os stubs de comunicação utilizando as ferramentas do gRPC para Python:
cd python/grpc_central
pip install grpcio grpcio-tools
python -m grpc_tools.protoc -I ../../proto --python_out=. --grpc_python_out=. ../../proto/central.protoAbra dois terminais na pasta java/grpc-central:
- Terminal 1 (Servidor):
mvn exec:java -Dexec.mainClass=br.pucminas.labdamd.central.ServidorCentral
- Terminal 2 (Cliente):
mvn exec:java -Dexec.mainClass=br.pucminas.labdamd.central.ClienteCentral
Abra dois terminais na pasta python/grpc_central:
- Terminal 1 (Servidor):
python servidor_central.py
- Terminal 2 (Cliente):
python cliente_central.py
lab-grpc/
├── proto/
│ └── central.proto
├── java/
│ └── grpc-central/
│ ├── pom.xml
│ └── src/main/java/br/pucminas/labdamd/central/
│ ├── ServidorCentral.java
│ └── ClienteCentral.java
├── python/
│ └── grpc_central/
│ ├── servidor_central.py
│ └── cliente_central.py
├── evidencias/
│ ├── transparencia/
│ ├── unario/
│ └── streaming/
├── RESPOSTAS.md
└── README.md
| 👤 Nome | 🖼️ Foto | 📤 Gmail | ||
|---|---|---|---|---|
| Eduarda Vieira Gonçalves |
Este projeto está sob a licença MIT - consulte o arquivo LICENSE para mais detalhes.



