2009-12-17 12 views
8

मैंने वीएस 2008 (सी #) की "वेब संदर्भ जोड़ें" सुविधा के साथ एक वेब सेवा प्रॉक्सी बनाई है।क्या SoapHttpClientProtocol धागा सुरक्षित है?

उत्पन्न वर्ग SoapHttpClientProtocol

मैं एक सिंगलटन में मेरी प्रॉक्सी उसमें केवल एक ही स्टोर कर सकते हैं से निकला है? क्या यह धागा सुरक्षित है? क्या कॉल के बीच कोई राज्य है जो मुझे ऐसा करने से रोक देगा?

+0

एएसएमएक्स एक विरासत तकनीक है, और इसका उपयोग नये विकास के लिए नहीं किया जाना चाहिए। डब्ल्यूसीएफ या एएसपी.नेट वेब एपीआई का इस्तेमाल वेब सेवा क्लाइंट और सर्वर के सभी नए विकास के लिए किया जाना चाहिए। एक संकेत: माइक्रोसॉफ्ट ने एमएसडीएन पर [एएसएमएक्स फोरम] (http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads) सेवानिवृत्त किया है। –

उत्तर

2

नहीं, ये सुरक्षित थ्रेड नहीं है। कॉल सक्षम करने के लिए क्लाइंट ओपन स्टेट में होना चाहिए। एक साधारण परिदृश्य जहां एक धागा क्लाइंट करता है। बंद करें() जबकि किसी अन्य विधि को कॉल करने का प्रयास विफल हो जाएगा।

+1

इस कक्षा में एक बंद विधि नहीं है और कम से कम v3.0 के बाद से नहीं है। क्रिसडब्ल्यू का जवाब देखें। –

+0

@RiverSatya - उत्तर 8 साल पहले पोस्ट किया गया था –

+0

हां, और यह पुराना है। चूंकि यह स्वीकार्य उत्तर है, इसलिए मैंने एक अद्यतित एक पॉइंटर जोड़ा है। –

1

इस लिंक के अनुसार: http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soaphttpclientprotocol.aspx

'धागा सुरक्षा' के तहत निचले भाग में यह कहता है कि इस प्रकार के धागे सुरक्षित है। हालांकि मुझे नहीं पता कि सिंगलटन के रूप में इसका उपयोग थ्रेड सुरक्षित होगा।

1

MSDN makes no mention है कि यह धागा सुरक्षित है:

थ्रेड सुरक्षा

इस प्रकार का धागा सुरक्षित है।

कक्षा सुरक्षित है, वस्तु का कोई उल्लेख नहीं है।

लेकिन यह कहना सुरक्षित है कि यह थ्रेड सुरक्षित नहीं है - .NET लाइब्रेरी में कोई ऑब्जेक्ट थ्रेड सुरक्षित नहीं है।

(कम से कम मैं एक कभी नहीं देखा है)

+1

आम तौर पर गैर-थ्रेडसेफ प्रकारों के लिए शब्द "सभी वर्ग के सदस्यों को थ्रेड-सुरक्षित होने की गारंटी दी जाती है। सभी इंस्टेंस सदस्यों को थ्रेड-सुरक्षित होने की गारंटी नहीं है।" तो मुझे लगता है कि "यह प्रकार थ्रेड-सुरक्षित है" का अर्थ क्लास और इंस्टेंस दोनों सदस्यों का है। – Joey

+0

ठीक है मैं उलझन में हूं ... शायद एक बेहतर सवाल यह होगा: "क्या वेब कॉल को प्रत्येक कॉल के लिए वेब सेवा प्रॉक्सी का एक उदाहरण एक प्रदर्शन डाउनर है?" : पी –

+0

मुझे लगता है कि "टाइप" का अर्थ है कि वे केवल टाइप प्रकार (इसकी प्रकार की जानकारी) हैं, स्थिर वर्ग के सदस्यों या उदाहरण के सदस्यों के विपरीत, जो थ्रेड-सुरक्षित नहीं हैं। –

10

MSDN का कहना है कि SoapHttpClientProtocol धागा सुरक्षित है:

थ्रेड सुरक्षा

इस प्रकार का धागा सुरक्षित है।

System.Windows.Forms की तरह अन्य वर्ग जो थ्रेड-सुरक्षित नहीं है, MSDN कहते हैं के लिए,

थ्रेड सुरक्षा इस प्रकार के

किसी भी सार्वजनिक स्थैतिक (विजुअल बेसिक में साझा) के सदस्य हैं धागा सुरक्षित। किसी भी इंस्टेंस सदस्यों को सुरक्षित होने की गारंटी नहीं है।


Here is a Microsoft/MSDN employee कह (हालांकि गारंटी के बिना) है कि यह धागा सुरक्षित है:

हाय मैक्स,

वेब सेवा प्रॉक्सी के लिए, मुझे लगता है कि यह धागा सुरक्षित रूप से किया जाना चाहिए द।नेट उत्पन्न प्रॉक्सी वर्ग "SoapHttpClientProtocol" वर्ग जो दस्तावेज़ में के रूप में धागे की सुरक्षित चिह्नित है से ली गई है:

http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soaphttpclientprotocol(VS.71).aspx

इसलिए

SoapHttpClientProtocol क्लास, यह बहु में उपयोग करने के लिए सुरक्षित होना चाहिए के रूप में महत्वपूर्ण संदर्भ के रूप में आपने व्युत्पन्न प्रॉक्सी कक्षा में कोई संदर्भ-संवेदनशील सदस्य मैन्युअल रूप से नहीं जोड़ा है। क्या आप ऐसा सोचते हैं?

निष्ठा से,

स्टीवन चेंग

माइक्रोसॉफ्ट MSDN ऑनलाइन समर्थन लीड

यह पोस्टिंग "जैसा है" कोई वारंटी के साथ प्रदान की जाती है, और कोई अधिकार प्रदान करता है।

+0

-1: आप एक विरासत प्रौद्योगिकी पर चर्चा कर रहे हैं, और .NET 1.1 से किसी लेख से लिंक कर रहे हैं। –

+2

मैंने जो पहला लिंक दिया है वह कक्षा के लिए वर्तमान (.NET 4.5) दस्तावेज है: जो अभी भी कहता है कि यह थ्रेड-सुरक्षित है। मैंने जो आखिरी लिंक दिया है वह एक एमएसएफटी कर्मचारी द्वारा पुरानी फोरम पोस्ट से सीधा उद्धरण है (जिस तरीके से एमएसडीएन दस्तावेज को समझा जाना चाहिए)। – ChrisW

+0

इनमें से कोई भी बयान जो मैंने कहा है उसके विपरीत नहीं है। –