HTTP Handlers in ASP NET – HTTP Handlers व Modules ही वास्तव में ASP.NET Platform के मुख्य Building Blocks हैं क्योंकि ASP.NET द्वारा Managed किसी भी Resource के लिए User द्वारा Perform की गई Request को हमेंशा HTTP Handler द्वारा Resolve करके HTTP Modules के Pipeline पर Pass कर दिया जाता है।
यानी जब एक बार HTTP Handler, Request को Process कर देता है, उसके बाद Request को HTTP Modules के Pipeline पर भेज दिया जाता है जहां Response के रूप में Finally Return होने वाले Markup को Transform करके Return कर दिया जाता है।
Page Class, जो कि सभी ASP.NET Runtime Pages का Base Class होता है, मूल रूप से एक HTTP Handler ही होता है जो Internally हमारे Page की उस Life Cycle को Implement करता है जो कि Postback सहित विभिन्न प्रकार के Page Events (Init, Load, PreRender, etc…) को Fire करते हैं।
HTTP Handler को एक या अधिक URL Extensions को Process करने के लिए Design किया गया होता है। HTTP Handlers को Application या Machine Scope के अन्तर्गत Set किया जा सकता है, जिसका मतलब ये है कि वे Current Application या Current Machine पर Installed सभी Applications के Context में Assign किए गए Extensions को Process कर सकते हैं और इस प्रक्रिया को Perform करने के लिए जो भी Changes करने होते हैं, उन्हें जरूरत व वांछित Scope पर निर्भर करते हुए Application के Web.config File में अथवा Local Web.config File में करते हैं।
HTTP Modules वे Classes होते हैं जो Runtime Events को Handle करते हैं। एक Module जिन Public Events के साथ Deal कर सकता है, वे मूलत: दो प्रकार के होते हैं। पहला वे, जो Asynchronous Events सहित HttpApplication द्वारा Trigger होते हैं तथा दूसरा वे, जो अन्य HTTP Modules द्वारा Trigger होते हैं।
उदाहरण के लिए SessionStateModule, ASP.NET द्वारा Provide किया गया एक Built-In Module है, जो हमारे Web Application को Session-State से सम्बंधित Services Provide करता है। ये End व Start Events Fire करता है, जिन्हें अन्य Modules Session_End व Session_Start Signature वाले Event Handler Methods के माध्यम से Handle कर सकते हैं।
IIS 7 Integrated Mode में Modules व Handlers को IIS Level पर Resolve किया जाता है जबकि Different Runtime Configuration जैसे कि IIS 7 Classic Mode या IIS 6 में ये ASP.NET Worker Process के अन्तर्गत ही Operate होते हैं।
HTTP Modules व Handlers मूलत: हमारे Web Application के लिए Use किए गए Theme के Request Routing से सम्बंधित होते हैं। जहां Request Routing यानी URL Routing Engine को मूल रूप से ASP.NET MVC के लिए Develop किया गया था, लेकिन ASP.NET 3.5 SP1 के साथ ही इसे ASP.NET के Core Platform के अन्तर्गत Include कर दिया गया है।
URL Routing Engine एक System-Provided HTTP Module है जो किसी भी Incoming Request के साथ Hook हो जाता है और Requested URL को किसी User-Defined Rewriting URL (Routes) से Match करने की कोशिश करता है।
परिणामस्वरूप यदि कोई Matching Rewrite URL प्राप्त हो जाता है, तो Module उस HTTP Handler को Locate करता है जो Route को Serve करने वाला है। जबकि यदि Matching Rewrite URL प्राप्त नहीं होता, तो उस स्थिति में Request उसी तरह से Process होता है, जिस प्रकार से WebForms के अन्तर्गत Process होता है, जहां बीच में कोई URL Routing Engine नहीं होता।
URL Routing Engine का सबसे बडा फा;दा ये है कि हम इसका प्रयोग करके बडी ही आसानी से SEO Friendly व Easy-to-Remember URLs Create कर सकते हैं, जिनका Web Server में किसी Physical File से Bound होना जरूरी नहीं होता।
ISAPI Extensibility Model
Web Server सामान्यत: अपनी Capabilities को Customize व Enhance करने के लिए एक API (Application Programming Interface) Provide करता है। यदि हम Historically देखें, तो CGI (Common Gateway Interface) सबसे पहला Extension API था। CGI Module एक नया Application था, जो Web Server को किसी Request को Serve करने के लिए Program करता था।
हालांकि वर्तमान समय में CGI Applications को Use करना लगभग पूरी तरह से बन्द किया जा चुका है क्योंकि CGI Applications में प्रत्येक Request को Fulfill करने के लिए एक नया Process Start करना पडता था, जिसकी वजह से Web Application को Extend करना काफी मुश्किल होता था, साथ ही Performance Issues भी काफी ज्यादा होते थे, क्योंकि प्रत्येक Request के लिए एक अलग Process Allocate करना जरूरी होता था और एक High-Traffic Web Application में प्रत्येक Request के लिए एक अलग Process को Create व Manage करना काफी Resource Intensive व Performance Decreasing काम होता था।
Web Servers के Recent Versions हमें ज्यादा बेहतर Alternative तरीका Provide करते है, जिनके माध्यम से हमारे Web Application की Server Capabilities को आसानी से Extend कर सकते हैं। IIS में हमें ये Alternative Model एक ISAPI Interface के रूप में प्राप्त होता है।
जब हम ISAPI Model को Use करते हैं, तब प्रत्येक Request को Fulfill करने हेतु नया Process Start करने के बजाय Web Server एक Made-to-Measure Component को Load करता है, जिसे Win32 Dynamic Link Library (DLL) File के नाम से जाना जाता है।
फिर अगले Step के रूप में ये उस Loaded DLL के एक Well-Known Entry Point को Call करता है, जिसके परिणामस्वरूप हमारा Request Serve हो जाता है। ISAPI Component, IIS में तब तक Loaded रहता है, जब तक कि IIS Server को Shutdown नहीं किया जाता।
इस Model की कमी ये है कि क्योंकि DLL Component, Web Server Process में Load होता है, इसलिए एक Single Faulty Component भी पूरे Web Server व उसके सभी Web Applications को Crash कर सकता है और इस समस्या के विस्तारण के लिए कई प्रकार के तरीकों को जरूरत के अनुसार Develop किया गया है।
जबकि वर्तमान समय में IIS Web Server में Installed Web Applications को Application Pools में Assign किया जाता है और प्रत्येक Application Pool को एक Distinct Worker Process Instance द्वारा Serve किया जाता है।
IIS 7 से पहले तक Requests को IIS Web Server द्वारा Process किया जाता था और फिर उसे ISAPI Unmanaged Component के साथ Map कर दिया जाता था। लेकिन IIS 7.x Integrated Mode में हम Managed Components (HTTP Handlers and HTTP Modules) को Directly IIS Level पर Add कर सकते हैं। जहां IIS 7.x Integrated Mode ASP.NET Internal Runtime Pipeline को IIS Pipeline के साथ Merge कर देता है तथा हमें Managed Codes का प्रयोग करते हुए Web Server Extensions Write करने की Capability Provide कर देता है।
वर्तमान समय में यदि हम HTTP Handlers व HTTP Modules को लिखना सीख लेते हैं, तो हम अपनी इस Skill को IIS पर आने वाली केवल उन Requests को ही नहीं, जो कि ASP.NET के साथ Mapped हो, बल्कि प्रत्येक Request को Customize करते हुए Serve करने के लिए Use कर सकते है।
Buy this eBook to read more about …
- Writing HTTP Handlers
- IHttpHandler Interface
- HTTP Handler Registering
- Writing HTTP Modules
- IHttpModule Interface
- Custom HTTP Module
- Wiring-Up Events
- Registering with Configuration File
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF