NEXUS
The full suite of Project KONGOR services, architected as an open-source cloud-ready distributed application.
If you would like to support the development of this project and buy me a coffee, please consider one of the following options: GitHub Sponsors, PayPal. 💚
- SQL Server (Developer Edition): https://www.microsoft.com/en-gb/sql-server/sql-server-downloads/
- Docker (Personal Edition): https://www.docker.com/products/docker-desktop/ (Docker Desktop)
Important
The editions suggested in parentheses are for development purposes only. Commercial usage will likely require paid tiers of these software products.
Run In Development
# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost --launch-profile "Project KONGOR Development"
Run In Production
# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost --launch-profile "Project KONGOR Production"
Note
If no launch profile is specified, then the first profile in launchSettings.json
will be used.
Normally, this default profile is a development profile, which allows developers to run the project quickly by executing just dotnet run
without specifying a launch profile.
Create A Database Schema Migration
- install the Entity Framework Core CLI by executing
dotnet tool install --global dotnet-ef
or update it by executingdotnet tool update --global dotnet-ef
- in the context of the solution directory, execute
dotnet ef migrations add {MigrationName} --project MERRICK.Database
Update The Database Schema
# Development Database
# In The Context Of The Solution Directory
$ENV:ASPNETCORE_ENVIRONMENT = "Development"
dotnet ef database update --project MERRICK.Database
# Production Database
# In The Context Of The Solution Directory
$ENV:ASPNETCORE_ENVIRONMENT = "Production"
dotnet ef database update --project MERRICK.Database
Note
Updating the database schema manually is only required during development, when there is a potential for database schema migrations to fail. If the migrations are stable, then manually updating the database can be skipped, as that happens automatically at runtime. This also means that a database will be fully scaffolded at runtime if it does not already exist.
Generate .NET Aspire Deployment Artefacts & Deploy To Azure/Kubernetes
Note
Azure deployments require the Azure Developer CLI, and Kubernetes deployments require Aspir8. The documentation of each tool should be inspected for more complex deployment configurations.
# Azure
winget install microsoft.azd
# In The Context Of The ASPIRE.AppHost Project Directory
azd init
azd up
# Kubernetes
dotnet tool install -g aspirate
# In The Context Of The ASPIRE.AppHost Project Directory
aspirate init
aspirate generate
aspirate apply
# Manifest
# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost\ASPIRE.AppHost.csproj -- --publisher manifest --output-path manifest.json
Install/Update .NET Aspire
Note
The Aspire NuGet packages referenced by the respective projects need to be in-sync with the Aspire dotnet workload.
# Install
dotnet workload install aspire
# Update
dotnet workload update
# Check The Installed Version
dotnet workload list
Note
Mode in-depth information is available here: https://learn.microsoft.com/en-gb/dotnet/aspire/fundamentals/setup-tooling.
Debug HTTP Traffic With Fiddler
- launch Project KONGOR in development mode, by using the
ASPIRE.AppHost Development
profile - start the HoN client with the following command line parameters:
-masterserver 127.0.0.1:8888 -webserver 127.0.0.1:8888 -messageserver 127.0.0.1:8888
; to proxy the the HoN server through Fiddler, set the master server to127.0.0.1:8888
in the COMPEL configuration file - in Fiddler, in the bottom-left corner, make sure that the application type filter is set to
All Processes
- in Fiddler, click in the bottom-left corner to disable traffic capturing, which removes the noise from implicitly captured traffic; anything explicitly sent to the Fiddler proxy with default port 8888 will still be captured
- in Fiddler, go to
Rules > Customize Rules
, thenGo > to OnBeforeRequest
, and addoSession.url = oSession.url.Replace("127.0.0.1:8888", "127.0.0.1:55555");
andoSession.url = oSession.url.Replace("0.0.0.0:8888", "127.0.0.1:55555");
to forward traffic to the Project KONGOR development server once it's been captured
- ??? (coming soon™)
- Play HoN !