• Query orchestration • Terminate orchestration • Signal orchestration • Signal entity • Query entity [OrchestrationTrigger] IDurableOrchestrationContext Orchestrator Function • Call an activity • Call sub-orchestrator • Set status • Call entity [EntityTrigger] IDurableEntityContext Entity Function • Initialize • Destroy • Handle event • Set state • Get state
Orleans...) but with some substantial differences Explicit state express the state " in an explicit way " and not in the form of a workflow as happens with orchestrators, but they can be used together with orchestrators Reliability for messages (call and signal) "exactly-once" delivery is guaranteed communication takes place through persistent queues (Azure Storage Queue) which guarantee sorting and de-duplication Messages are processed one at a time
in the form @EntityType@EntityKey, for example @Light@Hue1 SingnalEntityAsync vs CallEntitiyAsync "signaling" means the enqueue of an operation (asynchronous command, ane-way) "call" instead is usable only inside an orchestrator and returns an answer directly Proxy defining an interface, which the entity will implement, we can perform operations on the entity in a type-safe way avoiding the " magic strings " in code
serial execution of operations • automatically created during the first opeartion • unloaded from memory when not in use • messages are delivered in order and reliably • support for distributed lock via orchestrator • pattern request / response possible only from the orchestrator (entity-to-entity signaling only, as in the actors) Differences: