كيفية تنفيذ موفر ذاكرة تخزين مؤقت مخصص باستخدام ASP.NET MVC

StackOverflow https://stackoverflow.com/questions/873355

  •  22-08-2019
  •  | 
  •  

سؤال

أنا مهاجر أ مونوريل تطبيق ل أسب.نت إم في سي 1.0.في تطبيقي الأصلي كتبت موفر ذاكرة تخزين مؤقت مخصص (موفر ذاكرة تخزين مؤقت موزع يستخدم com.memcached).في MonoRail كانت هذه المهمة سهلة للغاية لأن إطار العمل يستخدم واجهات وهناك ICacheProvider يبدو مثل هذا:

public interface ICacheProvider : IProvider, IMRServiceEnabled
{
    void Delete(string key);
    object Get(string key);
    bool HasKey(string key);
    void Store(string key, object data);
}

يتوفر مثيل لهذه الواجهة في كل إجراء لوحدة التحكم.لذلك ، كل ما كان علي فعله هو تنفيذ موفر ذاكرة تخزين مؤقت مخصص يستخدم memcached ويخبر MonoRail لاستخدام مزود ذاكرة التخزين المؤقت الخاص بي بدلا من الافتراضي.كان من السهل أيضًا الاستهزاء واختبار وحدة التحكم الخاصة بي.

في ASP.NET MVC 1.0 يوجد تجميع System.Web.Abstractions (الاسم يبدو واعدًا) الذي يحدد HttpContextBase مثله:

public abstract class HttpContextBase : IServiceProvider
{
    ... 
    public virtual System.Web.Caching.Cache Cache { get; }
    ...
}

لا أفهم كيف أن خاصية ذاكرة التخزين المؤقت المستخدمة هنا هي تجريد لموفر ذاكرة التخزين المؤقت.إنه الإرث المختوم مخبأ فصل.ويبدو أنني لست الوحيد تكافح من أجل السخرية خارج الطبقات في الإطار.

أنا جديد جدًا على إطار عمل ASP.NET MVC ويجب أن أفتقد شيئًا ما هنا.يمكنني كتابة CustomBaseController يستخدم واجهة ICacheProvider التي أقوم بتعريفها و جميع وحدات التحكم الخاصة بي مستمدة من هذه الفئة الأساسية ، ولكن إذا كان هناك حل أكثر أناقة (ASP.NET MVCish) ، فسأكون سعيدا بتنفيذه.لقد لاحظت أن HttpContextBase ينفذ IServiceProvider.اين ال احصل على خدمة طريقة الذهاب للبحث عن الخدمات؟هل يمكن الاستهزاء بهذا بسهولة؟

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

المحلول

لا تحتوي ذاكرة التخزين المؤقت على تجريد أو مزود رسمي، ولكن يمكنك إنشاء واحد بسهولة:

يتضمن ASP.NET 4.0 تجريد موفر ذاكرة التخزين المؤقت للإخراج (بقدر ما أعلم لا تجريد عام لذاكرة التخزين المؤقت ولكن فقط لـ انتاج التخزين المؤقت)

نصائح أخرى

وعفا عليها الزمن هذه الإجابة. انظر> وأ href = "http://weblogs.asp.net/gunnarpeipman/archive/2009/11/19/asp-net-4-0-writing-custom-output-cache-providers.aspx" يختلط = "نوفولو "> ASP.NET 4.0: الكتابة إخراج مخصصة مقدمي مخبأ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top