Note: This repository is archived and read-only.
Projects and practices from the Distributed Systems college course (URU), in C# and Node.js.
LaViejaCOM— C# (.NET Framework 4.8) COM component for tic-tac-toe ("La Vieja").TicTacToe.ComObjectexposesILaViejaGame(GetBoard,GetCurrent,Play,Reset,IsGameOver,GetWinner) withregister-com.bat/unregister-com.bat(run as administrator; messages in Spanish).TicTacToe.Useris a console client. Windows only.grpc-wrapper— Node.js helpers around@grpc/grpc-js:loadProto,createInsecureServer,createInsecureClient.example/is a book service on port50051.load-balancer— heartbeat-based load balancing demo built on the wrapper. The gRPCLOAD_BALANCER_SERVICE(heartbeat,getNextInstance) scores instances on CPU count, clock speed, uptime and memory (20% each), expires them after a 15 s timeout and hands out the next one round-robin.instances/forks 5 book services from port50052;api-gateway/is an Express server on port8080exposingGET /api/book/:id.tic-tac-toe— C# (.NET 9) gRPC multiplayer game.TicTacToeServeris an ASP.NET Core service (Protos/tictactoe.proto, with streaming RPCs);TicTacToeMauiis a .NET MAUI client.
# grpc-wrapper example
cd grpc-wrapper && npm install
npm run server # one terminal
npm run client # another
# load-balancer (also install grpc-wrapper dependencies; it imports ../grpc-wrapper)
cd load-balancer && npm install
npm run server && npm run instances && npm run api-gateway && npm run client
# tic-tac-toe
cd tic-tac-toe/TicTacToeServer && dotnet runStart order and ports for the load balancer are set in the JSON files next to each entry point. Open TicTacToeMaui in an IDE with the .NET MAUI workload. For LaViejaCOM, build with .NET Framework 4.8, then run register-com.bat as administrator.
GNU General Public License v3.0 (see LICENSE).