Page Controller Pattern ही वह Web Application Development Pattern है, जिस पर पूरा ASP.NET WebForms Framework या Model आधारित है और इस Patterns काे ठीक से समझे बिना, ASP.NET WebForms Model को ठीक से समझना लगभग नामुमकिन है। इसलिए इस Article में हम ASP.NET WebForms के लिए Use किए जाने वाले Page Controller Patterns के बारे में ही विस्तार से जानेंगे।
ASP.NET WebForms Framework में जब भी कोई Incoming HTTP Request आता है, तो सबसे पहले उसे ASP.NET Platform द्वारा HTTP Handler Component पर Dispatch कर दिया जाता है। HTTP Handler Component एक Class होता है, जिसमें IHttpHandler Interface को Implement किया गया होता है। ASP.NET WebForms Model के अनुसार HTTP Handler की जरूरत HTML Markup को Web Browser में Return करने के लिए होती है। यानी Webpage के लिए Generate होने वाले HTML Markup को Web Browser में Return करने का काम HTTP Handler Class ही करता है।
वह तरीका जिसके माध्यम से HTML Markup को Web Browser पर Response के रूप में Send किए जाने के लिए Prepare किया जाता है, Webpage Create करने के लिए जिम्मेदार होता है और Webpage को Create करने के लिए Use किया जाने वाला Pattern, Page Controller Pattern पर आधारित होता है।
ये Pattern Web Browser से आने वाले HTTP Request की Processing को एक Task की तरह Treat करता है, जो कि कई Steps (Page के Instantiating, Initializing, विभिन्न Web Controls के States की Restoring, विभिन्न Web Controls की Updating, Rendering व Page के Unloading)के Through Follow होता है।
इस Pattern के Implementation में एक Base Page Class से शुरू किया जाता है और Request की Processing के लिए एक Strategy Define किया जाता है, जिसे Page Life Cycle के नाम से जाना जाता है।
Page Life Cycle के Implementation के रूप में कई Virtual Methods के Interfaces व Events को Implement किया जाता है, जिन्हें Derived Pages को Override व Handle करना जरूरी होता है।
इस Base Page Class की सभी Derived Classes को ASP.NET WebForms Model के अन्तर्गत Code-Behind Classes के नाम से जाना जाता है। एक ASP.NET Page Create करने का मतलब वास्तव में एक Code-Behind Class Create करना ही होता है, जिसमें हम हमारे Webpage पर दिखाई देने वाले User Interface Controls की Description को ही Add करते हैं। यानी प्रत्येक ASP.NET Webpage वास्तव में एक Class होता है।
ये Code-Behind Class एक प्रकार से हमारे Create होने वाले Webpage के उन Program Logic Codes का Repository होता है, जिन्हें हमें किसी ऐसे HTTP Request के Response में Serve करना होता है, जो कि हमारे Webpage के Input Element द्वारा Initiate या Create हो सकते हैं। सामान्यत: किसी Code-Behind Class को System.Web.UI.Page uke की System Class से Derive किया जाता है।
सरल शब्दों में कहें तो Code-Behind Class नया “Controller” Object होता है, जो कि किसी Specific HTTP Request को Process करने हेतु जिम्मेदार होता है। जबकि किसी Web Application के Context में ये निम्न चित्रानुसार एक Class Hierarchy को Represent करता है:
हमारा Code-Behind Class किसी System Base Class या किसी अधिक Functionality वाले Intermediate Class से Derive हो सकता है और एक Developer के रूप में हम उपरोक्तानुसार Specified Hierarchy की किसी भी Class को जरूरत के अनुसार Extend कर सकते हैं। विशेष रूप से किसी बडे Application में Complex Views को Model करने व Sophisticated Navigation Rules को Fulfill करने के लिए Intermediate Page Classes को Create करना काफी उपयोगी साबित होता है।
Page Classes की Custom Hierarchy Create करने का मतलब Custom Classes को Page Controller व Actual Code-Behind Classes के बीच Place करना मात्र ही होता है और Custom Classes की Hierarchy को Create करने का Ultimate कारण Page Controller को Customize करना ही होता है, जो कि वास्तव में Page की Life Cycle को Alter या Modify करता है।
वास्तव में एक Intermediate Class हमारे Web Application के Common Behavior को ही Represent करते हुए एक प्रकार के Events व Overrideable Methods को ही Developer के उपयोग के लिए उपलब्ध करवाता है।
वर्तमान समय में Web Architecture का मुख्य Focus Apply किए जाने वाले Action पर होता है न कि Finally Return होने वाले Result पर और ऐसा इसलिए है क्योंकि जरूरतें बदलने के कारण पहले व अब के Web Development में काफी परिवर्तन आ गया है।
Modern Web Applications मात्र HTML Pages का समूह नहीं होते, बल्कि जरूरत के अनुसार Underlying Database/File Stream से Data को Retrieve करते हैं और जरूरत के अनुसार उन्हें Output में विभिन्न तरीकों से Render भी करते हैं।
Current Market की नई तरह की जरूरतों को पूरा करने हेतु Appropriate HTML Markup Generate करने के लिए पिछले कुछ सालों में ASP.NET WebForms Framework के Top पर जिन Extra Abstraction Layers को Add किया गया है, हमें अपने Web Application में उन सभी को उपयोग में लेना जरूरी नहीं होता।
इसीलिए Microsoft द्वारा ASP.NET MVC जैसा नया Web Development Framework Develop किया जा सका, जो कि पूरी तरह से ASP.NET WebForms Framework के Runtime Environment पर ही आधारित है और ASP.NET WebForms के Features व Internal Functionalities को Use करते हुए ही MVC को Implement करने में सक्षम है।
यानी यदि ASP.NET MVC Model से WebForms Model के Internal Features को हटा दिया जाए, तो MVC Model सम्भव ही नहीं हो पाएगा। इसलिए ASP.NET WebForms Model को ठीक से समझे बिना ASP.NET MVC Model की Internal Working को ठीक से समझना व उपयोग में लेना नामुमकिन है।
WebForms व MVC के बीच मुख्य अन्तर Structure, Skeleton व Posture का है, Gesture या Behavior का नहीं। इसलिए हम WebForms Model को भी MVC की तरह Modify करते हुए Use कर सकते हैं।
वास्तव में WebForms, Page Controller Pattern पर आधारित था, जो कि Separation of Concerns को सम्भव नहीं बनने देता। इसका मतलब ये नहीं है कि अपने Web Application को MVC Pattern के आधार पर Develop करने के लिए हमें WebForms के लिए Develop किए गए Page Life Cycle को Modify करना होगा। बल्कि वास्तव में MVC Pattern में भी Webpage का Life Cycle Exactly WebForms के समान ही है, या ;wa कहें कि WebForms का ही है, तो ज्यादा बेहतर होगा।
ASP.NET WebForms अपने दूसरे दशक में है और Web की जरूरतें बदलने के कारण अब लगभग ये अपने Architectural Death की ओर अग्रसर है। लेकिन इसका मतलब ये नहीं है कि ASP.NET MVC के कारण WebForms को पूरी तरह से Ignore कर दिया जाना चाहिए।
बल्कि वर्तमान समय में भी ASP.NET WebForms पर Run होने वाले Web Applications सबसे ज्यादा हैं, क्योंकि लगभग पिछले 15 सालों में WebForm आधारित जिन Web Applications को Develop किया गया है, उन सभी को अगले कुछ सालों में पूरी तरह से MVC Pattern पर Upgrade कर दिया जाएगा, ऐसा जरूरी नहीं है। इसलिए आने वाले कई सालों तक अभी भी WebForms आधारित Development होते रहेंगे।
इसका मतलब ये भी नहीं है कि ASP.NET MVC को WebForms के लिए Ignore कर दिया जाए, क्योंकि आखिर MVC वर्तमान समय की मांग है और इसे Ignore नहीं किया जा सकता। इसलिए मूल रूप से जब हम कोई Web Application Develop करने के बारे में सोंचते हैं, तो हमें इस बात का निर्णय लेना जरूरी होता है कि हमारे Web Application की Requirements को ज्यादा बेहतर तरीके से WebForms व MVC में से कौन पूरा कर सकता है, और Project की Requirement के आधार पर ही इन दोनों में से उपयुक्त Model का चुनाव करते हुए Development करना चाहिए।
बल्कि इन दोनों तकनीकों को आपस में Mixture करते हुए काफी तेजी से Modern Web Applications Develop किए जा सकते हैं, जहां WebForms के Statefulness Feature को AJAX तकनीक द्वारा प्राप्त करते हुए Server Controls को MVC के View में Use करके काफी तेज गति से Develop किया जा सकता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF