आपके डिफ़ॉल्ट परिदृश्य में, डब्ल्यूसीएफ सेवा होस्ट (आपकी सेवा कक्षा की मेजबानी की बात) आपके अनुरोध वर्ग के प्रत्येक सेवा के लिए एक नया उदाहरण तैयार करेगी, और अनुरोध ("प्रति-कॉल" सक्रियण को संभालने देता है)।
आप अपने सर्वर पर serviceThrottling
व्यवहार का उपयोग कर उन समवर्ती सक्रिय सेवा वर्ग उदाहरणों की अधिकतम संख्या को ट्विक कर सकते हैं।
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ThrottledServiceBehavior">
<serviceThrottling
maxConcurrentCalls="25"
maxConcurrentSessions="25"
maxConcurrentInstances="25"/>
</behavior>
</serviceBehaviors>
</behaviors>
केनी वुल्फ के blog post here में सेवा थ्रॉटलिंग व्यवहार के विकल्पों और उसके मूलभूत मूल्यों की एक बहुत अच्छी व्याख्या नहीं है।
इसके अलावा, InstanceContextMode
और ConcurrencyMode
आपकी सेवा वर्ग पर (जो सेवा अनुबंध को लागू करता है) की स्थापना कैसे आपकी सेवा संगामिति और अधिक अनुरोध संभाल लेंगे पर एक मजबूत प्रभाव है।
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall,
ConcurrencyMode=ConcurrencyMode.Single)]
class YourServiceClass : IYourService
{
.....
}
InstanceContextMode
PerCall
(प्रत्येक बुला अनुरोध एक नया और अलग उदाहरण हो जाता है) और फिर ConcurrencyMode
Single
हो सकता है (जो सबसे आसान विकसित करना है) होना चाहिए।
InstanceContextMode
भी PerSession
हो सकता है अगर आप एक सत्र-आधारित दृष्टिकोण (बहुत आम नहीं), या जरूरत Single
(आपकी सेवा वर्ग एक सिंगलटन होगा - अत्यधिक हतोत्साहित यह उपयोग करने के लिए, जब तक आप पूरी तरह से, सकारात्मक करने के लिए है और सभी के बारे में पता इसके साथ quirks और समस्याएं!)।
ConcurrencyMode
भी Reentrant
या Multiple
(केवल द्वैध अनुबंध और बाइंडिंग के लिए प्रासंगिक) हो सकता है (बहु-क्रम सिंगलटन सेवा वर्ग - अत्यधिक जोखिम भरा और विकसित करने के लिए मुश्किल)।
मार्क
स्रोत
2009-10-09 10:44:54