Freigeben über


Abrufen von nachverfolgten Variablen aus dem Windows Server AppFabric-Überwachungsspeicher

In diesem Beispiel wird gezeigt, wie das Entity Framework zum Abrufen und Deserialisieren von nachverfolgen Workflowvariablen aus der AppFabric-Überwachungsdatenbank verwendet wird. Sie lernen einige der öffentlichen Sichten kennen, die von der Überwachungsdatenbank bereitgestellt werden, der dies ermöglicht. Dieses Beispiel funktioniert mit beliebigen Anwendungen. Es wird die Gemeinsame Windows Server AppFabric-Beispielanwendung empfohlen, die für die Verwendung mit AppFabric-Beispielen erstellt wurde. Sie finden diese Anwendung, wenn Sie in den Ordner <Beispiele>\SampleApplication\OrderApplication navigieren. Dabei ist <Beispiele> der Pfad, unter dem Sie die AppFabric-Beispiele installiert haben.

Hinweis

Beispiele werden nur zu Anschauungszwecken bereitgestellt. Sie sind nicht für die Verwendung in einer Produktionsumgebung gedacht und wurden nicht in einer Produktionsumgebung getestet. Microsoft bietet keinen technischen Support für diese Beispiele.

Voraussetzungen

  • Eine Windows Server AppFabric-Installation mit konfigurierter Überwachung.

  • Mindestens ein in AppFabric gehosteter WCF- oder WF-Dienst

Hinweis

Mit diesem Beispiel werden die Überwachungsfunktionen anschaulicher dargestellt, wenn der Dienst für die Nachverfolgung einer Variablen des komplexen Typs konfiguriert ist.

Wenn Sie nachverfolgte Variablen aus einer benutzerdefinierten Assembly deserialisieren, müssen Sie die Assembly (z. B. die AppFabric-Beispielanwendung) diesem Projekt unbedingt als Referenz hinzufügen, damit die Objekte ordnungsgemäß deserialisiert werden können.

Beispieldateien

Dieses Beispiel umfasst die folgenden Dateien:

  • Visual Studio 2010-Projektmappenstruktur und und unterstützende Codedateien

  • TrackedWFVariable.cs

  • Program.cs

Einrichten und Ausführen dieses Beispiels

  1. Vergewissern Sie sich, dass die Variablen nachverfolgt und in der Überwachungsdatenbank abgelegt wurden. Dies kann über die Prüfung der Sicht WFEventProperties erfolgen, indem Sie sich vergewissern, dass diese Zeilen enthält.

  2. Öffnen Sie die Visual Studio-Projektmappe, die Bestandteil dieses Beispiels ist.

    Wichtig

    Vergewissern Sie sich, dass Sie ein Konto verwenden, das über Lesezugriff auf die AppFabric-Überwachungsdatenbank verfügt.

  3. Bearbeiten Sie den Wert „Database“ in Program.cs so, dass er auf die gewünschte Datenbank verweist.

  4. Bearbeiten Sie den Wert, der dem Konstruktor AppFabricMonitoringEntities in Program.cs übergeben wird. Standardmäßig verweist dieser auf eine SQL Express-Instanz. Am Anfang der Datei wurde aus Gründen der Einfachheit ein standardmäßiger SQL-Instanzname eingefügt.

  5. Drücken Sie F5, um das Beispiel zu erstellen und auszuführen.

Informationen zum Verständnis dieses Beispiels

Program.cs verwendet das Entity Framework, um die Datenbank nach den jüngsten Workflowereignissen abzufragen. Die TrackedWFVariable-Klasse verwendet den Datenkontext des Entity Frameworks für die Verbindung, um alle WFEventProperty-Zeilen abzurufen, die sich auf die jüngsten Ereignisse beziehen. Diese Eigenschaften werden dann in die ursprünglichen .NET-Typen deserialisiert. Dieser Prozess ist je nach Typ des zu deserialisierenden Objekts unterschiedlich.

Die folgenden Typen werden als einfache Zeichenfolgendarstellungen in der Spalte Value der Sicht WFEventProperties gespeichert:

  • System.String

  • System.Char

  • System.Boolean

  • System.Int32

  • System.Int16

  • System.Int64

  • System.UInt32

  • System.UInt16

  • System.UInt64

  • System.Single

  • System.Double

  • System.Guid

  • System.DateTimeOffset

  • System.DateTime

Diese Typen können durch Aufrufen der statischen Parse-Methoden, die von diesen Typen definiert werden, deserialisiert werden, wobei die Zeichenfolgenwerte als Parameter übergeben werden. Die Werte aller anderen Typen werden in der Spalte „ValueBlob“ der Sicht „WFEventProperties“ gespeichert und müssen mithilfe von System.Runtime.Serialization.NetDataContractSerializer deserialisiert werden. Dies setzt voraus, dass die Assembly, die den zu deserialisierenden Typ deklariert, geladen werden muss. Die Objekte werden auf diese Weise in der Datenbank abgelegt, damit die vorstehend aufgeführten einfacheren Typen einfacher von SQL-Clients abgefragt werden können.

Entfernen dieses Beispiels

Beim Entfernen des Beispiels werden keine Elemente hinterlassen. Sie können die Beispieldateien löschen, falls Sie das wünschen.

  2011-12-05