2011-09-12 17 views
5

डब्ल्यूसीएफ और कॉन्फ़िगरेशन (प्रोग्राममैटिक और ऐप.कॉन्फिग के माध्यम से) पर कई संसाधन उपलब्ध हैं। हालांकि, मैंने विशेष रूप से उत्पादन वातावरण में इस विन्यास के व्यावहारिक प्रबंधन पर एक अच्छा संसाधन नहीं देखा है।आप उत्पादन में डब्ल्यूसीएफ क्लाइंट को कैसे कॉन्फ़िगर करते हैं?

डब्ल्यूसीएफ शक्तिशाली है कि फ्रेमवर्क app.config फ़ाइल के माध्यम से कॉन्फ़िगरेशन की अनुमति देता है ताकि आप कोड को पुन: संकलित किए बिना विभिन्न सेटिंग्स को ट्वीक कर सकें।

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

ऊपर सवाल, अधिक सामान्यीकृत है: मैं कुछ बुनियादी यूआई के माध्यम से ढांचे द्वारा प्रदान की गई चीज़ों को फिर से कार्यान्वित किए बिना डब्ल्यूसीएफ कॉन्फ़िगरेशन को सरल कैसे बना सकता हूं?

+1

यदि आपको वास्तव में कॉन्फ़िगरेशन फ़ाइलों को पसंद नहीं है तो आप इस ऐप.कॉन्फिग के शीर्ष पर कॉन्फ़िगर-एप लिख सकते हैं। सभी के बाद पार्स करना और लिखना मुश्किल नहीं है। – Carsten

+1

यदि आप एंटरप्राइज़ स्केल पर हैं - तो [SO-AWARE] देखें (http: //www.tellagostudios।कॉम/उत्पाद/इतने जागरूक% ई 2% 84% ए 2) –

+0

@ कार्स्टन मुझे लगता है कि एक कॉन्फ़िगर ऐप थोड़ा अधिक है। बफर आकार आदि जैसे निम्न स्तर की सेटिंग्स को ट्वीव करना उम्मीदों को हल करने के लिए दुर्लभ ट्यूनिंग चीजें हैं। सेवाओं को होस्ट करने वाले सर्वर नाम को बदलने के रूप में सरल कुछ, हालांकि, कहीं अधिक आम है। – Travis

उत्तर

3

यदि आप उपयोगकर्ता के अनुकूल स्थापना चाहते हैं तो आप कुछ इंस्टॉलर का उपयोग करेंगे जहां आप बस कुछ कॉन्फ़िगरेशन मान सेट करते हैं। दृश्य स्टूडियो या अधिक शक्तिशाली (और अधिक जटिल) WiX के हिस्से के रूप में प्रदान की गई इंस्टॉलर प्रोजेक्ट की जांच करें। यदि आपके पास इंस्टॉलर नहीं है तो आपने पहले ही चुना है कि उपयोगकर्ता मैन्युअल रूप से सब कुछ कॉन्फ़िगर करना चाहते हैं।

यदि आपकी एकमात्र समस्या सेवाओं का पता है और आप एकल LAN में सेवाओं और ग्राहकों को तैनात करने की योजना बना रहे हैं तो आप डब्ल्यूएस-डिस्कवरी (available in WCF 4) भी जोड़ सकते हैं जहां ग्राहक नेटवर्क पर सेवा पा सकते हैं।

+0

इंस्टॉल समय समझ में आता है, हालांकि app.config फ़ाइल में मैन्युअल रूप से तत्वों को प्रतिस्थापित करने के लिए कठिन और/या त्रुटि प्रवण (विशेष रूप से इंस्टॉलर में) लगता है। क्या आपके पास यह करने के लिए कोई सुझाव है, या (बेहतर) रनटाइम पर इसे कैसे करें? डिस्कवरी एक अच्छा मुद्दा है, हालांकि मेरे परिदृश्य (WAN से अधिक) में व्यवहार्य नहीं है। – Travis

+0

यदि आप इसे रनटाइम पर करना चाहते हैं तो आप अपना स्वयं का कॉन्फ़िगरेशन टूल लिखने जा रहे हैं - या तो आपके प्राथमिक एप्लिकेशन का हिस्सा या दूसरा एप्लिकेशन मुख्य रूप से भेजा गया है। मुझे नहीं लगता कि मानक डब्ल्यूसीएफ कॉन्फ़िगरेशन टूल आपके एप्लिकेशन के साथ भेज दिया जा सकता है। –

+0

मैं मानक डब्ल्यूसीएफ कॉन्फ़िगरेशन टूल को किसी भी तरह से नहीं भेजना चाहता हूं-एंड्रॉइड परिप्रेक्ष्य, जो कि एक दुःस्वप्न होगा। अनिवार्य रूप से मैं रनटाइम पर app.config फ़ाइल में क्लाइंट कॉन्फ़िगरेशन के लिए एंडपॉइंट होस्टनाम को प्रतिस्थापित करना चाहता हूं। इसकी आवाज़ से ऐसा करने का एक अंतर्निहित तरीका नहीं है। मैं चैनल बनाते समय EndpointAddress प्रॉपर्टी को ओवरराइड करना चाहता हूं - मुझे लगता है कि यह मेरी सबसे अच्छी शर्त है। – Travis

1

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

इसमें कुछ फायदे हैं, सभी डीबी बैकअप, रिमोट कनेक्शन और निरीक्षण के साथ समर्थित हैं, अपडेट पर फ़ाइलों को ओवरराइट करने का कोई जोखिम नहीं है।

यदि आपके सेटअप/एप्लिकेशन में कोई डेटाबेस नहीं है तो कॉन्फ़िगरेशन फ़ाइलें भी ठीक हैं और शायद एकमात्र तरीका है, मैं रजिस्ट्री में कुछ भी सहेज नहीं सकता।

+0

मेरा प्रश्न रनटाइम पर डब्ल्यूसीएफ द्वारा पढ़ी गई कॉन्फ़िगरेशन को संशोधित करने के तरीके के बारे में सेटिंग्स को कैसे/कैसे स्टोर करें और इसके बारे में अधिक जानकारी है (यानी, मैंने सेटिंग्स को संग्रहीत किया है, मैं डब्ल्यूसीएफ को कैसे जागरूक करता हूं)। – Travis

0

आप एंडपॉइंट पते को स्टोर करने के लिए settings framework का उपयोग कर सकते हैं। आप आसानी से सेटिंग्स को पढ़ और सहेज सकते हैं और उन्हें %APPDATA% स्थान पर संग्रहीत किया जाएगा ताकि आपको अनुमतियों के बारे में चिंता करने की आवश्यकता न हो। आपको केवल एक छोटा कॉन्फ़िगरेशन UI की आवश्यकता होगी जहां उपयोगकर्ता सर्वर का नाम दर्ज कर सकता है। अपने सर्वर पर एक साधारण हैलो सेवा जोड़कर उस कॉन्फ़िगरेशन को मान्य करें और उस यूआई में उस सेवा तक पहुंचने का प्रयास करें। इसलिए यदि सर्वर का पता सही है तो आप उपयोगकर्ता को तुरंत प्रतिक्रिया दे सकते हैं।

दूसरा विकल्प एक खोज प्रोटोकॉल को लागू करना है। एक संबंधित प्रश्न here है।

+0

मेरा प्रश्न रनटाइम पर डब्ल्यूसीएफ द्वारा पढ़ी गई कॉन्फ़िगरेशन को संशोधित करने के तरीके के बारे में सेटिंग्स को कैसे/कैसे स्टोर करें और इसके बारे में अधिक जानकारी है (यानी, मैंने सेटिंग्स को संग्रहीत किया है, मैं डब्ल्यूसीएफ को कैसे जागरूक करता हूं)। – Travis

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