Frage

Ich habe einen Webdienst, der Daten aus dieser JSON-Datei abfragt, aber ich möchte nicht, dass der Webdienst jedes Mal auf die Datei zugreifen muss.Ich denke, dass ich die Daten vielleicht woanders speichern kann (vielleicht im Speicher), damit der Webdienst die Daten einfach von dort abrufen kann, wenn er das nächste Mal versucht, dieselben Daten abzufragen.Ich verstehe einigermaßen, was getan werden muss, bin mir aber nicht sicher, wie ich es tatsächlich tun soll.Wie bewahren wir Daten in einem Webdienst auf?

Aktualisieren:Beide Vorschläge, Caching und die Verwendung statischer Variablen, sehen gut aus.Vielleicht sollte ich einfach beide verwenden, damit ich mir zuerst eine ansehen kann, und wenn sie nicht drin ist, verwende ich die zweite. Wenn sie auch nicht drin ist, schaue ich mir die JSON-Datei an.

War es hilfreich?

Lösung

Weiter verlängern Eis^^HitzeWenn Sie die Idee haben, möchten Sie vielleicht darüber nachdenken, wo Sie zwischenspeichern würden – entweder den Inhalt der JSON-Datei im Anwendungscache zwischenspeichern, etwa so:

Context.Cache.Insert("foo", _
                 Foo, _
                 Nothing, _
                 DateAdd(DateInterval.Minute, 30, Now()), _
                 System.Web.Caching.Cache.NoSlidingExpiration)

Und generieren Sie daraus dann bei jedem Treffer die Ergebnisse, die Sie benötigen.Alternativ können Sie die Webservice-Ausgabe in der Funktionsdefinition zwischenspeichern:

<WebMethod(CacheDuration:=60)> _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

Informationen gesammelt von Caching-Strategien für XML-Webdienste.

Andere Tipps

Wie wäre es mit der Verwendung eines globalen oder statischen Sammlungsobjekts?Ist das eine gute Idee?

ASP.NET-Caching funktioniert genauso gut mit Webdiensten, sodass Sie reguläres Caching wie hier erläutert implementieren können: http://msdn.microsoft.com/en-us/library/aa478965.aspx

Echo Klughing, Wenn nicht damit zu rechnen ist, dass sich Ihre JSON-Daten häufig ändern, besteht meiner Meinung nach der einfachste Weg, sie zwischenzuspeichern, darin, eine statische Sammlung zu verwenden – vielleicht eine DataTable.

Analysieren Sie zunächst Ihre JSON-Daten in eine System.Data.DataTable und machen Sie sie in Ihrer Webdienstklasse statisch.Greifen Sie dann auf das statische Objekt zu.Die Daten sollten zwischengespeichert bleiben, bis IIS Ihren Anwendungspool recycelt.

public class WebServiceClass
{
    private static DataTable _myData = null;
    public static DataTable MyData
    {
        get
        {
            if (_myData == null)
            {
                _myData = ParseJsonDataReturnDT();
            }
            return _myData;
        }
    }

    [WebMethod]
    public string GetData()
    {
        //... do some stuff with MyData and return a string ...
        return MyData.Rows[0]["MyColumn"].ToString();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top