Persistencia en orquestaciones
El motor de orquestaciones guarda toda la información de estado de una instancia de orquestación en varios puntos de persistencia para permitir la rehidratación de la instancia de orquestación. El estado incluye los componentes basados en .NET que se pueden usar en la orquestación, así como los mensajes y variables. El motor almacena la información de estado en los siguientes puntos de persistencia:
Final de un ámbito transaccional (atómico o de larga ejecución).
En los puntos de interrupción de depuración.
En la ejecución de otras orquestaciones a través de la forma Iniciar orquestación.
En la forma Envío (excepto en una transacción atómica).
Cuando una instancia de orquestación se suspende.
Cuando se apaga el sistema de forma controlada.
Cuando el motor determina que quiere deshidratar.
Cuando una instancia de orquestación ha finalizado.
El motor optimiza el número de puntos de persistencia dado que son caros, en especial cuando se trata de mensajes de gran tamaño. Como se muestra en las dos instancias de orquestación a continuación, en la orquestación con las formas Envío en un ámbito atómico, el motor determina un único punto de persistencia entre el final del ámbito transaccional y el final de la orquestación. En la otra orquestación, habrá dos puntos de persistencia, uno para la primera forma Envío y el segundo para la forma Envío más el final de la orquestación.
Persistencia de la orquestación
Los objetos basados en .NET que use en las orquestaciones, sea de forma directa o indirecta, deben estar marcados como serializables a menos que se invoquen en ámbitos atómicos o si los objetos no tienen información de estado y se invocan únicamente a través de métodos estáticos. System.Xml. XmlDocument es un caso especial y no es necesario marcarlo como serializable independientemente de la propiedad de transacción de un ámbito.
¿Cómo funciona el control especial para System.Xml? Trabajo xmlDocument :
Cuando el usuario define una variable X de tipo T, donde T es System.Xml. XmlDocument o una clase derivada de System.Xml. A continuación, XmlDocument el compilador tratará X como un objeto serializable.
Al serializar X, el tiempo de ejecución mantendrá los siguientes fragmentos de información: (a) el tipo real Tr del objeto X hace referencia a (b) la cadena OuterXml del documento.
Al des serializar X, el tiempo de ejecución creará una instancia de Tr (se supone que un constructor que no toma ningún parámetro) y llamará a LoadXml que proporciona la instancia con outerXml guardada. A continuación, X se establecerá para que apunte a la instancia recién creada de Tr.