2010-02-23 3 views
6

Ich habe ein Objekt mit relativ hohen Initialisierungskosten, das eine Thread-sichere Berechnungsmethode zur Verarbeitung von Web-Service-Anforderungen bereitstellt.Objektinstanz zwischen Web-Service-Aufrufen teilen

Ich bin auf der Suche nach der besten Möglichkeit, eine initialisierte Instanz zwischen Anfragen verfügbar zu halten.

Eine Methode besteht darin, sie als statische Variable zu deklarieren. Es bleibt dann verfügbar, bis die AppDomain wiederverwendet wird.

Dies ist ein älterer Webservice, der WCF nicht verwendet, aber die Konvertierung ist eine Option, wenn dies eine bessere Lösung bietet.

Gibt es einen besseren Ansatz?

Antwort

2

Was ist mit dem Zwischenspeichern des Objekts in HttpRuntime.Cache?

Hier lasse ich es im Cache für bis zu einer Stunde, aber Sie können dies bei Bedarf variieren.

+0

Ist der Lebenszyklus des Caches unabhängig vom Lebenszyklus jeder AppDomain (AppDomain verarbeitet die HTTP-Anforderungen)? –

+0

@Eric J. Es ist unabhängig von einer einzelnen HTTP-Anfrage. Mit anderen Worten, Ihr Dienst könnte 1000 Anfragen verarbeiten und das Objekt würde im Cache verbleiben. Wenn die App Domain wiederverwendet wird (täglich oder was auch immer in IIS eingerichtet wurde), wird das zwischengespeicherte Objekt gelöscht. Ebenso ist es nicht garantiert, dass das Objekt für seinen Ablauf im Cache verbleibt, dies ist abhängig von verfügbarem Speicher usw. – Keltex

+0

Dies bietet im Wesentlichen den gleichen Lebenszyklus wie eine statische Objektreferenz, aber mit der zusätzlichen Flexibilität, dass ich den Ablauf steuern kann Wie kann IIS, wenn es etwas Speicher zurückfordern muss? –