دوبلكس Wcf خادم خيوط - حيث أن تفعل متزامن DB I/O ؟
-
05-07-2019 - |
سؤال
هنا هي بلدي الافتراضات الأساسية:
Wcf ينفذ الخدمة أساليب عملية في IOCP المواضيع (UnsafeQueueNativeOverlapped) بدلا من العادية ThreadPool المواضيع (QueueUserWorkItem).
حجب I/O يجب أن لا أن يتم ذلك من داخل واحد-طريقة تشغيل خدمة الأساليب.
حجب I/O يجب أن لا يكون ذلك داخل العادي ThreadPool الموضوع.
وأعتقد أن أفضل استراتيجية هي أن سلسلة المتزامن المكالمات.لذا ، إذا كنت تتلقى رسالة في اتجاه واحد خدمة العملية ثم القيام المتزامن الدعوة إلى db و عندما يكمل أقوم المقبل المتزامن db الدعوة ، وما إلى ذلك.وأخيرا الرد عبر بريدي wcf رد...
ومع ذلك ، من الصعب أن تفعل كل بيانات الاتصال المتزامن.لقد لجأت إلى كسر المادتين 2 و 3 أعلاه, ولكن أنا لا أحب ذلك لأنني أعتقد أن هذا سوف يموت جوعا ThreadPool في نهاية المطاف.هل هناك أي أفضل استراتيجيات ؟
لقد بحثت في استخدام جون السكيت هو CustomThreadPool, ولكن لست متأكدا إذا كان هذا هو الجواب أيضا.
المحلول
أود أن أقترح كسر القاعدة 3 من يصطفون متزامن I/O يدعو ThreadPool لأداء.الخدمة الأساليب لا تزال العودة على الفور ، ولكن العمل في الخلفية في نهاية المطاف ، ربما مستهلا العودة الإخطار.