سؤال

لدي تجميع يمكن استخدامه من قبل أكثر من عملية في وقت واحد.إذا كنت أستخدم فئة ثابتة، فهل ستستخدم العمليات المتعددة جميعها نفس "المثيل" لتلك الفئة؟

نظرًا لأن العمليات منفصلة، ​​فهل سيتم تشغيلها ضمن مجالات تطبيق مختلفة، وبالتالي تكون "المثيلات" الثابتة منفصلة؟

المشكلة في التفاصيل هنا هي أن التجميع يتم استخدامه بواسطة محول BizTalk مخصص تم تعيينه لمعالجة الرسائل على دفعات متوازية.وهذا ما أسميه "عمليات متعددة" أعلاه.

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

المحلول

ستشارك سلاسل رسائل متعددة مثيلًا.لهذا السبب، يمكن أن تكون الفئة الثابتة ملائمة لتمرير الحالة بين سلاسل الرسائل، ولكن عليك أن تكون حريصًا جدًا على عدم إدخال شروط السباق (Monitor أو lock ممتلكاتك).

ومع ذلك، متعددة العمليات يجب أن تكون في AppDomains منفصلة وبالتالي يكون لكل منها مثيل خاص بها.

نصائح أخرى

توجد الفئات الثابتة مرة واحدة لكل مجال تطبيق.في حالتك، سيعتمد الأمر على ما إذا كان المحول يستخدم مؤشرات ترابط متعددة في نفس مجال التطبيق (وبالتالي مشاركة مثيل واحد للفئة الثابتة) أو يستخدم عمليات متعددة (وبالتالي وجود مثيلات منفصلة للفئة الثابتة).

"لدي تجميع يمكن استخدامه من خلال أكثر من عملية في نفس الوقت.إذا كنت أستخدم فئة ثابتة، فهل ستستخدم العمليات المتعددة جميعها نفس "المثيل" لتلك الفئة؟"

لا، كل منهم لديه حالات منفصلة.

"نظرًا لأن العمليات منفصلة، ​​فهل سيتم تشغيلها ضمن مجالات تطبيق مختلفة، وبالتالي تكون "المثيلات" الثابتة منفصلة؟"

نعم.

يقتصر نطاق الفئة الثابتة على مجال التطبيق.سيكون لكل مجال تطبيق نسخته الخاصة من أي متغيرات ثابتة قد تكون لديك.إذا كانت "العمليات" الخاصة بك عبارة عن سلاسل رسائل داخل نفس مجال التطبيق، فستشارك القيم الثابتة.ولكن إذا كانت عمليات Windows منفصلة فعليًا، فسيكون لها نطاقات تطبيقات مختلفة وبالتالي نسخ منفصلة.

قد ترغب في إلقاء نظرة على نمط Singleton.يبدو أن الجوهر هو أنك تريد التحكم في عدد مثيلات الخدمة.

أعتقد أنك تريد ملف dll/مشروع منفصل لخدمة جميع طلبات العميل.يمكنك استخدام فئة ثابتة/مفردة/متعددة لتنفيذ الوظيفة المطلوبة.يعتمد الأمر حقًا على ما تحاول تحقيقه.

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