Skip to content

Dotnet microservice developed for purposes of learning. Services are deployed in kubernetes and use a mix of sync and async messaging (gRPC and RabbitMQ Events) to perform simple data transactions

Notifications You must be signed in to change notification settings

absandell/dotnet-microservice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotnet Microservice Development Practice

This is a repository containing a Dotnet Microservice that I developed following the tutorial developed by Les Jackson

Architecture:

This project is comprised of two Microservices which communicate using a mix of sync and async messaging via gRPC and events on a RabbitMQ message bus deployed on the K8s cluster.

  • Platform Service

    • Handles the creation and storage of "Platforms" in a SQL Server deployed in the K8s cluster and attached to a PV
    • New Platform creation events are generated and sent over the wire via the RabbitMQ Message Bus
  • Command Service

    • Handles the creation and storage of new Commands (and associated usage instructions) in an in-memory storage solution
    • Newly created Platforms are mapped in-memory via a event listener configured on the RabbitMQ Message Bus channel
    • On-Startup, persisted data in the SQL Server attached to Platform Service is retrieved via gRPC and seeded into the in-memory storage of Command Service

Dotnet Microservice Practice

Requests for Testing Functionality in Local Environment

Commands Service


Inbound Connection Test: POST http://localhost:6201/api/c/platforms

Create Command for Platform: POST http://localhost:6201/api/c/platforms/{Platform ID}/commands

  • Request Body: {"HowTo": "Describe command use-case", "CommandLine": "Describe command syntax"}

Get All Platforms: GET http://localhost:6201/api/c/platforms

Get all Commands for Platform: GET http://localhost:6201/api/c/platforms/{Platform ID}/commands

Get Command for Platform: GET http://localhost:6201/api/c/platforms/{Platform ID}/commands/{Command ID}


Platform Service


Create a new platform: POST http://localhost:5051/api/platforms

  • Request Body: {"name": "Name of platform", "publisher": "Name of platform publisher", "cost": "Describe if platform is free, open-source, paid, etc."}

Get all platforms: GET http://localhost:5051/api/platforms

Get an individual platform: GET http://localhost:5051/api/platforms/{Platform ID}


Requests for Testing Functionality in K8s Environment

Commands Service


Inbound Connection Test: POST http://acme.com/api/c/platforms

Create Command for Platform: POST http://acme.com/api/c/platforms/{Platform ID}/commands

  • Request Body: {"HowTo": "Describe command use-case", "CommandLine": "Describe command syntax"}

Get All Platforms: GET http://acme.com/api/c/platforms

Get all Commands for Platform: GET http://acme.com/api/c/platforms/{Platform ID}/commands

Get Command for Platform: GET http://acme.com/api/c/platforms/{Platform ID}/commands/{Command ID}


Platform Service


Create a new platform: POST http://acme.com/api/platforms

  • Request Body: {"name": "Name of platform", "publisher": "Name of platform publisher", "cost": "Describe if platform is free, open-source, paid, etc."}

Get all platforms: GET http://acme.com/api/platforms

Get an individual platform: GET http://acme.com/api/platforms/{Platform ID}


About

Dotnet microservice developed for purposes of learning. Services are deployed in kubernetes and use a mix of sync and async messaging (gRPC and RabbitMQ Events) to perform simple data transactions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published