Dapr

supports

hasNoSupportFor

  • F Sharp or any functional language

Features

  • Client: The Dapr client allows you to invoke Dapr building block APIs and perform each building block’s actions
  • Server extensions: The Dapr service extensions allow you to create services that can be invoked by other services and subscribe to topics
  • Actor: The Dapr Actor SDK allows you to build virtual actors with methods, state, timers, and persistent reminders
  • Workflow: Dapr Workflow makes it easy for you to write long running business logic and integrations in a reliable way

State Store (Hot Data)

Bindings

  • input bindings trigger endpoint methods
  • dapr executes operations on external systems via output bindings

Use Cases

  • "You want to work with single-threaded objects that do not require significant interaction from external components, including querying state across a set of actors."

Frequently Asked Questions

  • "What is the relationship between Dapr, Orleans and Service Fabric Reliable Actors?"
    • Dapr's actor framework is similar to Orleans
  • "Differences between Dapr and an actor framework"
    • "actors can be called from any language. This allows actors written in one language to invoke actors written in a different language... Currently .NET, Java, Go and Python SDK have actor frameworks."
    • Dapr is a comprehensive microservice sidecar that does lots of different things.
    • https://www.reddit.com/r/dotnet/comments/13t3tsf/is_dapr_actually_used_by_anyone/
      • "if you have a product that aspires to be vendor agnostic, it might help"

Issues

-"You cannot dynamically add new programmatic subscriptions, only add new ones at compile time"

Notes

  • "Redis does not support transaction rollbacks and should not be used in production as an actor state store."
  • the Dapr SDK for Java builds upon Project Reactor, all methods are asynchronous. This means they return a Mono or a Flux, respectively a single item or a stream of items somewhere in the future. Since both a Mono and a Flux are “cold”, you have to “subscribe” on them. By subscribing, you tell the code that will produce the items that you are ready to process the items that they will produce. One of the ways to do this is by invoking .block() on the Mono or Flux.

Examples

Resources

Learning Resources

References


Children
  1. Workflow

Backlinks