ما هي فوائد العديد من الخدمات؟ هل يدعم Servicehost عدة اتصالات متزامنة على نقطة نهاية واحدة؟

StackOverflow https://stackoverflow.com/questions/2131796

سؤال

أفكر في استضافة خدمة WCF الخاصة بي بدلاً من استخدام IIS. والسؤال الكبير بالنسبة لي هو ما إذا كنت بحاجة إلى إنشاء مثيل لخدمات خدمة متعددة كما يفعل IIS أو أن يكون واحدًا كافيًا.

هل تمنح مواد خدمة Muptiple أي فائدة باستثناء الأسباب الأمنية للعزلة؟

هل يمكن لخدمة Servicehost تقديم اتصالات متعددة على نقطة نهاية واحدة في وقت واحد؟

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

المحلول

لا توجد فائدة أو خيار ، حقًا - واحد ServiceHost (مثيل تلك الفئة) يمكن أن تستضيف خدمة واحدة تمامًا ، ولكل خدمة ، تحتاج إلى مضيف خدمة منفصل. إنه رسم خرائط 1: 1 - دائمًا ، لا خيار.

ولكن بالطبع ، يمكن أن يكون لدى خدمة Windows NT أو تطبيق وحدة التحكم متعددة ServiceHost كائنات نشطة في نفس الوقت. يمكن أن يكون هذا مفيدًا إذا كان لديك مجموعة من الخدمات التي تنتمي منطقياً معًا ولا يمكن أن توجد حقًا بدون بعضها البعض - حيث ليس من المنطقي بدء أحدهم وآخر لم يبدأ.

ونعم ، يمكن لمضيف الخدمة استضافة خدمة تكشف عن نقاط نهاية متعددة ، ويمكن للعملاء العديد من العملاء الاتصال بنقاط النهاية المنفصلة في نفس الوقت ، لا مشكلة. سيقوم وقت تشغيل WCF بدور عدد من خيوط العمال للتعامل مع الطلبات الواردة (يمكنك قصر تلك التي تحتوي على سلوك ServiceThrottling) بشكل مستقل عن بعضها البعض.


لإعداد والتحكم ، كم عدد المكالمات والطلبات المتزامنة التي لديك ، ستحتاج إلى إلقاء نظرة على سلوك ServiceThrottling على جانب الخادم.

<behaviors>
    <serviceBehaviors>
        <behavior name="serviceThrottled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10"/>
        </behavior>
    </serviceBehaviors>
</behaviors>

وتحتاج إلى الرجوع إلى تكوين سلوك الخدمة في إعلان الخدمة الخاص بك ، بالطبع:

<service name="YourService" behaviorConfiguration="serviceThrottled">
  .....
</service>

هذه هي القيم الافتراضية. التفسيرات هي كما يلي (مأخوذة من منشور مدونة Dan Rigsby ، مختصرة):

  • MaxConcurrentCalls (الافتراضي = 16) [لكل ميساج] الحد الأقصى لعدد الرسائل التي يمكن معالجتها بنشاط.

  • MaxConcurrentInstances (افتراضي = 26) الحد الأقصى لعدد كائنات Instancecontext في خدمة يمكن تنفيذها في وقت واحد. بالنسبة لخدمة كل جلسة ، فإن هذا يساوي الحد الأقصى لعدد الجلسات ، وخدمة لكل نسبة ، وهو الحد الأقصى لعدد المكالمات المتزامنة ، وللسيدينغات ، إنه لا معنى له.

  • maxconcurrentsessions (افتراضي = 10) [لكل قناة] الحد الأقصى لعدد الجلسات التي يمكن أن تقبلها الخدمة في وقت واحد. يتم تشغيله فقط مع الروابط المستندة إلى الجلسة (WSHTTP أو NETTCP)

بالتأكيد تحقق أيضًا منشور مدونة دان ريجسبي الممتاز حول الموضوع.

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