WCF. فوق التزامن Mode.Multiple
-
01-10-2019 - |
سؤال
لدي خدمة WCF التي يتم استخدامها بشكل متزامن ، ولكن تم تعيين توافق على ذلك على قيمة ConcurrencyMode.Multiple ، لأن الخدمة عديمة الجنسية بالفعل. ما مقدار النفقات العامة التي يفرضها هذا الوضع؟ هل من المنطقي تغيير الوضع إلى concurrencymode.single؟
المحلول
لا يفرض أي عام - بخلاف حقيقة أن مثيل الخدمة الواحدة يجب أن يتعامل مع الوصول المتزامن ، يجب أن يكون بنسبة 200 ٪ آمنًا لخيط - وهذا برمجة صعبة إلى حد ما.
التبديل إلى ConcurrencyMode.Single يجعل البرمجة أكثر بساطة - لا مزيد من المخاوف بشأن التزامن في فئة الخدمة. لكنه يقوم بتسلسل جميع الطلبات - واحد فقط في كل مرة يمكن معالجته على الإطلاق ، وبالتالي سيصبح عنق الزجاجة الأداء بسرعة.
ذكرت أن خدمتك عديمة الجنسية - فلماذا لا تجعلها تستخدم أفضل الممارسات المتفق عليها عادة - ليست مفردة ، ولكنها فئة خدمة منتظمة "لكل مكالمة". في هذا الوضع ، يحصل كل طلب على مثيل جديد جديد لفئة الخدمة الخاصة بك ، لا يوجد أي ضجة حول البرمجة المتعددة المطلوبة (يتم التعامل مع جميع عمليات الرئاسة المتعددة من قبل وقت تشغيل WCF) ، ستحصل على معالجة متزامنة لطلبات متعددة - بالنسبة لي ، هذه الفوائد فقط والفوائد لا جوانب أسفل!