Partage via


Persistance dans les orchestrations

Le moteur d'orchestration enregistre régulièrement l'intégralité de l'état d'une instance d'orchestration à différents points de persistance pour permettre la réactivation de l’instance d’orchestration. L’état comprend tous les composants .NET qui peuvent être utilisés dans l’orchestration, en plus des messages et variables. Le moteur stocke l’état aux points de persistance suivants :

  • Fin d’une étendue transactionnelle (atomique ou à long terme)

  • Aux points d'arrêt de débogage

  • À l’exécution d’autres orchestrations via la forme Démarrer orchestration

  • À la forme Envoi (sauf dans le cas d’une transaction atomique)

  • Lorsqu’une instance d'orchestration est suspendue.

  • Lorsque le système s'arrête dans des conditions définies.

  • Lorsque le moteur détermine qu’elle doit être mise en attente.

  • Lorsqu’une instance d'orchestration est terminée.

    Le moteur optimise le nombre de points de persistance car ils sont coûteux, en particulier lorsqu’il s’agit de messages volumineux. Comme il est indiqué dans les deux instances d'orchestration ci-dessous, dans l'orchestration associée aux formes Envoi au sein d’une étendue atomique, le moteur détermine un seul point de persistance entre la fin de l'étendue de transaction et la fin de l'orchestration. Dans les autres orchestrations, il y aura deux points de persistances, un pour la première forme Envoi et un deuxième pour la forme Envoi plus la fin de l'orchestration.

    Persistance d'orchestration

    BTS_Trans_Orch_Fig2 de persistance de l’orchestration

    Tous les objets .NET que vous utilisez dans les orchestrations, directement ou indirectement, doivent être sérialisables, à moins qu’ils ne soient invoqués dans des étendues atomiques, ou si les objets sont sans état et invoqués uniquement via des méthodes statiques. System.Xml. XmlDocument est un cas particulier qui n’a pas besoin d’être marqué comme sérialisable, quelle que soit la propriété de transaction pour une étendue.

    Comment se passe la gestion spéciale pour System.Xml. Travail XmlDocument :

    Lorsque l’utilisateur définit une variable X de type T, où T est System.Xml. XmlDocument ou une classe dérivée de System.Xml. XmlDocument traite ensuite X comme un objet sérialisable.

    Lors de la sérialisation de X, le runtime conserve les informations suivantes : (a) le type Réel Tr de l’objet X fait référence à (b) la chaîne OuterXml du document.

    Lors de la désérialisation de X, le runtime crée un instance de Tr (cela suppose un constructeur qui ne prend aucun paramètre) et appelle LoadXml en fournissant le instance avec l’OuterXml enregistré. X est alors défini pour pointer vers le instance de Tr nouvellement créé.

Voir aussi

Transactions