All Projects → daenetCorporation → DurableTaskMicroservices

daenetCorporation / DurableTaskMicroservices

Licence: MIT license
Microservice Framework based on Durable Task Framework

Programming Languages

C#
18002 projects
powershell
5483 projects

Projects that are alternatives of or similar to DurableTaskMicroservices

Koding
The Simplest Way to Manage Your Entire Dev Infrastructure!
Stars: ✭ 1,945 (+12866.67%)
Mutual labels:  orchestration
Haven Platform
Haven is an open source Docker container management system. It integrates container, application, cluster, image, and registry management in one single place.
Stars: ✭ 223 (+1386.67%)
Mutual labels:  orchestration
dockerfiles
🐳 Dockerfiles for Nette Framework. Nette in Docker. (@nette)
Stars: ✭ 15 (+0%)
Mutual labels:  orchestration
Thehive
TheHive: a Scalable, Open Source and Free Security Incident Response Platform
Stars: ✭ 2,300 (+15233.33%)
Mutual labels:  orchestration
K8s Bigip Ctlr
Repository for F5 Container Ingress Services for Kubernetes & OpenShift.
Stars: ✭ 204 (+1260%)
Mutual labels:  orchestration
Cstar
Apache Cassandra cluster orchestration tool for the command line
Stars: ✭ 242 (+1513.33%)
Mutual labels:  orchestration
Terrahub
Terraform Automation and Orchestration Tool (Open Source)
Stars: ✭ 148 (+886.67%)
Mutual labels:  orchestration
paco
Paco: Prescribed automation for cloud orchestration
Stars: ✭ 32 (+113.33%)
Mutual labels:  orchestration
K8s Appcontroller
AppController is a pod that you can spawn in your Kubernetes cluster which will take care of your complex deployments for you.
Stars: ✭ 214 (+1326.67%)
Mutual labels:  orchestration
Xstate
State machines and statecharts for the modern web.
Stars: ✭ 18,300 (+121900%)
Mutual labels:  orchestration
Netramesh
Ultra light service mesh for any orchestrator
Stars: ✭ 175 (+1066.67%)
Mutual labels:  orchestration
Ansible Pan
Ansible modules for Palo Alto Networks NGFWs
Stars: ✭ 197 (+1213.33%)
Mutual labels:  orchestration
Aws Etl Orchestrator
A serverless architecture for orchestrating ETL jobs in arbitrarily-complex workflows using AWS Step Functions and AWS Lambda.
Stars: ✭ 245 (+1533.33%)
Mutual labels:  orchestration
Patrowlengines
PatrOwl - Open Source, Free and Scalable Security Operations Orchestration Platform
Stars: ✭ 162 (+980%)
Mutual labels:  orchestration
blueprint-examples
This is where you can find officially supported Cloudify blueprints that work with the latest versions of Cloudify. Please make sure to use the blueprints from this repo when you are evaluating Cloudify.
Stars: ✭ 25 (+66.67%)
Mutual labels:  orchestration
Chopsticks
Chopsticks is an orchestration library: it lets you execute Python code on remote hosts over SSH.
Stars: ✭ 151 (+906.67%)
Mutual labels:  orchestration
Baker
Orchestrate microservice-based process flows
Stars: ✭ 233 (+1453.33%)
Mutual labels:  orchestration
portals
Microservice that queues, creates and closes Portal instances
Stars: ✭ 26 (+73.33%)
Mutual labels:  orchestration
cb-tumblebug
Cloud-Barista Multi-Cloud Infra Management Framework
Stars: ✭ 33 (+120%)
Mutual labels:  orchestration
Ansible Role Kubernetes
Ansible Role - Kubernetes
Stars: ✭ 247 (+1546.67%)
Mutual labels:  orchestration

DurableTaskMicroservices

Microservice Framework based on Durable Task Framework. A nuget package is available.

Introduction to DurableTaskFramework

The Durable Task Framework is an open source project originally started by Microsoft. It enables you to write orchestrations in pure C# using the .Net framework. By using of this framework, you can implement many kinds of integration projects without of need to use any Enterprise Service Bus product.

Here are the key features of the durable task framework:

  • Definition of code orchestrations in simple C# code
  • Automatic persistence and check-pointing of program state
  • Versioning of orchestrations and activities
  • Async timers, orchestration composition, user aided checkpoints

The framework itself is very light weight and only requires an Azure Service Bus namespace and optionally an Azure Storage account. Running instances of the orchestration and worker nodes are completely hosted by the user. The framework uses a scheduler on top of Azure Service Bus (hosted in Cloud or OnPrem) and it is completely transparent to developer. Developers is not ever required to have any Service Bus know-how.

You can find a good introduction about DTF in following articles

Introduction to DurableTaskMicroservices

The DurableTaskMicroservices allows you to serialize/deserialize (save/load) orchestrations and tasks.

Why should I use DurableTaskMicroservices?

The idea of DurableTaskMicroservices is to split the host and orchestration/task code. The host loads the assemblies of the orchestrations/tasks and their configuration files. This allows to change running orchestrations without changing the host code, just by replacing the assemblies and the configuration.

  • host and orchestrations decoupling
  • client and host decoupling
  • dynamic loading of orchestrations (with configuration)

Hosts

This repository contains multiple hosts, you can decide which host fits best to your needs. You are free to implement your own host and contribute it via pull request. For more information about hosting, please take a look on this article

Microservice (Orchestrations) loading

This topic explains how the host loads the orchestration assemblies and the configuration.

  1. The WindowsServiceHost searches for all *.config.xml files in the working directory. These files must contain your XML serialized Microservice. For more information about configuration please see: Configuration

  2. Now WindowsServiceHost gets all Types which are used in the Microservices. To do this, the host gets all *.dlls in the working folder and check for the existence of IntegrationAssemblyAttribute.

  3. Then the host starts the TaskHubWorker and create an OrchestrationInstance (if none are running).

WindowsServiceHost

A simple windows service used to host the DurableTaskFramework.

How to Install the Service

The installation process is quite simple. First you should compile the WindowsServiceHost solution and copy the output into the deployment folder (you should create one).

To install the windows service, just run the Scripts/installservice.ps1. The PowerShell script will guide you trough the install process.

How to Uninstall the service

To uninstall the windows service, just run the Scripts/uninstallservice.ps1.

Daenet.DurableTaskMicroservices.Common

This library extends the Durable Task Framework with base classes for Orchestrations, Tasks. Furthermore it includes general reusable Tasks and Adapters for SQL and FileSystems.

A nuget package is available.

BaseClasses

There are several BaseClasses, they extend the DurableTask Framework.

OrchestrationBase

OrchestrationBase inherits TaskOrchestration and adds base Logging functionality to an Orchestration.

This includes:

  • Logging Scope with ActivityId
  • Logging Scope with OrchestrationInstanceId

TaskBase

TaskBase inherits TaskActivity and extends it with following features:

  • LogManager initialization (Logging Scopes)
  • Exception logging in case of Task execution throws an exception.

Adapters

Adapters are used to send/receive data from any source to a different source.

ReceiveAdapterBase

ReceiveAdapterBase makes writing adapters for receiving data easier.

Features:

  • build-in method executeValidationRules executes all given (implemented by user) ValidationRuleDescriptor

SendAdapterBase

ReceiveAdapterBase makes writing adapters for sending data easier. It is implemented as an abstract class with a SendData method the user has to implement.

Tasks

The Daenet.DurableTaskMicroservices.Common package includes several ready-to-use Tasks.

DelayTask

The DelayTask delays the execution by using Thread.Sleep.

LoggingTask

The LoggingTask allows you to Log a messages. LoggingTask uses LogManager internal.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].