The latest major release is GiG Core 2.0.
- GiG.Core.ApplicationMetrics - Provides an API to register application metrics configuration options.
- GiG.Core.ApplicationMetrics.Prometheus - Provides an API to add application metrics which can be consumed by Prometheus.
- GiG.Core.ApplicationMetrics.Prometheus.Orleans.Silo - Provides an API for Orleans to register a telemetry consumer to ship metrics to Prometheus.
- GiG.Core.Configuration - Provides an API to add external configuration via JSON file and Environment variables.
- GiG.Core.Context.Orleans - Provides an API to register the Request Context Accessor functionality for Orleans.
- GiG.Core.Context.Web - Provides an API to register the Request Context Accessor functionality for a web application.
- GiG.Core.Data.KVStores - Provides an API to register the required services needed by the KV Stores Data Providers.
- GiG.Core.Data.KVStores.Providers.Etcd - Provides an API to register data providers which will read data from etcd.
- GiG.Core.Data.KVStores.Providers.File - Provides an API to register data providers which will read data from file.
- GiG.Core.Data.Serializers - Provides an API to register the required services needed by the different Data Serializers.
- GiG.Core.Data.Migration.Evolve - Provides an API to perform Database Migrations using SQL Scripts.
- GiG.Core.DistributedTracing.Activity - Provides an API to register Distributed Tracing using System.Diagnostics.Activity.
- GiG.Core.DistributedTracing.MassTransit - Provides an API to register Distributed Tracing for a MassTransit Consumer.
- GiG.Core.DistributedTracing.OpenTelemetry.Exporters.Jaeger - Provides an API to register Distributed Tracing using OpenTelemetry to capture distributed traces from your application and export them to a Jaeger Exporter.
- GiG.Core.DistributedTracing.OpenTelemetry.Exporters.Zipkin - Provides an API to register Distributed Tracing using OpenTelemetry to capture distributed traces from your application and export them to a Zipkin Exporter.
- GiG.Core.DistributedTracing.Orleans - Provides an API to register Distributed Tracing for an Orleans Client.
- GiG.Core.HealthChecks - Provides an API to register Health Checks for an application.
- GiG.Core.HealthChecks.Orleans - Provides an API to register Health Checks for an Orleans Silo.
- GiG.Core.HealthChecks.Orleans.Streams.Kafka - Provides an API to register Orleans Kafka Streams Health Check.
- GiG.Core.HealthChecks.AspNetCore - Provides an API to register Health Check endpoints using the EndpointRouteBuilder.
- GiG.Core.Hosting - Provides an API to register hosting related functionality to an application.
- GiG.Core.Hosting.AspNetCore - Provides an API to register an information endpoint using the EndpointRouteBuilder.
- GiG.Core.Http - Provides an API to create or customise an
HttpClient
without using IOC. - GiG.Core.Http.DistributedTracing - Provides an API to register a
CorrelationIdDelegatingHandler
onto theHttpClient
. - GiG.Core.Http.MultiTenant - Provides an API to register a
TenantDelegatingHandler
onto theHttpClient
- GiG.Core.Http.Authentication.Hmac - Provides an API to register an
HmacDelegatingHandler
onto theHttpClient
. - GiG.Core.Logging.All - Provides an API to register Logging using Serilog and multiple Sinks and Enrichers for an application.
- GiG.Core.Logging.AspNetCore - Provides an API to register the
HttpRequestResponseLoggingMiddleware
. It is used to log Http Requests and Http Responses. - GiG.Core.Logging.Enrichers.ApplicationMetadata - Provides an API to register and ApplicationMetadata Enricher for Logging when using Serilog.
- GiG.Core.Logging.Enrichers.Context - Provides an API to register the Context Enricher for Logging when using Serilog.
- GiG.Core.Logging.Enrichers.DistributedTracing - Provides an API to register the Correlation Id Enricher for Logging when using Serilog.
- GiG.Core.Logging.Sinks.Console - Provides an API to register Logging to a Console using Serilog for an application.
- GiG.Core.Logging.Sinks.File - Provides an API to register Logging to a File using Serilog for an application.
- GiG.Core.Logging.Sinks.Fluentd - Provides an API to register Logging to Fluentd using Serilog for an application.
- GiG.Core.Logging.Sinks.RabbitMQ - Provides an API to register Logging to RabbitMQ using Serilog for an application.
- GiG.Core.Messaging.Avro.Schema.Generator.MSBuild - This Library provides a Code Generator that generates the Avro schema for Public Events objects.
- GiG.Core.Messaging.Kafka - This Library provides an API to register Kafka Producers, Consumers and their dependencies for an application.
- GiG.Core.Messaging.MassTransit - Provides an API to register MassTransit related functionality to an application.
- GiG.Core.Models - Provides a Library for generic Models.
- GiG.Core.MultiTenant.Activity - Provides an API to register Multi Tenancy for an application through key-value pair items in the Activity Baggage.
- GiG.Core.ObjectMapping.AutoMapper - Provides an API to register an Object Mapper using AutoMapper.
- GiG.Core.Orleans.Client - Provides an API to register an Orleans Client in an application.
- GiG.Core.Orleans.Clustering - Provides Extension Methods to register Orleans Silo Membership Providers.
- GiG.Core.Orleans.Clustering.Consul - Provides an API to use Consul as a Membership Provider for Orleans Silos.
- GiG.Core.Orleans.Clustering.Kubernetes - Provides an API to use Kubernetes as a Membership Provider for Orleans Silos.
- GiG.Core.Orleans.Clustering.Localhost - This Library provides an API to configure development-only clustering and listen on localhost.
- GiG.Core.Orleans.Reminders.Npgsql - Provides an API to register PostgreSQL as a Storage Provider for Reminders.
- GiG.Core.Orleans.Silo - Provides an API to register an Orleans Silo in an application.
- GiG.Core.Orleans.Silo.Dashboard - Provides an API to register the Orleans Silo Dashboard.
- GiG.Core.Orleans.Storage.Npgsql - Provides an API to register PostgreSQL as a Grain Storage Provider.
- GiG.Core.Orleans.Streams - Provides an API to register an Orleans Stream Factory.
- GiG.Core.Orleans.Streams.Kafka - Provides an API to register an Orleans Stream using Kafka.
- GiG.Core.Providers.DateTime - This Library provides an API to register required DateTime providers.
- GiG.Core.TokenManager - This Library provides an API to register required services for the Token Manager.
- GiG.Core.Validation.FluentValidation.MediatR - Provides an API to register the MediatR Pipeline Behaviour which uses Fluent Validation..
- GiG.Core.Validation.FluentValidation.Web - Provides an API to register the Fluent Validation Exception Middleware in an application.
- GiG.Core.Web.Authentication.ApiKey - Provides an API to configure
ApiKeyAuthenticationHandler
- GiG.Core.Web.Authentication.Hmac - Provides an API to configure
HmacAuthenticationHandler
- GiG.Core.Web.Authentication.Hmac.MultiTenant - Provides an API to configure
HmacAuthenticationHandler
for multitenancy. - GiG.Core.Web.Authentication.OAuth - Provides an API to configure OAuth2.0 as a protocol for Authentication.
- GiG.Core.Web.Docs - Provides an API to configure API Documentation.
- GiG.Core.Web.Docs.Authentication.ApiKey - Provides an API to add ApiKey for Authentication when accessing API Documentation.
- GiG.Core.Web.Docs.Authentication.OAuth - Provides an API to configure OAuth2.0 as a protocol for Authentication when accessing API Documentation.
- GiG.Core.Web.Hosting - Provides an API to configure
BASE_PATH
and Forwarded Headers. - GiG.Core.Web.Mock - Provides a MockStartupBase class to be used for Testing.
- GiG.Core.Web.Versioning - Provides an API to add API Versioning.
You can build the NuGet packages using one of the following methods. You should find the NuGet packages in the artifacts
folder after the following commands are executed successfully.
# Build solution
docker build . -t gig-core:publish --target publish
# Copy Artifacts
docker run -d --entrypoint /bin/true --name temp-gig-core-publish gig-core:publish
docker cp temp-gig-core-publish:/app/artifacts/nugets/ artifacts/
# Cleanup
docker rm -f temp-gig-core-publish
docker rmi gig-core:publish
dotnet build GiG.Core.sln
You can run all the integration and unit tests using the following commands:
# Build solution
docker build . -t gig-core:test --target test
# Copy Artifacts
docker run --rm gig-core:test
dotnet test --filter "Category=Unit|Category=Integration" GiG.Core.sln
You can run the samples using the following commands:
cd docker
docker-compose -f docker-compose.yml -f docker-compose-<Sample Name>.yml up --build
You can also find more samples here.