Skip to content

cloudnative-netcore/netcorekit

Repository files navigation

Cloud-native .NET Core Kit

Build status Price version

A set of cloud-native tools and utilities for .NET Core.

The goal of this project is implement the most common used cloud-native technologies (cloud-agnostic approach, containerization mechanism, container orchestration and so on) and share with the technical community the best way to develop great applications with .NET Core.

Give a Star! ⭐

If you liked netcorekit project or if it helped you, please give a star ⭐ for this repository. That will not only help strengthen our .NET community but also improve cloud-native apps development skills for .NET developers in around the world. Thank you very much 👍

Check out my blog or say hi on Twitter!

Features

  • Simple libraries. No frameworks. Little abstraction.
  • Opt-in and out of the box features with Feature Toggles technique.
  • Adhere to twelve-factor app paradigm and more.
  • Authentication/Authorization with OAuth 2.0 and OpenID Connect.
  • Domain-driven Design in mind.
  • Simply Clean Architecture supports.
  • Generic repository for data persistence.
  • Mapping between domain entity to DTO and vice versa.
  • Clean and demystify error, debug logs.
  • Resilience and health check out of the box.
  • MessagePack for WebAPI and gRPC for internal services.
  • Easy for configuration management.
  • API versioning from Docker container to WebAPI.
  • Documentation template with OpenAPI documentation.
  • Work natively with Kubernetes or even with Service Mesh(Istio).

Less code to get starting

Small, lightweight, cloud-native out of the box, and much more simple to get starting with miniservices approach. Why miniservices?

Look how simple we can start as below:

  • Standard template - NetCoreKit.Template.Standard: without storage, merely calculation and job tasks:
public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddStandardTemplate();
  }

  public void Configure(IApplicationBuilder app)
  {
    app.UseStandardTemplate();
  }
}
  • EfCore template - NetCoreKit.Template.EfCore: with Entity Framework Core (SQL Server, MySQL, and SQLite providers) comes along with the generic repository in place:
public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddEfCoreTemplate<TodoListDbContext>(svc => svc.AddEfCoreMySqlDb());
  }

  public void Configure(IApplicationBuilder app)
  {
    app.UseEfCoreTemplate();
  }
}

EfCore template usage can be found at TodoApi Sample.

  • MongoDb template - NetCoreKit.Template.MongoDb: with NoSQL (MongoDb provider) comes along with the generic repository in place:
public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddMongoTemplate();
  }

  public void Configure(IApplicationBuilder app)
  {
    app.UseMongoTemplate();
  }
}

MongoDb template usage can be found at BiMonetaryApi Sample.

Microservice architecture

msa_architecture

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :p