cel mai bun mod de a persista datele în .NET Web Service

Am un serviciu web care întrerupe datele din acest fișier json, dar nu vreau ca serviciul web să aibă acces la fișier de fiecare dată. Mă gândesc că pot să stochez datele în altă parte (poate în memorie), astfel încât serviciul web să poată obține datele de la următoarea dată când încearcă să interogheze aceleași date. Am înțeles ce trebuie făcut, dar nu sunt sigur cum să o fac. Cum vom persista datele într-un serviciu web?

Update: Both suggestions, caching and using static variables, look good. Maybe I should just use both so I can look at one first, and if it's not in there, use the second one, if it's not in there either, then I'll look at the json file.

0
fr hi bn

4 răspunsuri

Pentru a reda klughing , dacă nu vă așteptați datele JSON pentru a schimba des, cred că cea mai simplă modalitate de a cache-o este de a folosi o colecție statică de un fel - poate un DataTable.

Mai întâi, analizați datele JSON într-un System.Data.DataTable și faceți-o statică în clasa de servicii Web. Apoi, accesați obiectul static. Datele trebuie să rămână memorate până când IIS reciclează grupul de aplicații.

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();
    }
}
0
adăugat

ASP.NET caching works just as well with Web services so you can implement regular caching as explained here: http://msdn.microsoft.com/en-us/library/aa478965.aspx

0
adăugat

Extinzând ideea Ice ^^ Heat , ați putea doriți să vă gândiți în cazul în care ați arhiva în memoria cache - fie să memorați conținutul fișierului json în memoria cache a aplicației, așa cum este cazul:

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

Și apoi generați rezultatele de care aveți nevoie de la fiecare lovitură. Alternativ, puteți cache-ul de ieșire webservice pe definiția funcției:

 _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

Informații culese de la Strategii de caching xml pentru serviciul Web .

0
adăugat

Cum rămâne cu utilizarea unui obiect de colecție globală sau statică? E o idee bună?

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com