2009-08-11 14 views
15

मैं सिर्फ यह जानना चाहता हूं कि मैं वेब सेवाओं में स्थिर वेब विधियों क्यों नहीं कर सकता? यह क्यों प्रतिबंधित है?एएसएमएक्स वेब सेवाओं में वेब सेवा संचालन के रूप में स्थिर तरीके क्यों उपयोग योग्य नहीं हैं?

क्या कुछ शरीर मुझे इस बारे में संक्षिप्त स्पष्टीकरण दे सकता है।

+0

बीटीडब्ल्यू, क्या आप जानते हैं कि माइक्रोसॉफ्ट अब एएसएमएक्स वेब सेवाओं को "विरासत तकनीक" मानता है, और उन्होंने वहां बग फिक्सिंग बंद कर दी है? आपको डब्ल्यूसीएफ का उपयोग करना चाहिए। –

+0

मुझे इसके बारे में पता नहीं था :( – Tarik

+1

अटारीक, डब्ल्यूसीएफ इसके कार्यान्वयन में बुनियादी वेबसाइसेस का समर्थन करता है और साथ ही साथ बहुत कुछ (यह एक विशाल, पूर्ण ढांचा है)। यह बहुत चिकना है। मुझे यकीन नहीं है कि स्थिर तरीके मेरे सिर के शीर्ष पर एक डब्ल्यूसीएफ सेवा में अनुमति है। –

उत्तर

23

उत्तर है: क्योंकि आप नहीं कर सकते हैं।

यह इस तरह से डिज़ाइन नहीं किया गया है। डिजाइन यह है कि वेब सेवा वर्ग का एक उदाहरण बनाया जाएगा, और फिर एक आवृत्ति विधि कहा जाएगा।

मैं केवल अनुमान लगा सकता हूं कि माइक्रोसॉफ्ट ने इसे इस तरह क्यों डिजाइन किया। निश्चित रूप से जानने के लिए, आपको उनसे पूछना होगा। विचार करें:

  1. स्थैतिक तरीकों को अनुमति देने के लिए कोई विशेष लाभ नहीं है। आप एक स्थिर विधि के साथ कुछ भी कर सकते हैं, आप एक उदाहरण विधि के साथ भी कर सकते हैं।
  2. [WebService] कक्षा कुछ मनमानी वर्ग होने के लिए नहीं है जो वेब सेवा के रूप में उपयोग की जाती है। यह एक वर्ग बनना है जिसे आपने वेब सेवा संचालन को उजागर करने के उद्देश्य से बनाया है। ऐसे में, कक्षाओं का समर्थन करने की कोई आवश्यकता नहीं है जो पहले से मौजूद हैं और पहले से ही स्थिर तरीके हैं।
  3. एसओएपी हैडर कार्यान्वयन आपकी कक्षा को SoapHeader कक्षा से प्राप्त प्रकार के एक उदाहरण फ़ील्ड को अनुमति देता है। यह फ़ील्ड आने वाले SOAP शीर्षलेख से भरा होगा और/या वापस आने के लिए SOAP शीर्षलेख होगा। आप इसे एक स्थिर क्षेत्र के साथ नहीं कर सके, क्योंकि यह प्रत्येक अनुरोध के साथ ओवरराइट किया जाएगा।

जैसा कि मैंने कहा, ये सभी अनुमान हैं। प्रश्न का सही उत्तर यह है कि, "आप ऐसा इसलिए नहीं कर सकते क्योंकि माइक्रोसॉफ्ट ने इसे डिज़ाइन किया है। अगर आप जानना चाहते हैं कि उन्होंने इसे इस तरह क्यों डिजाइन किया है, तो आपको उनसे पूछना होगा"।


Fwiw, मैं बस की जाँच की है, और यह प्रकट नहीं होता है कि WCF संचालन या तो होना करने के लिए स्थिर तरीकों अनुमति देता है।

+0

+1 अच्छा जवाब! :-) –

+3

लेकिन मैं पूछ रहा हूं क्यों? वे बस इतना नहीं कहेंगे "अच्छे लोग हम इस तरह से इस तरह से डिजाइन नहीं करेंगे, इसके बजाय, इसे इस तरह से डिजाइन किया जाएगा। ब्ला ब्लाह"। मैं जो पूछ रहा हूं वह इसके पीछे कारण है। – Tarik

+0

स्वच्छ और विस्तृत उत्तर के लिए धन्यवाद। – Tarik

3

जब कोई ग्राहक आपकी वेब सेवा के लिए कोई ऑब्जेक्ट बनाता है, तो वे वास्तव में जो बना रहे हैं वह उस वेब सेवा के लिए प्रॉक्सी ऑब्जेक्ट है। यह प्रॉक्सी ऑब्जेक्ट आपके लिए अपने कनेक्शन खोलने और बंद करने जैसी चीजों को संभालने के साथ-साथ वास्तव में वेब सेवा के साथ काम करने के सभी ओवरहेड को भी संभालती है। एक स्थिर विधि कॉल का प्रबंधन करना मुश्किल होगा। एक बेहतर शब्द की कमी के लिए "स्थैतिक प्रॉक्सी" को सभी चीजों को करना होगा कि प्रॉक्सी ऑब्जेक्ट का उदाहरण हर बार एक क्लाइंट को स्थिर तरीकों से बुलाता है, इस प्रकार भारी ओवरहेड जोड़ता है।

+0

मुझे पूरा यकीन है कि वह सर्वर की ओर से बात कर रहा है, ग्राहक पक्ष नहीं। –

+1

मेरा उत्तर उनके प्रश्न का उत्तर देता है जिस तरह से मुझे लगता है कि सर्वर पक्ष पर स्थिर तरीकों का काम क्यों नहीं करेगा। बस यह कहकर कि वेब सेवाओं को डिज़ाइन किया गया है, इसलिए वे यह नहीं कह सकते कि उन्हें पहले स्थान पर क्यों डिजाइन किया गया था। –

+0

लेकिन इसका कारण नहीं है। क्लाइंट पर क्या होता है इसके साथ सर्वर पर क्या होता है। क्लाइंट-साइड प्रॉक्सी और सर्वर-साइड वेब सेवा उदाहरण के बीच कोई पत्राचार नहीं है। सर्वर की तरफ तत्काल नहीं है क्योंकि क्लाइंट प्रॉक्सी है। इस तर्क के आधार पर, मुझे डाउनवोट करना होगा। –

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