هل يمكن استخدام محرز لضمان عدم الاتصال النهائي أبدا؟
-
12-12-2019 - |
سؤال
لدينا مشكلة متعددة صعبة للغاية حيث يجب أن يكون الخيط المستخدم لتهيئة نظام الحزب الثالث هو نفس الخيط المستخدم لإنهاءه. الفشل في القيام بذلك يؤدي إلى طريق مسدود. نحن نؤدي Interop من خدمة WCF المستضافة في IIS. حاليا يتم التنظيف حاليا بالتخلص وعادة ما يعمل بشكل جيد للغاية. لسوء الحظ، تحت الحمل الثقيل، سيقوم IIS بإجراء تفريغ وقح ولا نصل إلى استدعاء المتصل. يمكننا نقل منطق إيقاف التشغيل إلى نهادة حاسمة ولكن هذا لا يساعد لأننا لم يعد لدينا إمكانية الوصول إلى مؤشر ترابط التهيئة! عند هذه النقطة، يبدو أن لجوءنا الوحيد يخفي CLR بأنه من المحتمل الآن أن يكون AppDomain في حالة تالفة. ومع ذلك، لست متأكدا من كيفية القيام بذلك (أو إذا كان ذلك ممكنا). قد يكون هذا هو فائدة العقود على مستوى فئة لكنني أعترف أنني لا أفهم حقا تلك بالكامل.
تحرير: بدلا من ذلك، يمكن اعتبار هذا كمحاولة تقارب الخيط في النهاية. إذا كان لدى أي شخص حل ذكيا لذلك، فأنا جميع الأذنين :)
المحلول
حاول تقسيم التعليمات البرمجية التي تعتمد على هذا الاعتماد الأصلي على تطبيق خدمة Windows المستقل إذا كان ذلك ممكنا.إذا كان لا يمكن أن تعمل بشكل جيد مع WCF / IIS، فيجب عليك تجنب النزاعات بدلا من القتال ضدها.