سؤال

أنا بدأت للتو ترقية تطبيق ASP.net MVC و أنا كائن عقد تطبيق الدولة (ومن يتتبع بعض العمليات قيد التشغيل على الجهاز ، بدء وإيقاف اللازمة وإرسال/استقبال MSMQ الرسالة).

حيث يجب الحفاظ على هذا الكائن ؟ في التطبيق الحالي (على أساس HttpListener) هو المفرد ، ومع ذلك أنا أعرف ووحدانية إجراء اختبار صعب.سيكون من الصعب وهمية أو اختبار هذا الكائن على الأقل في إطار MVC التطبيق نفسه ، وقد إنها مجموعة من الاختبارات خارج التطبيق على أي حال.ومع ذلك قد تحتاج إلى استبدال كعب للاختبار.

موضوع يحتاج إلى إتاحة عدد من وحدات التحكم.حيث يجب تخزين هذا الكائن وكيف يجب أن يتاح تحكم ؟ أنا لم أر قط مثل هذه الحالة هو موضح في أي ASP.net MVC الأمثلة التي رأيتها.

تحديث:

أعتقد أني أريد أن أشرح لماذا أنا لا يمكن تخزين هذه البيانات في قاعدة بيانات.أولا يجب أن أوضح ما التطبيق:

التطبيق يقدم الصور التي يتم إنشاؤها بشكل حيوي من قبل عدد من "محركات" التي هي العمليات التي يتم تشغيلها على الملقم إبلاغ عبر MSMQ.يتيح استدعاء كائن أنا أسأل سؤال حول EngineManager.عملية غني عن شيء مثل هذا:

  1. العميل وظائف XML طلب إلى الخادم ، وإعطاء اسم "محرك" لاستخدامها ، وكذلك عدد من المعلمات يصف الصورة.
  2. تطبيق يتحقق EngineManager لمعرفة ما إذا كان المحرك يعمل.إذا لم يبدأ ذلك.
  3. تطبيق وظائف غير MSMQ رسالة إلى المحرك و ينتظر الرد.
  4. التطبيق يرسل صورة ولدت مرة أخرى إلى العميل.
  5. إذا كان في أي نقطة محرك إيقاف أو تعطل التطبيق يجب أن يكون على بينة من ذلك بحيث يمكن تشغيله على الطلب التالي إلى أن المحرك.
  6. عند تطبيق إيقاف جميع محركات أيضا إيقاف.

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

كما ترون انها ليست النمطية الخاصة بك قاعدة البيانات المدعومة من خادم الويب.

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

المحلول

إذا كنت تريد هذا الكائن أن تكون متاحة لجميع المستخدمين ، أيفإنه ليس من دورة محددة ، يمكن أن ننظر في تخزينه في حالة التطبيق:

http://msdn.microsoft.com/en-us/library/bf9xhdz4(مقابل.71).aspx

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

نصائح أخرى

يجب تمرير الكائن إلى منشئ كل Controller مثلا وحدة تحكم عمل الأساليب يجب أن نستخدم كل كائن سبيل المثال صدر في إلى Controller المثال منشئ.

الافتراضي ControllerFactory الذي يأتي مع ASP.NET MVC لن تسمح لك أن تفعل هذا.ومع ذلك ، هناك مجانا الملحق الأطر (واحد يعجبني هو Autofac) التي لا يسمح هذا النمط من البرمجة.

الاحتفاظ التطبيق الخاص بك البيانات في قاعدة بيانات الوصول إلى هذا من خلال نموذج طبقة.العميل الحفاظ على معرف جلسة العمل فقط.

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