View State in ASP.NET WebForms

View State in ASP.NET WebForms – View State Mechanism किसी भी ASP.NET Model का अन्तिम Part होता है। View State, HTTP के Stateless Nature के कारण Changes के Lost हो जाने की समस्या को  Solve करता है।

क्योंकि जब भी हमारा Page फिर से Web Server पर Post Back यानी Resend होता है, User ने Client Side Web Browser में दिखाई देने वाले अपने Web Form  <form>में जो भी Data विभिन्न<input> Elements में Insert किया होता है, वे सभी ASP.NET Server को  फिर से Receive होता है।

फिर ASP.NET Server उस Webpage को .aspx File के Layout व Defaults के आधार पर उसकी Original State में Load करता है और Page को  इस एक Receive होने वाले Data के अनुसार Setup कर देता है।

अब समस्या ये होती है कि एक Dynamic Web Form में हमारा Code कई बार Change हो सकता है। उदाहरण के लिए  हम हमारे Heading Content का Color Change कर सकते हैं, किसी Static Content को  Modify कर सकते हैं, Page के किसी हिस्से को  Situation के आधार पर Conditionally Show या Hide कर सकते हैं या फिर Data की पूरी सारणी को  Grid Control के साथ Bind कर सकते हैं।

ये सभी Actions किसी ASP.NET Page की Initial State को  पूरी तरह से Modify कर देते हैं, लेकिन इनमें से किसी भी Action से सम्बंधित Data हमारे Post Back होने वाले Form Data में Reflect नहीं होता। इसका मतलब ये है कि हर Postback में ये सारा Data पूरी तरह से Lost हो जाता है।

सामान्‍यत: HTTP की Stateless से सम्बंधित परेशानी को Cookies, Session Based Cookies व विभिन्न प्रकार के कई अन्‍य तरीकों के माध्‍यम से Resolve किया जाता है। लेकिन ये सभी तरीके काफी हद तक Developer को  अपने स्तर पर ही Maintain करने होते हैं, जिससे Web Application Development का काम एक एक Desktop Developer के लिए  काफी Tricky व Time Consuming हो जाता है, क्योंकि इस स्थिति में वह Web Applications Develop करने के लिए  Event Driven Model को  Perfect तरीके से Use नहीं कर सकता।

इसलिए Stateless HTTP की इस प्रकार की परेशानी से बचने के लिए  ASP.NET ने अपना स्वयं का एक State Serialization Mechanism Develop किया है। ताकि Client Browser से आने वाले Modified Form Data से Server Identified रहे।

इसे State Serialization Mechanism के अन्तर्गत जब एक बार हमारा Page Code पूरी तरह से Execute हो जाता है और Client को  Response के रूप में Send किए जाने के लिए  पूरी तरह से तैयार होता है, तब Client को  Response Send किए जाने से Just पहले ASP.NET उस Page के सभी Controls की सभी Propertiesको  Examine करता है और यदि किसी भी Control की किसी भी Property में उसकी Initial State की Value से अलग मान हो, तो ASP.NET उन सभी Changed Values से सम्बंधित Information का Name/Value Collection के रूप में एक Note बना लेता है और इस Collection के सभी Pairs को Base64 String के रूप में Serialize कर देता है।

Base64 String को  Use करने की वजह से ये बात Ensure हो जाती है कि String में कोई भी ऐसा Character नहीं होगा, जो कि Valid  HTML Character न हो औरअन्त में इस बनने वाली Serialized Base64 String को  Response Page के <form> Element में नए __VIEWSTATE नाम के Hidden Element की Value के रूप में Insert करके Response को  फिर से Client Web Browser को  Send कर दिया जाता है।

फलस्वरूप  जब अगली बार वही Page Postback होता है, तो ASP.NET Server निम्न Steps Follow करते हुए Stateless HTTP द्वारा भी Web Application केDynamic Webpage के विभिन्न Elements की State को  Maintain करने में सक्षम हो जाता है:

  • NET फिर से Page व उस पर स्थित सभी Web Controls को उनकी .aspx File में Defined Default Initial Values के आधार पर Re-Create करता है। परिणामस्वरूप Page के सभी Web Controls में Exactly वही मान होता है, जो तब होता है, जब उस Page को पहली बार Request किया गया था।
  • फिर NET, Webpage की View State Information को Deserialize करता है जो कि पिछले Web Request के Response में Client Web Browser को  __VIEWSTATE नाम के Hidden Element केvalue Attribute के रूप में Send किया गया था और इस Deserialized __VIEWSTATE Data से प्राप्त होने वाले सभी मानों से Webpage के सभी Web Controls की Values को  Update कर दिया जाता है, जो कि वे ही मान होते हैं, जिन्हें पिछले Response के साथ Client Web Browser को  Send किया गया था।
  • अन्त में NET Server Page को Posted Back Form Data के According Adjust करता है। उदाहरण के लिए  यदि Client ने किसी Textbox में नया Text Insert कर दिया हो या किसी List Box में नया Option Select कर दिया हो, तो उस Change से सम्बंधित सारी Information, ASP.NET Server पर आने वाली Request के साथ Associated Request.Form Collection में Available रहता है और ASP.NET इसे Use करते हुए विभिन्न Controls की Values को  Update करता है।

इस Step के बाद ASP.NET Server पर भी Current Page Exactly वैसा ही Reflect होता है, जैसा Client Side Web Browser मेंवह Page User के सामने Display हो रहा होता है।

  • अब हमारा Server Side Event Handler Code अपना काम करता है जहां NET, Client Side से आने वाली Event Information के आधार पर Appropriate Events Trigger करता है और उस Event के Response में हमारे द्वारा Create किया गया Event Handler Code Execute होता है और विभिन्न प्रकार के Operations Perform होते हैं।

ASP.NET Web Forms आधारित Web Applications मेंView Stateको  Use करना Stateless HTTP को  Handle करने से सम्बंधित एक काफी बेहतर  Solution होता है, क्योंकि हर Request से सम्बंधित Response Send कर दिए जाने के बाद Server Resources को  Free किया जा सकता है। जिसकी वजह से हमारा ASP.NET Server हजारों Requests को  समानान्तर रूप से Handle करता रहता है। लेकिन Server पर अधिक Resource के लिए  Extra Load नहीं पडता, यानी Server Down नहीं होता।

हालांकि View State Data, Current Page में ही एक Hidden Element के रूप में Store रहता है, इसलिए  Page की Size जरूर बढ जाती है। साथ ही ये View State Data एक प्रकार से Extra Data की तरह Client व Server के बीच Travel करता रहता है, जिससे Bandwidth भी अधिक Use होता है।

ASP.NET, View State का प्रयोग केवल Page व उसके Controls की Properties के लिए ही करता है। जबकि Member Variable व अन्‍य Data के लिए ASP.NET अलग Approach Use करता है।

इस Section के पूरे Discussion को  एक चित्र के रूप में निम्नानुसार Represent किया जा सकता है जबकि एक Successful ASP.NET Programmer के रूप में आपको  हमेंशा इस बात को  ध्‍यान में रखना होता है कि Web Server पर हर Round-Trip में यानी हर Request/Response Cycle में Web Forms बार-बार फिर से Re-Create होते हैं।

यानी Web Forms कभी भी Persist नहीं रहते और पिछली Request/Response Cycle के लिए  Create होने वाले Web Forms को  अगले Request/Response Cycle के लिए  Create होने वाले Web Forms से कोई सम्बंध नहीं रहता। (View State in ASP.NET WebForms in Hindi)

View State in ASP.NET WebForms in Hindi

View State in ASP.NET WebForms in Hindi

Automatic Postback in ASP.NET WebForms
Client-Side Control IDs in ASP.NET WebForms

Core ASP.NET WebForms in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF

BUY NOW GET DEMO REVIEWS