سؤال

لدي خدمة WCF التي يتم استخدامها بشكل متزامن ، ولكن تم تعيين توافق على ذلك على قيمة ConcurrencyMode.Multiple ، لأن الخدمة عديمة الجنسية بالفعل. ما مقدار النفقات العامة التي يفرضها هذا الوضع؟ هل من المنطقي تغيير الوضع إلى concurrencymode.single؟

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

المحلول

لا يفرض أي عام - بخلاف حقيقة أن مثيل الخدمة الواحدة يجب أن يتعامل مع الوصول المتزامن ، يجب أن يكون بنسبة 200 ٪ آمنًا لخيط - وهذا برمجة صعبة إلى حد ما.

التبديل إلى ConcurrencyMode.Single يجعل البرمجة أكثر بساطة - لا مزيد من المخاوف بشأن التزامن في فئة الخدمة. لكنه يقوم بتسلسل جميع الطلبات - واحد فقط في كل مرة يمكن معالجته على الإطلاق ، وبالتالي سيصبح عنق الزجاجة الأداء بسرعة.

ذكرت أن خدمتك عديمة الجنسية - فلماذا لا تجعلها تستخدم أفضل الممارسات المتفق عليها عادة - ليست مفردة ، ولكنها فئة خدمة منتظمة "لكل مكالمة". في هذا الوضع ، يحصل كل طلب على مثيل جديد جديد لفئة الخدمة الخاصة بك ، لا يوجد أي ضجة حول البرمجة المتعددة المطلوبة (يتم التعامل مع جميع عمليات الرئاسة المتعددة من قبل وقت تشغيل WCF) ، ستحصل على معالجة متزامنة لطلبات متعددة - بالنسبة لي ، هذه الفوائد فقط والفوائد لا جوانب أسفل!

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