.NET वेब सेवा में डेटा को बनाए रखने का सबसे अच्छा तरीका

मेरे पास एक वेब सेवा है जो इस जेसन फ़ाइल से डेटा पूछता है, लेकिन मैं नहीं चाहता कि वेब सेवा को हर बार फ़ाइल तक पहुंचना पड़े। मैं सोच रहा हूं कि शायद मैं कहीं और डेटा (शायद स्मृति में) स्टोर कर सकता हूं, इसलिए अगली बार जब वह उसी डेटा से पूछताछ करने की कोशिश कर रहा है तो वेब सेवा केवल डेटा प्राप्त कर सकती है। मैं समझता हूं कि क्या करने की जरूरत है, लेकिन मुझे यकीन नहीं है कि वास्तव में इसे कैसे किया जाए। हम वेब सेवा में डेटा कैसे बनाते हैं?

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
ro fr bn

4 उत्तर

klughing को प्रतिबिंबित करने के लिए, यदि आपका JSON डेटा अपेक्षित नहीं है अक्सर बदलने के लिए, मुझे लगता है कि इसे कैश करने का सबसे आसान तरीका किसी प्रकार के स्थिर संग्रह का उपयोग करना है - शायद डेटाटेबल।

सबसे पहले, अपने JSON डेटा को System.Data.DataTable में पार्स करें, और इसे अपनी वेब सेवा श्रेणी में स्थिर बनाएं। फिर, स्थिर वस्तु का उपयोग करें। जब तक आईआईएस आपके एप्लिकेशन पूल को रीसायकल नहीं करता तब तक डेटा को कैश किया जाना चाहिए।

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
जोड़ा

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
जोड़ा

Ice ^^ हीट का विचार, आप शायद इस बारे में सोचना चाहते हैं कि आप कैश करेंगे - या तो एप्लिकेशन कैश में जेसन फ़ाइल की सामग्री कैश करें:

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

और फिर प्रत्येक हिट पर उस परिणाम को उत्पन्न करें जो आपको चाहिए। वैकल्पिक रूप से आप फ़ंक्शन परिभाषा पर webservice आउटपुट कैश कर सकते हैं:

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

जानकारी xml वेब सेवा कैशिंग रणनीति से एकत्र की गई जानकारी।

0
जोड़ा

वैश्विक या स्थैतिक संग्रह ऑब्जेक्ट का उपयोग करने के बारे में क्या? क्या यह एक बेहतर तरकीब है?

0
जोड़ा