2010-10-26 14 views
5

मेरी वर्तमान वेब प्रोजेक्ट में, हम एक दूरस्थ सेवा के लिए प्रत्येक विधि कॉल के लिए क्लाइंटफैक्टरी.क्रेट चैनल करते हैं।प्रत्येक विधि कॉल के लिए डब्ल्यूसीएफ CreateChannel

क्या यह वास्तव में आवश्यक है? सबसे अच्छा अभ्यास क्या है?

उत्तर

2

यह आपकी आवश्यकताओं के अनुसार कुछ हद तक निर्भर करता है। एक चैनल खोलना महंगा है, अपेक्षाकृत बोल रहा है। सर्वोत्तम अभ्यास यह है कि रिमोट कॉल करने वाले क्लास को IDISposable लागू करना है, इसे क्लाइंटफैक्टरी को कॉल करना चाहिए। एक बार क्रिएट चैनल को, सभी विधि कॉल में चैनल का उपयोग करें, और जब निपटान विधि कहलाती है तो चैनल बंद करें। उस ने कहा, यदि रिमोट सेवा पर कॉल करने वाले तरीकों से कॉल के बीच का समय लंबा है (तब चैनल पर डिफ़ॉल्ट निष्क्रिय टाइमआउट जो 10 मिनट है) तो क्लाइंटफैक्टरी कर रहा है। क्रेते चैनल विशेष रूप से हानिकारक नहीं है, लेकिन मैं कहूंगा आईडीआईस्पोजेबल मार्ग पर जाना और कक्षा का उपयोग 'उपयोग' कीवर्ड

+0

वास्तव में: चैनल बनाना बहुत हल्का वजन है - चैनलफैक्टरी बनाना प्रदर्शन पर काफी "भारी" है ... –

+0

@marc_s: मुझे लगता है कि यह निर्भर करता है, अगर उदाहरण के लिए चैनल पर सुरक्षा है, तो सुरक्षा जब भी सेवा में सॉकेट खोला जाता है तो वार्ता होती है, इससे आपके विधि कॉल में काफी समय लग सकता है, इमो। –

+0

@marc_s क्या उन्होंने चैनलफैक्टरी के निर्माण में सुधार नहीं किया? या कम से कम मुझे यकीन है कि मैंने पढ़ा है कि उन्होंने पहली बार सृजन में सुधार किया है। अद्यतन: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx – MattC

0

प्रत्येक विधि कॉल के लिए एक नया चैनल बनाने के साथ कक्षा के उपयोग को समाहित करना बेहतर होगा "आम तौर पर"।

द्वैध WCF सेवा

के लिए एक चैनल बनाने और इसे का उपयोग तक आप और अधिक/सर्वर के साथ संवाद करने के लिए कोई जरूरत नहीं है या उस चैनल को बंद कर दिया जाता है।

चैनल बनाने के बाद, सर्वर पर कोई कॉल करने से पहले, चैनल की स्थिति (त्रुटि, खोलने, बंद) की जांच करने की अनुशंसा की जाती है।

जब चैनल होता है तो चैनल बंद/त्रुटि घटनाओं को पंजीकृत करने की सिफारिश की जाती है जब यह होता है। इसलिए आप आवश्यक क्रियाएं ले सकते हैं या/और उसी ऑब्जेक्ट चैनल ऑब्जेक्ट संदर्भ के साथ चैनल को फिर से बना सकते हैं।

सामान्य WCF सेवा

के लिए प्रॉक्सी पैटर्न बनाने, चैनल/करने के लिए फिर से उपयोग/पुनः बनाने के लिए, त्रुटि हैंडलिंग और निपटान बनाने के लिए। डब्ल्यूसीएफ क्लाइंट की प्रॉक्सी एप्राइपिएट कॉन्फ़िगरेशन के साथ एप्राइपिएट निष्क्रियता टाइमआउट सेट करें जो आपके समाधान के साथ सबसे अच्छा है।

हमेशा लोड लोड करें !!!!

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