क्या कचरा कलेक्टर वेब सेवा संदर्भों को साफ़ करता है या क्या मुझे कॉल करने के बाद सेवा संदर्भ पर निपटान करने की आवश्यकता है, जिसे मैं कॉल करता हूं?क्या मुझे ASP.NET में वेब सेवा संदर्भ का निपटान करने की आवश्यकता है?
उत्तर
अपने वेब सेवाओं के निपटान के बारे में चिंता करने के बजाय, आप केवल प्रत्येक वेब सेवा का एक उदाहरण रख सकता है, एक singleton pattern का उपयोग कर। वेब सेवाएं स्टेटलेस हैं, इसलिए वे वेब सर्वर पर कनेक्शन और थ्रेड के बीच सुरक्षित रूप से साझा की जा सकती हैं।
यहाँ एक वेब सेवा वर्ग आप अपने वेब सेवा उदाहरणों के लिए संदर्भ धारण करने के लिए उपयोग कर सकते हैं का एक उदाहरण है। यह सिंगलटन आलसी और थ्रेड-सुरक्षित है। यह सलाह दी जाती है कि यदि आप अपने सिंगलेट्स को आलसी बनाते हैं, तो उन्हें एक ही तर्क का पालन करके थ्रेड सुरक्षित रखा जाता है। इसे कैसे करें के बारे में अधिक जानने के लिए, Implementing Singletons पर सी # गहराई लेख पढ़ें।
भी ध्यान रखें कि आप WCF वेब सेवाओं में समस्याएं आती हैं सकती हैं। मैं अधिक जानकारी के लिए WCF's instance management techniques article, विशेष रूप से सिंगलटन अनुभाग पर पढ़ने की अनुशंसा करता हूं।
public static class WS
{
private static object sync = new object();
private static MyWebService _MyWebServiceInstance;
public static MyWebService MyWebServiceInstance
{
get
{
lock (sync)
{
if (_MyWebServiceInstance == null)
{
_MyWebServiceInstance= new MyWebService();
}
}
return _MyWebServiceInstance;
}
}
}
और फिर जब आप अपने वेब सेवा का उपयोग करने की जरूरत है, तो आप ऐसा कर सकते हैं:
WS.MyWebServiceInstance.MyMethod(...)
या
var ws = WS.MyWebServiceInstance;
ws.MyMethod(...)
मैं सफलतापूर्वक कई परियोजनाओं और उस पर इस पद्धति का उपयोग किया है अच्छी तरह से काम किया है, लेकिन जैसा कि tvanfosson नीचे दी गई टिप्पणियों में उल्लेख करता है, आपके वेब सेवा उदाहरणों को प्रबंधित करने के लिए एक डीआई फ्रेमवर्क का उपयोग करने के लिए एक बेहतर रणनीति होगी।
मुझे लगता है कि डेटा सेवा प्राप्तकर्ता घटक से निपटान करता है।
आप यहां क्या करने की कोशिश कर रहे हैं?
यदि आप प्रदर्शन के बारे में चिंतित हैं, तो मैं webservice और नेटवर्क की गति को होस्ट करने वाले सर्वर की प्रतिक्रिया के बारे में अधिक चिंता करता हूं, क्योंकि वे वेब सेवा कॉल को पूरा करने के लिए प्रतीक्षा करने के लिए समय की नाटकीय रूप से प्रभावित कर सकते हैं (जब तक इसके असीमित)।
एमएसडीएन पर उदाहरण 'निपटान' नहीं करते हैं और यह स्पष्ट है कि कचरा कलेक्टर अपना काम करेगा, इसलिए जब तक कि आप एक रीयलटाइम सिस्टम पर काम नहीं करते हैं, जिसे हर सेकेंड में 100,000 से अधिक रिकॉर्ड संसाधित करने की आवश्यकता होती है, तो हो सकता है कि आप न हों संसाधनों का निपटान करने या स्मृति का प्रबंधन करने के लिए एक तरीके से आने की जरूरत है।
मेरा प्रश्न एक * से * था * आप इसे स्टैंडपॉइंट कर सकते हैं जैसा कि आपको इसे करने के लिए किया गया है। मेरी मुख्य चिंता मेमोरी लीक है जो धीरे-धीरे समय के साथ प्रदर्शन को कम कर देगी। – BeaverProj
वस्तुओं कि IDispose लागू कचरा कलेक्टर की सहायता के लिए मैन्युअल रूप से निपटाया जाना चाहिए।
आप आपत्ति कम रहता उपयोग एक using
ब्लॉक है। उन वस्तुओं के लिए जिन्हें बनाए रखा जा सकता है, यह सुनिश्चित करता है कि वे ऑब्जेक्ट करते हैं जो उन्हें डिस्पोजेड करते समय उनका निपटान बनाए रखता है।
- 1. क्या मुझे कार्य का निपटान करने की आवश्यकता है?
- 2. क्या मुझे Component.getGraphics() से लौटा ग्राफिक संदर्भ का निपटान करने की आवश्यकता है?
- 3. एक वेब सेवा प्रॉक्सी कक्षा का निपटान?
- 4. वेब सेवा संदर्भ जोड़ने के बाद मुझे किन फ़ाइलों को चेक-इन करने की आवश्यकता है?
- 5. क्या मुझे FileSystemWatcher का संदर्भ रखने की आवश्यकता है?
- 6. मुझे एएसपी.NET नियंत्रणों पर निपटान क्यों करने की आवश्यकता होगी?
- 7. क्या मुझे स्पष्ट रूप से एसडब्ल्यूटी शैल का निपटान करने की आवश्यकता है?
- 8. क्या मुझे इसका उपयोग करते समय .NET सेवा संदर्भ क्लाइंट को बंद करने की आवश्यकता है
- 9. क्या एसकएलट्रांसेक्शन को निपटान करने की आवश्यकता है?
- 10. कोड निरीक्षण कहता है कि मुझे वस्तु का निपटान करने की आवश्यकता है। कौनसा?
- 11. क्या मुझे वास्तव में प्रत्येक प्रिंसिपल पर निपटान() को कॉल करने की आवश्यकता है?
- 12. अगर मुझे "लपेटा" स्ट्रीम को संरक्षित करने की आवश्यकता है तो क्या मुझे बाइनरी रीडर का निपटान करना चाहिए?
- 13. क्या मुझे AJAX के साथ ASP.NET में थ्रेड-सुरक्षा की परवाह करने की आवश्यकता है?
- 14. वेब संदर्भ बनाम सेवा संदर्भ
- 15. क्या मुझे asp.net में ईवेंट (मैन्युअल रूप से सदस्यता) से सदस्यता समाप्त करने की आवश्यकता है?
- 16. क्या मुझे प्रबंधित वस्तुओं पर निपटान() को कॉल करने की आवश्यकता है?
- 17. क्या मुझे घटनाओं को अपनाने के लिए निपटान करने की आवश्यकता है?
- 18. क्या मुझे .NET वेब सेवा
- 19. वेब सेवा समस्या Asp.Net
- 20. क्या मुझे वास्तव में एप्लिकेशन में गहन संदर्भ उदाहरणों को पारित करने की आवश्यकता है?
- 21. क्या मुझे जावा में इनपुटस्ट्रीम बंद करने की आवश्यकता है?
- 22. सिस्टम है। वेब। सिल्वरलाइट संदर्भ की आवश्यकता है?
- 23. क्या मुझे प्रक्रिया का निपटान करना है। स्टार्ट (यूआरएल)?
- 24. SOAP वेब सेवा/VS2010 सेवा संदर्भ जोड़ें
- 25. क्या मुझे म्यूटेक्स का निपटान करना चाहिए?
- 26. क्या मुझे -D_REENTRANT -pthreads की आवश्यकता है?
- 27. क्या मुझे संदेश बॉक्स कॉल करने की आवश्यकता है?
- 28. एएसपी.नेट वेब गार्डन - मुझे कितने श्रमिक प्रक्रियाओं की आवश्यकता है?
- 29. क्या मुझे अपने आईफोन ऐप में ईयूएलए की आवश्यकता है?
- 30. jQuery - क्या मुझे एक वैरिएबल एन्कोड करने की आवश्यकता है?
धन्यवाद! मैं निश्चित रूप से अब उपयोग कर लागू करूँगा। – BeaverProj
@ डैनहर्टबर्ट, हमारे पास आपके प्रश्न पर सार्वजनिक रूप से उपलब्ध संशोधन पर संशोधन है .. इसलिए आपको अपनी पोस्ट को क्रॉस आउट स्टोन के साथ अव्यवस्थित करने की आवश्यकता नहीं है। यह – mmcdole
विचलित कर रहा है क्या आप हमें इस पर एक संपूर्ण पुस्तक लिख सकते हैं? आपका लगभग ... – Jobo