Skip to content

💗 A crafted toolkit for building cloud-native apps on the .NET platform

License

Notifications You must be signed in to change notification settings

cloudnative-netcore/netcorekit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d07dc23 · Jun 11, 2019
Jun 11, 2019
Apr 15, 2019
Mar 22, 2019
Apr 15, 2019
Apr 15, 2019
Apr 15, 2019
Apr 15, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Mar 22, 2019
Apr 15, 2019
Mar 22, 2019

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