Awesome Open Source
Awesome Open Source

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

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

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Docker (33,406
Kubernetes (11,238
Dotnet Core (4,302
Asp Net Core (3,657
Grpc (2,224
Clean Architecture (1,698
Ddd (1,072
Cloud Native (798
Microservices Architecture (437
Efcore (356
Feature Flags (350
Ddd Architecture (259
Mediatr (160
Related Projects