Frage

Ich habe festgestellt kürzlich ein Problem mit der multi-threaded Natur des BizTalk-Mapper und wie es behandelt externe Baugruppen.

Wie dieses Zitat von MSDN zeigt an:

  

Wichtig Jeder Code in einem schriftlichen   Außenbaugruppe zur Verwendung in einem   Skripterstellungsfunktoid Thread zu sein braucht   sicher. Dies ist erforderlich, weil   mehrere Instanzen einer Karte verwenden können,   diese .NET-Instanzen zur Laufzeit unter   Stressbedingungen.

Der Mapper wird Fälle von externen Baugruppen wiederverwendet werden.

In einer Nutzvorrichtung mein Team wurde mit wir den folgenden Code hatte:

public class MapUtil
{
    private string _storeReference;

    public void SetStoreReference(string ref)
    {
       _storeReference = ref;
    }

    public string GetStoreReference()
    {
        return _storeReference;
    }
}

Dies verursacht wurde storereferences von einer Datei in verschiedenen Dateien zugeordnet werden.

I (erscheinen) dies behoben hat durch den privaten Bereich mit [ThreadStatic] Dekoration

[ThreadStatic]
private static string _storeReference;

Meine Frage ist - weiß jemand, der Probleme mit dieser in dem BizTalk-Mapper? Ich bin mir bewusst, dass es Probleme [ThreadStatic] in Asp.Net für examble verwenden, aufgrund Fäden wieder verwendet werden, können aber keine Dokumentation auf dem Weg der BizTalk-Mapper beschäftigt sich mit Themen finden.

War es hilfreich?

Lösung 2

Ich habe noch keine endgültige Aussage entlang der Linien von ‚The Thread-Verhalten innerhalb des BizTalk-Mapper ist xyz, so dass Sie Pflege, die Sie verwenden Methode abc nehmen sollten‘ gefunden, und ich bin mir nicht sicher, dass eine solche Antwort wird zu kommen von überall außerhalb des BizTalk-Produktteam.

Sie ein Kollege mit direkten Kontakten an das Produktteam ist auf verlängerten Weihnachtsurlaub (glücklicher Hund) so, bis er zurückkommt Ich dachte, ich würde mit dem Wechsel zu unserem Code gemacht beachten Sie, dass wir nicht eine einzige Wiederholung des gesehen haben Threadingprobleme auf einem hohen Volumenproduktionsserver.

Nun - das ist nicht ganz richtig, ich schaffte es das Schlüsselwort static von einer Eigenschaft auf meiner Hilfsklasse zu verpassen und für diese Eigenschaft wir haben immer noch die Threadingprobleme zu sehen. Ich nehme das als Beweis für ThreadStatic der richtige Weg ist, jetzt zu gehen.

Andere Tipps

Ich habe Threadstatic verwendet eine Variable gesetzt Pipeline benutzerdefinierte erhalten und Zugriff dann seinen Wert innerhalb BizTalk Map (durch eine Hilfsklasse). hat kein Problem, so weit gekommen -. getestet mit ~ 50 Anrufungen parallel

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top