Application Domains Create करने के लिए ASP.NET एक Lazy Initialization तकनीक Use करता है। जिसकी वजह से किसी Web Application का Application Domain तब Create होता है, जब उस Application के किसी Webpage के लिए पहली बार Request Perform किया जाता है।
कोई Application Domain स्वयं Web Server के Shut Down होने के साथ ही कई और कारणों से भी Shut Down हो सकता है। लेकिन सामान्यत: Applications किसी एक Application Domain में Error Conditions या Configuration Changes होने के Response में स्वयं को Restart करते हैं।
ASP.NET उस समय Application Domains को Automatically Recycle कर लेता है जब हम Application में कोई Change करते हैं। उदाहरण के लिए यदि हम Web.config File में कोई Modification करते हैं, या फिर यदि हम हमारे Application के किसी Webpage File या DLL Assembly File को Replace करते हैं, तब इन दोनों ही प्रकार की परिस्थितियों में ASP.NET हमारे Web Application के लिए नया Application Domain Start करता है, जो कि सभी Future Request को Handle करता है और Existing Application Domain को तब तक Alive रखता है, जब तक कि सभी Outstanding Request यानी वे Requests जो कि Queue में Queued हों, को Finish नहीं कर लेता है।
Application Domains V/s Application Pools
IIS Web Server में हम इस बात को निश्चित करते हैं कि कोई Web Application, Application Pool के माध्यम से कैसे Behave करेगा। हमारी Application Pool की Settings इस बात को निश्चित करती हैं कि हमारे .NET Application का कौनसा Version Run होगा, वह Shut Down होने से पहले अधिकतम कितनी देर तक Idle रहेगा, क्या वह स्वयं को किसी Specific प्रकार की Errors के Response में Automatically Restart कर सकेगा या नहीं आदि।
Application Pool का Concept Application Domains के Concepts के लगभग समान लेकिन थोडा Broader होता है। प्रत्येक IIS Application Pool एक या अधिक Web Applications को Configure कर सकता है। जबकि Run होते समय प्रत्येक Web Applications किसी एक Single Application Domain में Exist होता है।
तकनीकी रूप से देखें तो प्रत्येक Application Pool एक IIS Configuration Feature होता है, जबकि Application Domains हमारे .NET Infrastructure का एक Part होते हैं।
Application Updates
ASP.NET Execution Model की एक सबसे महत्वपूर्ण बात ये है कि हम हमारे Web Application को बिना Web Server को Restart किए हुए और बिना Application के अन्य Parts के Disturb हो जाने की चिन्ता किए हुए, Update कर सकते हैं।
यानी हम हमारे Web Application की Virtual Directory की किसी भी File को किसी भी समय Add, Replace या Delete कर सकते हैं और जब हम ऐसा करते हैं, तो Application Domain Perform होने वाली अगली Request के आधार पर फिर से एक नया Application Domain Create करता है और उस एक Application Domain मेंAdded, Modified या Replaced Files के अनुसार Web Application को Run करने लगता है।
Existing Requests को Interrupt किए बिना अपने Web Application के किसी भी Part को किसी भी समय Update करने की क्षमता प्राप्त करना ASP.NET Application Model का एक बहुत ही महत्वपूर्ण Feature है। हालांकि इस Feature को प्राप्त करने के लिए उपयोग में लिए जाने वाले Architecture को समझना भी हमारे लिए एक ASP.NET Developer के रूप में काफी उपयोगी व जरूरी होता है।
कई ASP.NET Developer समझते हैं कि ASP.NET के Update होने की ये क्षमता CLR में Exist होती है, जो कि ASP.NET Application के किसी भी Part को Add, Edit या Delete करने के कारण अगली Request के लिए Web Application को एक एक Application Domain के माध्यम से पूरी करता है। जबकि वास्तव में CLR जब किसी Assembly File को Run करता है, तो सबसे पहले उसे Lock कर देता है और किसी Locked File को Edit, Replace या Delete नहीं किया जा सकता।
CLR की इस Limitation के कारण ही ASP.NET Frameworkवास्तव मेंActual ASP.NET Files को Virtual Directory में Use नहीं करता। बल्कि ये Shadow Copyनाम की एक अन्य तकनीक को Use करता है।
इस तकनीक के अन्तर्गत हमारे Web Application के Compilation Process के दौरान c:\Windows\Microsoft.NET\Framework\[Version]\Temporary ASP.NET Files Path पर हमारे Web Application की सभी Files की एक Copy Create हो जाती है और ASP.NET Worker Process जब हमारे Application की Assemblies को Load करता है, तो इसी Copy को Load करता है। परिणामस्वरूप ये Copy ही CLR द्वारा Lock होती है, हमारे Web Applications की Actual Files नहीं।
Application Updates के अन्तर्गत ASP.NET Application की दूसरी विशेषता ये होती है कि ये हमारी उन Original Files को Automatically Detect कर लेता है, जिन्हें हम हमारे Web Application की Files के रूप में अपनी Virtual Directory में Add, Replace या Delete करते हैं और इन Files को Detect करने के लिए ASP.NET पूरी तरह से Windows Operating System को उपयोग में लेता है।
ASP.NET किसी Particular Application Domain में Load होने वाली सभी Assemblies की एक Active List Maintain करता है और इसी List के आधार पर इसे पता चलता है कि Current Application की किस File को Add, Replace या Delete किया गया है।
ASP.NET उन Files को भी Use कर सकता है, जो कि Global Assembly Cache (GAC) में Stored होती है। ये Assemblies की एक Computer-Side Repository होता है जिसके अन्तर्गत Entire .NET Framework Class Library भी Exist रहती है। हम हमारी जरूरत के अनुसार अपनी स्वयं की Assemblies को भी GAC में Store कर सकते हैं, लेकिन Web Applications को सामान्यत: Manage व Deploy करना Desktop Applications की तुलना में ज्यादा आसान व Simple होते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF