Skip to content

lucaslorentz/durabletask-extensions

Repository files navigation

Durable Task Extensions CI Coverage Status

Introduction

Durable Task Framework is an open source framework that provides a foundation for workflow as code in .NET platform.

This project aims to extend it with:

  • .NET Dependency Injection and Hosting integration
  • Administrative and monitoring UI
  • EFCore storage with support for InMemory, MySQL, PostgreSQL, SQL Server and some extra features.
  • Storage delegation via GRPC protocol

Related projects

Builds on top of Durable Task Framework to deliver a serverless workflow as code product focused on Azure.

Cadence is a scalable and reliable workflow as code platform built an used by Uber. It is heavily inspired on Durable Functions, but also includes some addicional features like tasks lists and a monitoring UI. Cadence features are used as inspiration for this project.

Temporal is a fork of Cadence backed by a company with the same name and founded by the original creators of Cadence. It is under active development and might end up officially supporting .NET clients.

Components

Name (click for readme) Package Description
LLL.DurableTask.Client Nuget DI extensions to configure TaskHubClient.
LLL.DurableTask.Worker Nuget DI extensions to configure TaskHubWorker.
LLL.DurableTask.Api Nuget Exposes TaskHubClient operations as REST API.
LLL.DurableTask.Ui Nuget UI to monitor and manage orchestrations.
LLL.DurableTask.Server Nuget Expose storage as API.
  LLL.DurableTask.Server.Grpc Nuget GRPC endpoints for server.
  LLL.DurableTask.Server.Grpc.Client Nuget Storage implementation using server GRPC endpoints.
LLL.DurableTask.AzureStorage Nuget Dependency injection for Azure Storage
LLL.DurableTask.EFCore Nuget EFCore relational database storage implementation with extra features.
  LLL.DurableTask.EFCore.InMemory Nuget EFCore storage InMemory support.
  LLL.DurableTask.EFCore.MySql Nuget EFCore storage MySql support.
  LLL.DurableTask.EFCore.PostgreSQL Nuget EFCore storage PostgreSQL support.
  LLL.DurableTask.EFCore.SqlServer Nuget EFCore storage Sql Server support.

Composability

Our components were designed to be independent and highly composable. See below some possible architectures.

Microservices with server

Diagram

Microservices with direct storage connection

Diagram

Single service

Diagram

UI for Durable Functions

Diagram

Sample

See samples for an implementation of the classic book Flight, Car, Hotel with compensation problem using all componentes from above.