2009-01-29 6 views

Antwort

-2

unabhängig von der Art Sie im Cache natürlich gespeichert ... sollte es serializable sein, obwohl

+1

Wenn der Cache im Speicher ist, müssen Sie nicht serialisieren –

14

Wenn ich Sie wäre, würde ich nicht darauf vertrauen, dass der Dienst in IIS gehostet wird. Was wäre, wenn Sie Ihren WCF-Dienst mit einer anderen Technologie hosten möchten? Ich denke, Sie sollten memcached auschecken, die eine viel allgemeinere Caching-Lösung ist, und es funktioniert gut mit .NET.

Wie auch immer, wenn Sie wirklich den IIS-Cache verwenden möchten, verwenden Sie System.Web.HttpRuntime.Cache statt HttpContext.Current.Cache wie die Httpcontext nicht immer verfügbar ist. Auch

, wie cruizer sagte, die tatsächliche Art der Objekte ist völlig irrelevant, solange sie sind serializable (das heißt, werden die Klassen verziert mit dem [Serializable()] Attribut). Der IIS-Cache selbst benötigt keine serialisierbaren Objekte, WCF jedoch.

+0

ich stimme zu. Vermeiden Sie eine enge Kopplung Ihres Dienstes, um nur mit IIS zu arbeiten. – cruizer

+1

stimme ich auch zu. Bitte koppeln Sie keine WCF-Dienste. Es macht Juval Lowy weinen. –

+0

+1 für den System.Web.HttpRuntime.Cache-Tipp. Ich hatte ein Problem mit HttpContext.Current.Cache ohne zu erkennen, dass das die Ursache war, behoben, als ich zu HttpRuntime wechselte, danke –

2

Sie serialisieren Ihre Objekte, um sie zu transportieren, aber es ist nicht notwendig, serialisierbare Objekte zwischenzuspeichern.

Ihr Dienst ruft Ihre Geschäftslogik auf, um die Anforderungen zu verarbeiten, aber was über den Draht geht, sollten nicht Ihre Geschäftsobjekte sein, sondern die Daten Ihres Dienstes.

Wickeln Sie Ihre Cache-API und entkoppeln Sie sie aus dem HttpRuntime Cache. Wie DrJokepu sagte, Zugriff auf asp.net Cache über HttpRuntime.Cache, wenn Sie so entscheiden.