سؤال

لدي خدمة ويب التي الاستفسارات البيانات من ملف json, ولكن أنا لا أريد خدمة ويب إلى الوصول إلى الملف في كل مرة.أنا أفكر أنني ربما يمكن تخزين البيانات في مكان آخر (ربما في الذاكرة) لذلك خدمة ويب يمكن أن مجرد الحصول على البيانات من هناك في المرة القادمة انها محاولة الاستعلام عن البيانات نفسها.أنا نوعا ما فهم ما يجب القيام به ولكن أنا فقط لست متأكدا كيف أن تفعل ذلك في الواقع.كيف نستمر البيانات في خدمة الإنترنت ؟

تحديث: كل الاقتراحات التخزين المؤقت باستخدام متغيرات ثابتة ، تبدو جيدة.ربما يجب فقط أن تستخدم على حد سواء لذا أنا يمكن أن ننظر أولا, وإذا لم يكن هناك استخدام الثانية, إذا لم يكن هناك, ثم سوف ننظر في ملف json.

هل كانت مفيدة؟

المحلول

تمتد على الجليد^^الحرارة'فكرة, قد ترغب في التفكير في المكان الذي من شأنه أن ذاكرة التخزين المؤقت - إما ذاكرة التخزين المؤقت محتويات ملف json في ذاكرة التخزين المؤقت التطبيق مثل ذلك:

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

ومن ثم توليد النتائج تحتاج من ذلك على كل ضرب.بدلا من ذلك يمكنك ذاكرة التخزين المؤقت ويب الإخراج على تعريف الدالة:

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

المعلومات التي تم جمعها من خدمة ويب XML استراتيجيات التخزين المؤقت.

نصائح أخرى

ماذا عن استخدام العالمية أو جمع ثابت كائن ؟ هل هذه فكرة جيدة ؟

ASP.NET التخزين المؤقت تعمل فقط كذلك مع خدمات ويب حتى تتمكن من تنفيذ العادية التخزين المؤقت كما هو موضح هنا: http://msdn.microsoft.com/en-us/library/aa478965.aspx

صدى klughing, ، إذا كانت البيانات JSON ليس من المتوقع أن يتغير في كثير من الأحيان ، أعتقد أن أبسط طريقة ذاكرة التخزين المؤقت هو استخدام ثابت جمع من نوع ما - ربما DataTable.

أولا تحليل الخاص بك البيانات JSON إلى النظام.البيانات.DataTable ، وجعلها ثابتة في خدمة الويب الخاص بك فئة.ثم الوصول إلى ثابت كائن.البيانات يجب أن يبقى مؤقتا حتى IIS بتدوير الخاص بك تجمع التطبيقات.

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();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top