में उत्पादन या विकास पर्यावरण में यह बताने का सबसे अच्छा तरीका है कि मैं उत्पादन पर अलग-अलग ईमेल भेजना चाहता हूं, फिर विकास पर्यावरण, जैसे परीक्षण के दौरान केवल मुझे ईमेल भेजना। मुझे पता है कि मैं webconfig फ़ाइल में एक एप्लिकेशन मान सेट कर सकता हूं या ईमेल भेजने से पहले यूआरएल देख सकता हूं। मैं जानना चाहता हूं कि ऐसा करने के लिए सबसे अच्छा अभ्यास क्या है या यदि कोई अन्य विकल्प है जो मुझे नहीं पता कि यह बेहतर हो सकता है? इस विषय पर किसी भी जानकारी की सराहना की जाएगी।.NET
.NET
उत्तर
मैं Preprocessor Directives (in C#) कहलाता हूं। वीबी में इसे केवल Directives कहा जाता है।
public static bool IsDebug()
{
#if DEBUG
return true;
#else
return false;
#endif
}
तब कोड में कहीं भी इस विधि कॉल और रनटाइम के दौरान कर सकते हैं और अगर कोड Debug
(विकास) में चलाया जा रहा है यह बता देंगे या यदि:
मैं इस तरह एक सहायक विधि है यह Release
संस्करण (उत्पादन) है।
यहाँ बराबर #If...Then...#Else Directives in (VB).
के बजाय अपने कोड को बदलने है, यही कारण है कि आप केवल मेल करने के लिए अपने विकास मेल सर्वर आप के लिए की परवाह किए बिना क्षेत्र को संबोधित करने के लिए सेट नहीं है?
ऐसा करने के लिए कोड लिखने से बेहतर लगता है।
ठीक है, केवल आप निर्धारित कर सकते उत्पादन क्या है और क्या विकास है, तो web.config में एक झंडा ठीक है, लेकिन एक और अधिक सुरुचिपूर्ण समाधान Spring.Net आला Dependency Injection (डीआई) की तरह एक पैटर्न, StructureMapCastle Windsor एक नाम के लिए शामिल है, और होगा कुछ।
डी के पीछे मुख्य अवधारणा गतिशील रूप से रनटाइम पर किस कक्षा को तत्काल करने के बारे में जानकारी प्रदान करके कार्यान्वयन में विविधता को अलग करना/अलग करना है। इस मामले में, उदाहरण के लिए, आपका सभी कोड 'मेल' इंटरफ़ेस से निपटने के लिए लिखा जाएगा (यह प्रजनन या देव पर्यावरण के लिए अनजान है) और आप अपने डी फ्रेमवर्क को या तो उत्पादन या विकास संस्करण को तत्काल करने के लिए कॉन्फ़िगर करेंगे मेल कार्यान्वयन वर्ग। यह थोड़ा क्लीनर है कि आप कॉन्फ़िगरेशन पैरामीटर मानों को उजागर और प्रसारित नहीं कर रहे हैं।
हालांकि निश्चित रूप से वहां एक सीखने की अवस्था है, इसलिए यह आपके प्रोजेक्ट के इस चरण में व्यवहार्य नहीं हो सकता है, लेकिन निश्चित रूप से कुछ ध्यान में रखना है।
आप आईआईएस के web config inheritance का उपयोग अपने ऐप को संबंधित पर्यावरण से वैश्विक संदर्भ सेटिंग्स को 'उत्तराधिकारी' करने की अनुमति देने के लिए कर सकते हैं जिसमें इसे तैनात किया गया है।
जहाँ आपके नेट एप्लिकेशन इंस्टॉल है की एक मूल निर्देशिका में (जैसे /inetpub/wwwroot.web.config
, या यहाँ तक जड़ web.config (\Windows\Microsoft.NET\Framework\ver\web.config
), विशिष्ट सेटिंग अपने वातावरण को जोड़ने, जैसे
उत्पादन में है
<appSettings>
<add key="sendMailTo" value="" />
<add key="environmentName" value="PROD" />
</appSettings>
देव में
<appSettings>
<add key="sendMailTo" value="[email protected]" />
<add key="environmentName" value="DEV" />
</appSettings>
ये पर्यावरण संदर्भ सेटिंग्स तैनात नहीं कर रहे हैं हर आप अपने अनुप्रयोग में अन्य सभी क्षुधा आप y को तैनात पुनर्वितरित। इसके अलावा, हमारे सर्वर भी इन सेटिंग्स का वारिस कर सकते हैं।
क्या साइट पर वेब कॉन्फ़िगरेशन मूल्यों की जांच करने के साथ कोई प्रदर्शन लागत है? – user1572948
@ user1572948 ऐपसेटिंग एक बार और कैश किए जाते हैं, हालांकि आगे के प्रदर्शन में वृद्धि संभवतः संभव है http://stackoverflow.com/questions/1304897/asp-net-web-config-appsettings-performance – StuartLC
जानकारी के लिए धन्यवाद, अगर वे एक बार पढ़ते हैं और कैश किया गया तो यह मेरे लिए एक मुद्दा नहीं होना चाहिए – user1572948
धन्यवाद, हाँ, मैं आईआईएस में एसएमटीपी स्थापित कर सकता हूं। मुझे लगता है कि मैं उन्हें भेजने के बजाय फ़ोल्डर में ईमेल स्टोर करने के लिए भी सेट कर सकता हूं। – user1572948