2012-06-24 14 views
107

सभी उदाहरणों में मैं HttpClient के उपयोगों का उपयोग कर सकता हूं, इसका उपयोग एक ऑफ कॉल के लिए किया जाता है। लेकिन क्या होगा यदि मेरे पास लगातार ग्राहक स्थिति है, जहां कई अनुरोध एक साथ किए जा सकते हैं? असल में, HttpClient के उसी उदाहरण के विरुद्ध एक बार में 2 थ्रेड पर client.PostAsync पर कॉल करना सुरक्षित है।क्या HttpClient एक साथ उपयोग करने के लिए सुरक्षित है?

मैं वास्तव में यहां प्रयोगात्मक परिणामों की तलाश नहीं कर रहा हूं। एक कामकाजी उदाहरण के रूप में बस एक झुकाव (और उस पर एक लगातार) हो सकता है, और एक असफल उदाहरण एक गलत कॉन्फ़िगरेशन मुद्दा हो सकता है। आदर्श रूप में मैं HttpClient में समवर्ती हैंडलिंग के प्रश्न के कुछ आधिकारिक उत्तर की तलाश में हूं।

+2

भी कैसे ठीक से उपयोग करने के बारे में अधिक जानकारी के लिए इस सवाल पढ़ा' HttpClient' और इसका निपटान करें: http://stackoverflow.com/que Stions/15705092/do-httpclient-and-httpclienthandler-to-be-disposed –

उत्तर

97

According to MSDN, .NET 4.5 के बाद से निम्नलिखित उदाहरण तरीकों धागा सुरक्षित (धन्यवाद @ischell) कर रहे हैं:

CancelPendingRequests 
DeleteAsync 
GetAsync 
GetByteArrayAsync 
GetStreamAsync 
GetStringAsync 
PostAsync 
PutAsync 
SendAsync 
+3

हाँ, मुझे उस बारे में निश्चित नहीं था, क्योंकि यह एमएसडीएन पर सब कुछ पर एक मानक चेतावनी प्रतीत होता है (और मुझे कुछ एमएसडीएन पढ़ना याद है ब्लॉग्स कितनी बार चेतावनी गलत है, क्योंकि यह सब कुछ के लिए अंधेरे से लागू होता है)। –

+1

@AlexK: ठीक है, मैं जो कुछ भी सुनता हूं उस पर विश्वास नहीं करता। इस पर एक नज़र डालें: http://msdn.microsoft.com/en-us/library/dd287191.aspx। इसलिए, मैं आम तौर पर एमएसडीएन पर भरोसा करता हूं। –

+0

ठीक है, ब्लॉग एमएसडीएन पर भी हैं, एक कन्डर्रम :) किसी भी दर पर, मुझे लगता है कि मैं सावधानी के पक्ष में गलती करूंगा, और क्लाइंट प्रति अनुरोध रणनीति करूँगा। –

13

हेनरिक एफ नीलसन द्वारा एक MSDN forum post (HttpClient के प्रमुख आर्किटेक्ट में से एक) मिले।

त्वरित सारांश:

  • आप अनुरोध करता है कि संबंधित हैं (या eachother पर कदम नहीं होगा) है तो एक ही HttpClient का उपयोग कर भावना का एक बहुत बनाता है।
  • जेनरल में मैं जितना संभव हो HttpClient उदाहरणों का पुन: उपयोग करने की अनुशंसा करता हूं।
81

यहाँ HttpClient के बारे में हेनरिक एफ नीलसन से एक और article जहां वे कहते हैं यह है:।

"डिफ़ॉल्ट HttpClient सबसे आसान तरीका है जिसमें आप अनुरोध भेजने शुरू कर सकते हैं है एक एकल HttpClient किया जा सकता है आप समवर्ती चाहते हैं इतने सारे परिदृश्यों में आप सिर्फ एक HttpClient बनाने और उसके बाद का उपयोग करें कि अपने सभी अनुरोधों के लिए कर सकते हैं के रूप में कई HTTP अनुरोध भेजें। "

+4

क्या थ्रेड के बीच उपयोगकर्ता नाम और पासवर्ड बदल सकता है? यही वह है जो मुझे –

+1

@ निकोलस डीपियाज़ा के बारे में बात करने वाला नहीं लगता है: यह कितनी बार बदलता है? यदि उपयोगकर्ता/पासवर्ड जोड़े का एक ज्ञात सेट है तो आप HttpClient उदाहरणों का एक पूल बना सकते हैं। –

+0

हाँ, मैं यही कर रहा हूं –

संबंधित मुद्दे