Vorgehensweise: Konfigurieren des Leerlaufverhaltens mit WorkflowServiceHost

Workflows wechseln in den Leerlaufzustand, sobald sie auf ein Lesezeichen treffen, das zum Fortsetzen einen externen Anstoß erfordert, z. B. wenn die Workflowinstanz per Receive auf die Übermittlung einer Nachricht wartet. DasWorkflowIdleBehavior ist ein Verhalten, mit dem Sie die Dauer des Zeitraums zwischen dem Eintritt einer Dienstinstanz in den Leerlauf und der Beibehaltung oder Entladung einer Dienstinstanz angeben können. Es enthält zwei Eigenschaften, mit denen Sie diese Zeitspannen festlegen können. TimeToPersist gibt die Zeitspanne zwischen dem Eintritt einer Workflowdienstinstanz in den Leerlauf und dem Zeitpunkt der Beibehaltung der Workflowdienstinstanz an. TimeToUnload gibt die Zeitspanne zwischen dem Eintritt einer Workflowdienstinstanz in den Leerlauf und dem Zeitpunkt der Entladung der Workflowdienstinstanz an. Die Entladung bedeutet in diesem Fall, dass die Instanz im Instanzspeicher beibehalten und aus dem Arbeitsspeicher entfernt wird. In diesem Thema wird erklärt, wie Sie das WorkflowIdleBehavior -Verhalten in einer Konfigurationsdatei konfigurieren.

So konfigurieren Sie WorkflowIdleBehavior

  1. Fügen Sie ein <workflowIdle>-Element zum <behavior>-Element innerhalb des <serviceBehaviors>-Elements hinzu, wie im folgenden Beispiel gezeigt.

    <behaviors>  
      <serviceBehaviors>  
        <behavior name="">  
          <workflowIdle timeToUnload="0:05:0" timeToPersist="0:04:0"/>
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
    

    Das timeToUnload -Attribut gibt den Zeitraum zwischen dem Eintritt einer Workflowdienstinstanz in den Leerlauf und der Entladung des Workflowdiensts an. Das timeToPersist -Attribut gibt den Zeitraum zwischen dem Eintritt einer Workflowdienstinstanz in den Leerlauf und der Beibehaltung der Workflowdienstinstanz an. Der Standardwert für timeToUnload beträgt 1 Minute. Der Standardwert für timeToPersist ist MaxValue. Wenn im Leerlauf befindliche Instanzen im Arbeitsspeicher, aber aus Gründen der Stabilität beibehalten werden sollen, legen Sie die Werte so fest, dass Folgendes zutrifft: timeToPersist<timeToUnload. Um zu verhindern, dass im Leerlauf befindliche Instanzen entladen werden, legen Sie timeToUnload auf MaxValuefest. Weitere Informationen über WorkflowIdleBehavior finden Sie unter Erweiterbarkeit des Workflowdiensthosts

    Hinweis

    Im vorangehenden Konfigurationsbeispiel wird die vereinfachte Konfiguration verwendet. Weitere Informationen finden Sie unter Erweiterte Konfiguration.

So ändern Sie Leerlaufverhalten in Code

  • Im folgenden Beispiel wird die Wartezeit bis zum programmgesteuerten Beibehalten und Entladen geändert.

    // Code to create a WorkFlowServiceHost is not shown here.
    // Note that SqlWorkflowInstanceStore is in the System.Activities.DurableInstancing.dll
    host.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore(connectionString );
    WorkflowIdleBehavior alteredBehavior =  new WorkflowIdleBehavior();
    // Alter the time to persist and unload.
    alteredBehavior.TimeToPersist = new TimeSpan(0, 4, 0);
    alteredBehavior.TimeToUnload = new TimeSpan(0, 5, 0);
    //Remove the existing behavior and replace it with the new one.
    host.Description.Behaviors.Remove<WorkflowIdleBehavior>();
    host.Description.Behaviors.Add(alteredBehavior);
    
    ' Code to create a WorkflowServiceHost not shown here.
    ' Note that SqlWorkflowInstanceStore is in the System.Activities.DurableInstancing.dll
    host.DurableInstancingOptions.InstanceStore = New SqlWorkflowInstanceStore(connectionString)
    ' Create a new workflow behavior.
    Dim alteredBehavior As WorkflowIdleBehavior = New WorkflowIdleBehavior()
    
    ' Alter the time to persist and unload.
    alteredBehavior.TimeToPersist = New TimeSpan(0, 4, 0)
    alteredBehavior.TimeToUnload = New TimeSpan(0, 5, 0)
    ' Remove the existing behavior and add the new one.
    host.Description.Behaviors.Remove(Of WorkflowIdleBehavior)()
    host.Description.Behaviors.Add(alteredBehavior)
    

Siehe auch