Skip to content

neurospeech/eternity

Repository files navigation

.NET

Eternity Framework

Long running workflows with ability to suspend and replay the workflow in future.

NuGet

Name Package
NeuroSpeech.Eternity NuGet
NeuroSpeech.Eternity.DependencyInjectionExtensions NuGet
NeuroSpeech.Eternity.SqliteStorage NuGet
NeuroSpeech.Eternity.SqlStorage NuGet
NeuroSpeech.Eternity.Mocks NuGet

Features

  1. Strongly typed API
  2. Mobile Ready - Storage is abstract and does support running workflows in Mobile Devices.
  3. Dependency Injection - easy integration with Microsoft Dependency Injection Extensions
  4. Activities are simple public virtual C# methods
  5. Activities can be scheduled to be called in future
  6. Support for external events, workflow can wait for external events
  7. Really very large workflow supports, duration of waiting can have timeout for days/months/weeks. This allows in creating workflow for monthly/yearly memberships.
  8. Abstract Storage - you can create your own storage, in memory Mock storage, Sqlite Storage (for mobile) and Sql Server Storage is included.
  9. Unit testable - Mocks package contains useful mocks to unit test your workflows.
  10. Support for non deterministic workflows, activities are isolated by parameters and time of execution, (you can also make Activity unique) so same activity method with same parameter anywhere in the workflow will execute only once and will give same result.
  11. Workflow can wait for multiple events, and when you raise an event, it will optionally throw an exception if workflow is not waiting.
  12. You can wait for events for days/months. It does not occupy any resources, waiting occurs in queue, and workers do not stay busy while waiting.
  13. Added support for DailyWorkflows, Workflows that can be derived from class DailyWorkflows and execute once per day.
  14. .NET Standard 2.0 support, it means it can run anywhere without any native/local dependency.

Why did we remove Azure Table Storage?

  1. Table Storage is very expensive, instead, using Sql Azure is cheaper as it does not charge per transaction.
  2. Table Storage Key has restrictions on ID, it needs URL escaping. Sql Azure has no such restriction.
  3. You can easily query and view table, there is only single table named "EternityEntities".

Documentation

  1. Home
  2. Getting Started
  3. Samples
  4. Child Workflow Sample
  5. Unit Testing

Other Interesting Projects by NeuroSpeech

  1. YantraJS - JavaScript engine for .NET with latest features
  2. Entity Access Control List framework over Entity Framework Core with Audit and Typed Events
  3. Automatic Migrations for EF Core
  4. RetroCoreFit - REST Library similar to Retrofit for .NET Core