المؤلف: Dflying Chen ( http://dflying.cnblogs.com/ )
بالنسبة لبعض الخدمات المعقدة التي يستغرق إكمالها وقتًا طويلاً وليس لها متطلبات عالية في الوقت الفعلي، غالبًا ما يكون اختيار ذاكرة التخزين المؤقت وسيلة فعالة لتحسين الكفاءة. يراعي تنفيذ خدمة الويب الخاصة بـ .NET بشكل كامل الحاجة إلى ذاكرة التخزين المؤقت. ما عليك سوى إعدادات بسيطة لتمكين ذاكرة التخزين المؤقت. يمكن أيضًا لاستدعاء خدمة الويب في Atlas استخدام آلية ذاكرة التخزين المؤقت هذه لتقليل الحمل غير الضروري على جانب الخادم.
لتمكين ذاكرة التخزين المؤقت لخدمة الويب، تحتاج فقط إلى إضافة السمة التالية إلى تعريف WebMethod:
[WebMethod(CacheDuration = 5)]
حيث تمثل قيمة CacheDuration وقت ذاكرة التخزين المؤقت، بالثواني.
ولكن يتم توفير طريقة ذاكرة التخزين المؤقت هذه بواسطة خدمة الويب، ولا يعرف Atlas شيئًا عنها، ولا يزال يتم إرسال كل مكالمة إلى الخادم. لذلك، لا توجد طريقة لذاكرة التخزين المؤقت هذه لتحسين تأثير زمن وصول الشبكة على المستخدمين.
دعونا نتعلم المزيد عن ذاكرة التخزين المؤقت لخدمة الويب من خلال نموذج برنامج.
قم أولاً بكتابة خدمة ويب، وإرجاع الوقت الحالي، وتحديد CacheDuration كـ 5 ثوانٍ:
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
الفئة العامة CachedWebService: System.Web.Services.WebService
{
[WebMethod(CacheDuration = 5)]
DateTime العام GetGurrentTime()
{
إرجاع DateTime.Now؛
}
}
ثم قم بإنشاء صفحة Atlas، وأضف ScriptManager وقم بالإشارة إلى خدمة الويب هذه فيها:
<الخدمات>
الخدمات>
أضف بعض علامات HTML لاستدعاء خدمة الويب هذه وعرض النتائج:
والأخير هو جزء جافا سكريبت، حيث نعرض نتائج كل استدعاء على الصفحة لسهولة التحليل:
function btnInvoc_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
دالة مكتملة (نتيجة) {
$('result').innerHTML += result + "
";
}
لنختبره في المتصفح بعد النقر على الزر عدة مرات، تكون النتائج كما يلي:
في الوقت نفسه، يمكنك أن ترى في Fiddler أن هذه الطلبات يتم إرسالها فعليًا إلى الخادم، وأن ذاكرة التخزين المؤقت هي مجرد تطبيق من جانب الخادم:
يمكن تنزيل الكود المصدري لهذا المثال هنا: