Global.asax में Application_Start बनाम Init का उपयोग कब करें?


79

मैं नीचे सोच रहा हूँ किन परिस्थितियों मैं में आवेदन initialisation कोड डाल दिया जाना चाहिए Application_Start()बनाम Init()मेरी में Global.asaxफ़ाइल?

दोनों के बीच का अंतर मेरे लिए बहुत स्पष्ट नहीं है, अन्य Application_startको पहले कहा जाता है, फिर Init()

  • मैं क्यों एक दूसरे पर प्रयोग करेंगे?
  • क्या इससे वास्तव में फ़र्क पड़ता है?
  • दो घटनाओं के बीच एप्लिकेशन स्थिति में क्या परिवर्तन होता है?

अभी तक केवल वास्तविक पॉइंटर जो मैं पा सकता हूं, वह IHttpModuleकेवल एक Init()विधि है, इसलिए यदि मैं जो कुछ कर रहा हूं, उसे लागू करने के लिए बेहतर अनुकूल हो सकता है , तो IHttpModuleमुझे Init()विधि का उपयोग करना चाहिए Global.asax, अगर स्थिरता के लिए और कुछ नहीं।

जवाबों:


89

से MSDN डॉक्स :

Application_Start और Application_End विधियाँ विशेष विधियाँ हैं जो HttpApplication घटनाओं का प्रतिनिधित्व नहीं करती हैं। ASP.NET उन्हें अनुप्रयोग डोमेन के जीवनकाल के लिए एक बार कॉल करता है, प्रत्येक HttpApplication उदाहरण के लिए नहीं

में इस:

सभी मॉड्यूल बनने के बाद HttpApplication वर्ग के हर उदाहरण के लिए एक बार कॉल किया जाता है ।

अद्यतन: यदि आपको यह सुनिश्चित करने की आवश्यकता है कि एक निश्चित कोड केवल एक बार ऐप में कहा जाता है। जीवनचक्र, Application_Start एक बेहतर समाधान है। उदाहरण: log4net को कॉन्फ़िगर करना?


4
एक अनुवर्ती प्रश्न के बिट: HttpApplication का एक उदाहरण कब बनाया जाता है? मैं मान रहा हूं कि हर बार कार्यकर्ता-प्रक्रिया को फिर से शुरू किया जाता है और इसमें प्रत्येक कार्यकर्ता-सूत्र के लिए एक उदाहरण होगा?
रॉरीफ

2
@roryf - asp.net अनुप्रयोग इंस्टेंस का एक पूल बनाए रखता है जिसे पुन: उपयोग किया जा सकता है। कवर के तहत, अनुरोधों को सीएलआर थ्रेडपूल का उपयोग करके सेवित किया जाता है और आने वाले अनुरोधों को एक निश्चित सीमा से आगे कतारबद्ध किया जाएगा। मुझे संदेह है कि वे उस एप्लिकेशन सीमा पूल को उस सीमा स्तर पर आरंभ करते हैं क्योंकि अधिकांश साइटें उस तरह का ट्रैफ़िक नहीं देखती हैं। मुझे संदेह है कि वे कम संख्या में पूल बनाते हैं और फिर मांग के रैंप के रूप में पूल का आकार बढ़ाते हैं।
जोएल फिलमोर

12

हाँ

उनके बीच मतभेद हैं। Application_Start () ईवेंट को सिर्फ एक बार कहा जाता है जबकि Init () विधि को हर बार उस समय कॉल किया जाता है जब एप्लिकेशन का उदाहरण बनाया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.