سؤال

لقد أعلنت حدثًا على وحدة HTTP ، لذا فسيقوم باستطلاع المشتركين لقيمة حقيقية/خاطئة لتحديد ما إذا كان ينبغي أن يمضي قدما في مهمتها المتمثلة في تعديل استجابة HTTP. إذا أجاب مشترك واحد فقط ، فهو يدير منطقه.

هل لهذا معنى؟
هل هناك مخاطر محتملة لا أراها؟

public class ResponseTweaker : IHttpModule {

    // to be a list of subscribers 
    List<Func<HttpApplication, bool>> listRespondants = new List<Func<HttpApplication, bool>>();

    // event that stores its subscribers in a collection
    public event Func<HttpApplication, bool> RequestConfirmation {
        add {
            listRespondants.Add(value);
        }
        remove {
            listRespondants.Remove(value);
        }
    }

    public void Init(HttpApplication context) {
        if (OnGetAnswer(context)) // poll subscribers ...
            // Conditionally Run Module logic to tweak Response ... 
    }

    /* Method that polls subscribers and returns 'true'
     *  if only one of them answers yes.
     */
    bool OnGetAnswer(HttpApplication app) {
        foreach (var respondant in listRespondants)
            if (respondant(app))
                return true;
        return false;
    }

    // etc...
}
هل كانت مفيدة؟

المحلول

لا أعتقد أنها فكرة جيدة. يعتمد مقدار المشكلات على بعض العوامل مثل ...

  1. سيتم تجذير Listersendants وبالتالي سيكون لها عمر التطبيق. إذا كانت هناك مجموعة من العناصر التي يتم إضافتها ، فستستمر بصمة الذاكرة في الزيادة. لذلك ، يفضل الوصول إلى عدد العناصر في هذه القائمة.

يمكن أن يكون ما يلي سدادة عرض ...

  1. ستقوم IISReset أو Recycly Domain بإعادة تدوير كل هذه المعلومات من التطبيق الخاص بك. كيف تخطط لإعادة العناصر إلى هذه القائمة؟ قاعدة البيانات؟

  2. ماذا لو كان لديك مزرعة ويب. لن يعمل هذا التطبيق كما هو متوقع في اللحظة التي تحاول فيها التوسع. السبب هو ... حتى لو كان لديك نفس الوحدة المحملة على جميع الخوادم في مزرعة الويب ، فإن البيانات في عملية العمال محلية. وبالتالي ، فإن Listersendans سيكون مختلفًا في جميع خوادمك إلا إذا كنت تقوم بتحميلها من بعض قاعدة البيانات.

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