Skip to content
Heath Stewart edited this page Feb 6, 2021 · 10 revisions

Task Hub

The Task Hub is a logical container for Service Bus entities within a namespace. These entities are used by the Task Hub Worker to pass messages reliably between the code orchestrations and the activities that they are orchestrating.

Task Activities

Task Activities are pieces of code that perform specific steps of the orchestration. A Task Activity can be ‘scheduled’ from within some Task Orchestration code. This scheduling yields a plain vanilla .NET Task which can be (asynchronously) awaited on and composed with other similar Tasks to build complex orchestrations.

Task Orchestrations

Task Orchestrations schedule Task Activities and build code orchestrations around the Tasks that represent the activities.

Task Hub Worker

The worker is the host for Task Orchestrations and Activities. It also contains APIs to perform CRUD operations on the Task Hub itself.

Task Hub Client

The Task Hub Client provides:

  • APIs for creating and managing Task Orchestration instances
  • APIs for querying the state of Task Orchestration instances from an Azure Table

Both the Task Hub Worker and Task Hub Client are configured with connection strings for Service Bus and optionally with connection strings for a storage account. Service Bus is used for storing the control flow state of the execution and message passing between the task orchestration instances and task activities. However Service Bus is not meant to be a database so when a code orchestration is completed, the state is removed from Service Bus. If an Azure Table storage account was configured then this state would be available for querying for as long as it is kept there by the user.

The framework provides TaskOrchestration and TaskActivity base classes which users can derive from to specify their orchestrations and activities. They can then use the TaskHub APIs to load these orchestrations and activities into the process and then start the worker which starts processing requests for creating new orchestration instances.

The TaskHubClient APIs are used to create new orchestration instances, query for existing instances and then terminate those instances if required.