2011-06-21 11 views
5

मैंने अभी देखा है कि मेरी एक्सेल सेवा बहुत तेजी से चल रही है। मुझे यकीन नहीं है कि एक पर्यावरण की स्थिति चल रही है या नहीं। मैंने विधि में बदलाव किया है। कहाँ से पहले यहसी # - क्या WebMethodAttribute प्रदर्शन पर प्रतिकूल प्रभाव डाल सकता है?

class WebServices{ 
[ WebMethod(/*...*/) ] 
public string Method(){} 
} 

अब इसके विशेषता निकाल दिया जाता है था और विधि अन्य वर्ग

class NotWebService { 
public string Method(){} 
} 

में चले गए लेकिन, मुझे ऐसा किया क्योंकि विधि नहीं कहा जाता है या एक सेवा के रूप में इस्तेमाल होता है। इसके बजाए इसे

WebServices service = new WebServices(); 
service.Method(); 

और उसी असेंबली के माध्यम से बुलाया गया था। अब जब मैं विधि

NotWebService notService = new NotWebService(); 
notService.Method(); 

प्रतिक्रिया समय बढ़ गई है प्रकट होता है कहते हैं। क्या WebMethodAttribute में स्थानीय कॉल धीमा करने की क्षमता है?

उत्तर

2

वास्तव में वेबएमडियस विशेषता एक XML वेब सेवा के माध्यम से विधि का पर्दाफाश करने के लिए बहुत सारी कार्यक्षमता जोड़ती है।

कार्यक्षमता भूमि के ऊपर का कारण बनता है की

भाग निम्नलिखित विशेषताएं एक वेब विधि के लिए विन्यास सामान के भाग के रूप में माना जाता हैं:

  • BufferResponse
  • CacheDuration
  • सत्र हैंडलिंग
  • लेनदेन हैंडलिंग

एफ या अधिक जानकारी के बस की जाँच WebMethod attribute documentation

सादर,

0

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन गलत सूचना मैं फिर भी इसका जवाब देने के लिए की जरूरत महसूस से बचने के लिए।

मैं wacdany के मूल्यांकन से असहमत हूं।

HTTP विधि के बजाय वेब विधि के रूप में चिह्नित एक विधि को अतिरिक्त विधि के रूप में नहीं कहा जाना चाहिए, HTTP के बजाय। आखिरकार, यह एक कस्टम विशेषता की उपस्थिति के अलावा, एक ही मध्यवर्ती भाषा के लिए संकलित करता है।

अब कस्टम विशेषता जोड़ना प्रदर्शन को प्रभावित कर सकता है अगर यह कंपाइलर या रनटाइम के लिए विशेष है। WebMethodAttibute न तो है।

मैं आगे विचार करता हूं कि webservice ऑब्जेक्ट बनाने के लिए कोई विशेष ओवरहेड है या नहीं। यदि आपने एक कन्स्ट्रक्टर जोड़ा है तो कुछ हो सकते हैं, लेकिन डिफ़ॉल्ट रूप से कोई वास्तविक ओवरहेड नहीं है, क्योंकि बेस क्लास के कॉन्स्टक्टर्स तुच्छ हैं।

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

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