TeamJob.Services.Profile is the microservice being part of [TeamJob] solution.
Service can be started locally via dotnet run
command (executed in the /src/TeamJob.Services.Profile.API
directory) or by running ./scripts/start.sh
shell script in the root folder of repository.
By default, the service will be available under http://localhost:5000.
You can also start the service via Docker, either by building a local Dockerfile:
docker build -t teamjob.services.profile .
You can find the list of all HTTP requests in [TeamJob.Services.Profile.rest] file placed in the root folder of the repository. This file is compatible with REST Client plugin for Visual Studio Code.
The solution of this microservice is divided into 4 different projects:
TeamJob.Services.API
: This layer is where all the various API routes are declared and mapped to their respective Command or Query. Note that there is no controller as it uses endpoint matching (seeProgram.cs
)TeamJob.Services.Application
: This is the business logic layer where all the various Commands or Queries get handled. This layer is also responsible for declaring all the interfaces it requires to function in an effort to reach maximum decouplingTeamJob.Services.Infrastructure
: This is the layer responsible for interfacing with the various dependencies and resources such as Database, MessageBroker and more. It is also here that the interfaces declared inTeamJob.Services.Application
and inTeamJob.Services.Core
get definedTeamJob.Services.Core
: This is the domain layer. No logic should reside in here as the only purpose of this layer is to declare low-level classes that are to be used by the Infrastructure and Application layers. It is also here that the Interfaces used to communicate
Rejected events are mapped to their respective exceptions in [ExceptionToMessageMapper.cs] and the event Logging mapping is in [MessageToLogTemplateMapper.cs]
Note that the Dependencies of the projects go as follow : API -> Application/Infrastructure -> Core