प्रारंभ करने के लिए कैसे एक वेब सेवा शुरू करने की संभावना है।सी # वेब सेवा
मैं ऐसी विधि खोज रहा हूं जो केवल वेब सेवा के लिए पहली कॉल के दौरान चलता है। क्या इसमें कुछ ऐसा है। नेट?
प्रारंभ करने के लिए कैसे एक वेब सेवा शुरू करने की संभावना है।सी # वेब सेवा
मैं ऐसी विधि खोज रहा हूं जो केवल वेब सेवा के लिए पहली कॉल के दौरान चलता है। क्या इसमें कुछ ऐसा है। नेट?
आपके प्रश्न पर मेरी टिप्पणी से इसे जारी रखते हुए ....
आप "प्रारंभ" पहली बार किसी दिए गए ग्राहक वेब सेवा से कनेक्ट करता है की आवश्यकता होती है: एक "प्रारंभ" विधि है कि एक टोकन देता है, जैसे एए गइड, जिसे तब आपकी वेब सेवा के वास्तविक "काम करता है" विधि से किए गए प्रत्येक कॉल पर आवश्यक होता है। फिर आप यह सुनिश्चित कर सकते हैं कि उस ग्राहक के लिए सेवा हमेशा शुरू की जाती है।
अगर आप पहली बार वेब सेवा कभी कहा जाता है की आवश्यकता होती है: एक निजी पद्धति के रूप में, आपकी सेवा के लिए कुछ कोड जोड़ें, कि प्रत्येक सार्वजनिक विधि के शीर्ष पर कहा जाता है। इसके भीतर किसी चीज के अस्तित्व की जांच करें, जैसे रजिस्ट्री प्रविष्टि, फ़ाइल, डेटाबेस रिकॉर्ड या अन्य निरंतर मूल्य। यदि यह अस्तित्व में नहीं है, तो अपना प्रारंभिकरण करें और फिर "कुछ" बनाएं। वर्ग के लिए एक स्थिर निर्माता है ताकि जब वह पहली बार स्थिर निर्माता रन instantiated और अपने initialisation करता है:
आप आईआईएस के बाद से पहली कॉल पर की आवश्यकता होती है पिछले पुनर्नवीनीकरण/आवेदन पूल शुरू कर दिया।
ठीक है, जे 2 ईई प्रारंभिकता के बराबर नहीं है यदि आप इसके बाद क्या कर रहे हैं ... हालांकि प्रत्येक वेब ऐप को एप्लिकेशन डोमेन में होस्ट किया जाता है। प्रत्येक अब और फिर एक आवेदन पुनर्नवीनीकरण किया जा सकता है और एक नया आवेदन डोमेन बनाया जा सकता है ...
जब आप विजुअल स्टूडियो में एक वेब सेवा अनुप्रयोग बनाते हैं, तो डिफ़ॉल्ट रूप से "सेवा" नामक कक्षा को जोड़ा जाएगा। जब आप इस कक्षा (Service.cs) के लिए कोड देखते हैं, तो आपको दो टिप्पणी-आउट लाइनों के साथ एक कन्स्ट्रक्टर ("सार्वजनिक सेवा()") दिखाई देगा। आप या तो अपना प्रारंभिक कोड यहां डाल सकते हैं, या सेवा क्लास के अंदर परिभाषित एक निजी विधि को कॉल कर सकते हैं। इस कन्स्ट्रक्टर को तभी कॉल किया जाएगा जब आपका क्लाइंट सर्विस क्लास में किसी भी वेबमाइंड पर अपनी पहली कॉल करता है।
यदि आप वेब सेवा द्वारा उपयोग किए जाने वाले संसाधन को प्रारंभ करने का प्रयास कर रहे हैं और आप केवल प्रति एप्लिकेशन में इसे प्रारंभ करना चाहते हैं, तो आप Global.asax पर Application_Start ईवेंट का उपयोग कर सकते हैं। ध्यान रखें कि जब भी एप्लिकेशन पूल बहुत अधिक संसाधन खा रहा है तो आईआईएस एप्लिकेशन पूल रीसायकल करेगा।
यदि आपको कक्षा स्तर चर प्रारंभ करना है, तो आप इसे वेब सेवा के निर्माता में कर सकते हैं। मैं इसके खिलाफ अनुशंसा करता हूं, क्योंकि आपकी वेब सेवा स्टेटलेस होनी चाहिए। यदि आपको अपनी वेब सेवा में एक बार एक स्थिर संसाधन शुरू करने की आवश्यकता है, तो आप एक स्थिर निर्माता का उपयोग कर सकते हैं।
यदि आपको एक ही संसाधन की आवश्यकता है जो आपके पूरे एप्लिकेशन में एक बार उपलब्ध हो, तो मैं आपको सिंगलटन पैटर्न में देखने की सलाह दूंगा।
आप Global.asax में Application_Start उपयोग कर सकते हैं, यह एक बार अगर अपनी परियोजना के अंदर किसी भी वेब सेवा बुलाया
आप पहली बार है कि किसी दिए गए "ग्राहक" किसी सत्र के दौरान वेब सेवा कॉल मतलब है है, जिसमें पहला चलेंगे समय वेब सेवा को कभी भी बुलाया जाता है, या आईआईएस के आखिरी बार इसे रीसाइक्लिंग/एप्लिकेशन पूल शुरू करने के बाद पहली बार बुलाया जाता है? – Rob