- ASP.NET Control and its types
- Event Handler
- State Management and ViewState
- Tracing
- CodeBehind File
- Dynamic compilation in ASP.NET
- Partial Class
- ASP.NET Page Life Cycle
- Events of Page class
ASP.NET फ्रेमवर्क के सबसे मुख्य केंद्र ASP.NET कंट्रोल्स है जो सर्वर पर रन किए जाते हैं और उसके पश्चात ब्राउज़र पर उनके कंटेंट रेंडर / प्रदर्शित होते हैं।
ASP.NET एप्लीकेशन को डेवेलप करने के लिए डेवलपर को ASP.NET कंट्रोल्स की अच्छी खासी नॉलेज होनी चाहिए। ASP.NET फ्रेमवर्क के अंतर्गत इस तरह के कई सारे ASP.NET कंट्रोल्स है और इन कंट्रोल्स को अलग-अलग ग्रुप में बांटा जा सकता है। ASP.NET कंट्रोल्स को आमतौर पर आठ अलग-अलग वर्गों में बांटा गया है जैसे स्टैंडर्ड कंट्रोल्स, वैलिडेशन कंट्रोल्स, रिच कंट्रोल्स, डाटा कंट्रोल्स, नेवीगेशन कंट्रोल्स, लॉगिन कंट्रोल्स, वेब पार्ट कंट्रोल्स और HTML कंट्रोल्स।
Standard Control
ASP.NET के स्टैंडर्ड कंट्रोल्स ऐसे कंट्रोल्स हैं जिनका उपयोग आमतौर पर किसी भी फॉर्म के भीतर किया जाता है जैसे बटन, इनपुट फील्ड से सम्बंधित कंट्रोल्स, लेवल इत्यादि
Validation Control
वैलिडेशन कंट्रोल ऐसा कंट्रोल है जिसका उपयोग डाटा को सर्वर पर भेजने से पहले डाटा की वैलिडेशन के लिए किया जाता है। वैलिडेशन कंट्रोल का उपयोग किसी फॉर्म में डाटा के होने की अनिवार्यता, फॉर्म के दो कंट्रोल्स के डाटा के बीच में तुलना करने, किसी कंट्रोल के डेटा के ऊपर रेगुलर एक्सप्रेशन की जांच करने जैसे कार्यों के लिए किया जाता है।
Rich Control
रिच कंट्रोल- कैलेंडर कंट्रोल और विज्ञापन को दर्शाने वाले एडरोटेटर जैसे कंट्रोल रिच कंट्रोल के अंतर्गत आते हैं।
Data Control
डाटा कंट्रोल ऐसा ASP.NET कंट्रोल है जिसका उपयोग किसी डाटा सोर्स जैसे डेटाबेस, XML फाइल, एक्सेल फाइल इत्यादि से डाटा को कंट्रोल पर भेज कर ब्राउज़र पर दर्शाने के लिए होता हैं अथवा ऐसे कंट्रोल की सहायता से ब्राउज़र से डाटा को डाटा सोर्स में स्टोर करते हैं।
Navigation Control
नेविगेशन पेट्रोल का उपयोग विभिन्न प्रकार के नेविगेशन के लिए होता है। उदाहरण के लिए, मेनू ट्रीव्यू , ब्रेडक्रंब इत्यादि।
Login Control
लॉगिन कंट्रोल ऐसा कंट्रोल है जिसका उपयोग यूजर के लॉगिन के लिए, उसके पासवर्ड को चेंज करने के लिए, रजिस्ट्रेशन वगैरह के उद्देश्य किया जाता है।
Web Parts Control
वेब पार्ट कंट्रोल ऐसा कंट्रोल है जो निजीकृत पोर्टल को बनाने में सहायक होता है।
HTML Control
HTML कंट्रोल ऐसा कंट्रोल है जिसका उपयोग किसी भी HTML टैग को सर्वर साइड कंट्रोल में रूपांतरित करने के लिए किया जाता है।
HTML कंट्रोल को छोड़कर बाकी जितने भी ASP.NET कंट्रोल की ऊपर चर्चा की गई है, उन सभी कंट्रोल्स को डिक्लियर करने के लिए <% asp: लिखकर डिक्लेअर किया जाता है। asp: उपसर्ग यह बताता है कि यह कंट्रोल System.Web.UI.WebControls नेमस्पेस से संबंधित हैं।
इन सभी वेब कंट्रोल की प्रोसेसिंग सर्वर पर होने के लिए Runat ="server" attribute का यूज किया जाता है। HTML कंट्रोल के साथ asp उपसर्ग का यूज नहीं किया जाता है। HTML कंट्रोल को सर्वर साइड कंट्रोल में रूपांतरित करने के लिए Runat ="server" का यूज किया जाता है।
HTML कंट्रोल को ASP.NET फ्रेमवर्क के संगत क्लास में रूपांतरित किया जा सकता है लेकिन आमतौर पर कोई भी डेवलपर HTML कंट्रोल को यूज नहीं करता है।
Event Handler
आमतौर पर जितने भी ASP.NET कंट्रोल हैं वे एक से अधिक इवेंट्स को सपोर्ट करते हैं, उन एट्रिब्यूट को लिखने के लिए On प्रीफिक्स यूज किया जाता है जैसे OnClick एट्रिब्यूट। इस एट्रीब्यूट को सर्वर के किसी सबरूटीन assign किया जाता है। जब भी किसी ASP.NET सर्वर कंट्रोल को क्लिक किया जाता है तो वह उस घटना के उपरांत, आमतौर पर नियत रूप से उस घटना से संबंधित इवेंट हैंडलर की प्रोसेसिंग सर्वर पर होती है। अगर आप चाहते हैं कि घटना की प्रोसेसिंग सर्वर पर न होकर क्लाइंट साइड हो तो उसके लिए OnClient उपसर्ग यूज़ करते हुए घटना को लिखना होता है जैसे कि OnClientClick
इवेंट हैंडलर प्रोसीजर की एक खूबी यह है कि इस प्रोसीजर के अंतर्गत दो पैरामीटर होते हैं Sender As Object और e As EventArgs
Sender का अभिप्राय उस ऑब्जेक्ट से है जिस ऑब्जेक्ट पर घटना घटित हुई है और EventArgs का अभिप्राय उस घटना के घटित होने से संबंधित है जो डाटा सरवर पर भेजा जा रहा है। उदाहरण के लिए, अगर किसी बटन को क्लिक करते हैं तो ऑनक्लिक इवेंट हैंडलर के भीतर Sender के रूप में बटन होगा और उसका EventArgs जो होगा वह उस बटन के क्लिक करने पर इवेंट से सम्बंधित जो डाटा है, सर्वर पर भेजी जाएगी।
कोई जरूरी नहीं है कि जब किसी बटन को क्लिक किया जाए तो इवेंट से संबंधित कोई डाटा सरवर पर भेजी जाए अतः EventArgs का हमेशा महत्व नहीं है।
आप कल्पना कीजिए कि किसी इमेज बटन को क्लिक करके यूजर किसी घटना को अंजाम देता है ऐसी स्थिति में EventArgs का महत्व है जैसे कि उस इमेज बटन के किस कोऑर्डिनेट के भीतर बटन को क्लिक किया गया है, इसके लिए X और Y का उपयोग कॉर्डिनेट के रूप में होगा और इस डाटा को सर्वर को भेज दिया जाएगा। ऐसी स्थिति में, ही मेंटल केस की जगह संबंधित डाटा टाइप जैसे इमेज क्लिक इवेंट गर्ल्स होता है जबकि डिफॉल्ट रूप में इवेंट हर गति डाटा टाइप होता है।
जैसा कि हम जानते हैं कि HTML प्रोटोकोल एक स्टेटलेस प्रोटोकॉल है और जब भी किसी रिक्वेस्ट को वेबसाइट पर भेजा जाता है तो उस रिक्वेस्ट की प्रोसेसिंग होने के बाद सर्वर रिस्पांस भेज देता है लेकिन सर्वर स्टेट को स्टोर करके नहीं रखता है। व्यू स्टेट ViewState का उपयोग ASP.NET के अंतर्गत स्टेट मैनेजमेंट के लिए किया जाता है।
स्टेट मैनेजमेंट ASP.NET फ्रेमवर्क के अंतर्गत एक उपाय है जिसके द्वारा किसी भी डाटा को स्टोर करके रखा जा सकता है। आमतौर पर किसी Hidden इनपुट टाइप डाटा के रूप में स्टेट को रखा जाता है। जब भी आप किसी फॉर्म के भीतर हिडेन इनपुट टाइप देखेंगे तो ASP.NET वेब पेज के अंतर्गत सोर्स कोड में आपको भी स्टेट मिल जाएगा आमतौर पर भी ViewState सभी कंट्रोल्स के लिए उपयोग किया जाता है जब तक कि उसे किसी कंट्रोल के लिए डिसएबल ना किया गया हो
किसी वेबपेज के भीतर कितनी डाटा कंज्यूम हो रही है इसका ट्रेसिंग करने के लिए हम पेज डायरेक्टिव के भीतर ट्रेस Trace अटरीब्यूट का उपयोग करते हैं। अगर आप चाहते हैं कि ASP.NET के किसी कंट्रोल के भीतर स्टेट का उपयोग किया जाए तो उसके लिए आपको इनेबलडव्यूस्टेट की प्रॉपर्टी को यूज करना होगा। इनेबलडव्यूस्टेट की प्रॉपर्टी यदि ट्रू है तो वह कंट्रोल Viewstate को यूज करेगा अन्यथा उसका मान false होने पर ViewState डिसएबल होगा।
ASP.NET के अंतर्गत डायनामिक कंपाइलेशन होता है। जब पहली बार किसी ASP.NET वेबपेज को कंपाइल किया जाता है तो उसके बाद उस पेज में किसी भी प्रकार का परिवर्तन होने पर जितने हिस्से में परिवर्तन हुआ है, बस उसी का कंपाइलेशन किया जाता है। आप इसे ऐसे भी समझ सकते हैं कि जब किसी चीज के लिए रिक्वेस्ट सर्वर पर भेजी जाती है तो उस पेज को सरवर एक बार कंपाइल कर देता है लेकिन जब दोबारा उसी पेज के लिए रिक्वेस्ट भेजी जाती है तो सरवर उसे दोबारा कंपाइल नहीं करता है जब तक कि उस पेज में किसी प्रकार का परिवर्तन ना हुआ हो। अगर उस पेज में किसी प्रकार का परिवर्तन होता है तो सरवर उसे रिकंपाइल करता है अन्यथा नहीं करता है। ASP.NET के अंतर्गत सरवर कंपाइल्ड पेज क्लास को एक टेंपरेरी फोल्डर के अंतर्गत रखता है जब तक कि उसके सोर्स कोड में किसी प्रकार का परिवर्तन ना हो। जब उस क्लास को टेंपरेरी फोल्डर में रख दिया जाता है तो उस क्लास और ओरिजिनल ASP.NET पेज के बीच में एक प्रकार की डिपेंडेंसी निर्भरता उत्पन्न हो जाती है। अब अगर ASP.NET पेज में किसी प्रकार का परिवर्तन किया जाता है तो उस से रिलेटेड क्लास फाइल डिलीट हो जाती है और दोबारा कंपाइल होकर व टेंपोररी फोल्डर में सेव हो जाती है इस पूरी प्रक्रिया को डायनामिक कंपाइलेशन कहते हैं। डायनामिक कंपाइलेशन की वजह से ASP.NET फास्ट काम करता है। सीधे-साधे शब्दों में यह हुआ कि जब ASP.NET एप्लीकेशन में मोडिफिकेशन होता है तभी पेज में दोबारा कंपाइलेशन होता है।
याद रखे कि ASP.NET का पेज कंपाइल होकर एक क्लास फाइल में कन्वर्ट हो जाता है। उस क्लास के कुछ प्रॉपर्टी ओर मेथड होते हैं जिनका उपयोग करके उस पेज पर उपलब्ध जितने भी कंट्रोल है उनको हम एक्सेस या मॉडिफाई कर सकते हैं।
क्लासिक ASP के अंतर्गत VBScript स्क्रिप्टिंग का यूज किया जाता था जबकि ASP.NET के अंतर्गत ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज ऐसे vb.net या C# का यूज किया जाता है।
CodeBehind File
जब माइक्रोसॉफ्ट ने क्लासिक ASP से ASP.NET की ओर स्थानांतरण किया तब उसने ASP के विपरीत ASP.NET में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का कंसेप्ट यूज़ किया, जहां एक ओर क्लासिक ASP में एक ही पेज में कोड और प्रेजेंटेशन लॉजिक दोनों होते थे तो दूसरी ओर ASP.NET के अंतर्गत बिजनेस लॉजिक और प्रेजेंटेशन लॉजिक दोनों को पृथक कर दिया गया जैसे कि प्रेजेंटेशन लॉजिक के लिए ASP.NET aspx पेज का यूज़ किया गया जबकि प्रेजेंटेशन लॉजिक से जुड़े हुए बिजनेस लॉजिक को ASP.NET aspx.cs फाइल में रखा गया और यह समझना जरूरी है कि जो कोडबिहाइंड फाइल विकसित किया गया उसमे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के इन्हेरिटेंस के कांसेप्ट को यूज किया गया। ASP.NET version1 तक जब कोडबिहाइंड फाइल को कंपाइल किया जाता था तो दो तरह के क्लासेज बनते थे एक क्लास प्रेजेंटेशन पेज को रीप्रजेंट करता था जबकि दूसरा क्लास बिजनेस लॉजिक को और यह दोनों क्लास एक दूसरे से क्लास इन्हेरिटेंस के द्वारा आपस में जुड़े होते थे। प्रेजेंटेशन पेज का क्लास CodeBehind फाइल के क्लास को इन्हेरीट करता था। इस प्रक्रिया में समस्या यह थी कि दोनों पेज के बीच में जो एसोसिएशन होता था वह क्षणभंगुर होता था। इसका कारण यह है की इन्हेरिटेंस एक दिशा में होने वाला संबंध है क्योंकि जो बात पैरेंट के लिए सच्चा है वही बात चाइल्ड के लिए भी सच है। इसके विपरीत हम यह नहीं कह सकते कि जो बात चाइल्ड के लिए सच्चा है वही बात पैरेंट के लिए भी सच हो।
Partial Class
इसके अलावा इन दोनों क्लासेज में कंट्रोल की कंट्रोल आईडी समान रखनी पड़ती थी अगर उसमें से किसी भी कंट्रोल की कंट्रोल आईडी में विसंगति उत्पन्न हो तो कोड ब्रेक कर जाता था। इस प्रकार की समस्याओं से निजात पाने के लिए माइक्रोसॉफ्ट में ASP.NET वर्जन 2.0 मे इन्हेरिटेंस के कंसेप्ट को हटाकर Partial क्लास के कांसेप्ट को लाया। Partial क्लास के कंसेप्ट के कारण आप एक दूसरे से संबंधित कई सारे Partial क्लासेज को अलग अलग फोल्डर या फिजिकल फाइल में लिख सकते हैं और उनका जब कंपाइलेशन होगा तो वे सारे क्लासेज मिलकर एक सिंगल क्लास फाइल बन जाते हैं।
Partial क्लास की सबसे बड़ी खूबी यह है कि डेवलपर को अपने कंट्रोल्स को सभी पेज में डिक्लियर करने की जरूरत नहीं है। कहने का अभिप्राय यह है कि प्रेजेंटेशन पेज और कोडबिहाइंड फाइल दोनों जगह किसी कंट्रोल को डिक्लेअर करना जरूरी नहीं है। अगर आप प्रेजेंटेशन पेज में किसी कंट्रोल को डिक्लेअर करते हैं तो वह कंट्रोल ऑटोमेटिकली कोडबिहाइंड फाइल में उपलब्ध होगा और ठीक इसी तरह अगर किसी कंट्रोल को आप कोडबिहाइंड फाइल में डिक्लेअर करते हैं तो वह कंट्रोल प्रेजेंटेशन पेज के क्लास में भी उपलब्ध होगा।
ASP.NET Page Life Cycle
ASP.NET के अंतर्गत जैसा कि हमने जाना कि Page एक क्लास है तो ASP.NET पेज से संबंधित कई प्रकार के इवेंट्स है जो पेज के लाइफ साइकिल के अंतर्गत उत्पन्न होते हैं। आमतौर पर पेज से जुड़े हुए 10 इवेंट्स माने गए हैं।
जब भी हम किसी वेब पेज की रिक्वेस्ट करते हैं तो ये पेज से सम्बंधित इवेंट एक सिक्वेंस/क्रम में एक-एक करके घटित होते हैं।
पेज के इनीशिएलाइजेशन से सम्बंधित तीन घटनाएँ हैं। सबसे पहला इवेंट PreInit है। पेज की इनीशिएलाइजेशन से पहले यह घटना घटित होती है। पेज इनीशिएलाइजेशन पर Init घटना घटित होती है और पेज के इनीशिएलाइजेशन के कंप्लीट होने के पश्चात InitComplete घटना घटती है। इस प्रकार पेज के इनीशिएलाइजेशन से संबंधित तीन घटनाएं पेज पर घटित होती है और यह एक क्रम में घटित होते हैं।
इसके बाद पेज की लोडिंग की प्रक्रिया शुरू होती है और इससे भी संबंधित ३ घटनाएं है
- PreLoad
- Load
- LoadComplete
Page के लोड होने से पहले PreLoad इवेंट घटित होता है और पेज लोड होने पर भी Load घटित होता है और जब पेज लोड कंप्लीट हो जाता है तब LoadComplete घटना घटित होता है। इस प्रकार Load से भी संबंधित पेज की तीन प्रकार की घटनाएं है।
अब इसके बाद पेज रेंडर की बारी आती है। पेज के रेंडरिंग होने से पहले PreRender इवेंट घटित होता है और जब रेंडरिंग कंप्लीट हो जाती है उसके ठीक पहले RenderComplete इवेंट घटित होता है और अंत में जब पेज की स्टेट को सेव किया जाता है तो SaveStateComplete घटना घटित होती है।
अंत में, जब पेज अनलोड किया जाता है तो UnLoad इवेंट का घटना घटित होता है। यह बात याद रखने वाली है कि पेज से संबंधित ये घटनाएं एक क्रम में घटित होती हैं। आमतौर पर किसी भी वेब डेवलपर को Load और PreRender इवेंट से संबंधित घटनाओं पर फोकस करना है। इन घटनाओं से संबंधित कोडिंग ज्यादा होती है।
© अजीत कुमार, सर्वाधिकार सुरक्षित।
इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।
No comments:
Post a Comment