HTTP हैंडलर बनाम HTTP मॉड्यूल


144

क्या कोई 2 से कम वाक्यों में समझा सकता है दोनों के बीच का अंतर? हाँ, मुझे पता है कि Google सैकड़ों उत्तर दे सकता है लेकिन 2 स्पष्ट वाक्यों में से एक नहीं :)


हर अनुरोध से पहले कुछ कोड चलाने की तलाश के संदर्भ में।
फ्रेंच जू

23
+1 के लिए "हाँ मुझे पता है कि मैं इसे Google कर सकता हूँ"।
Csharp

7
"दो वाक्यों से कम।" जैसे, एक वाक्य?
एंड्रयू डिकेन

जवाबों:


316

HttpHandler वह जगह है जहां अनुरोध ट्रेन का नेतृत्व किया जाता है। HttpModule रास्ते में एक स्टेशन है।


अद्भुत व्याख्या! :)
SO उपयोगकर्ता

3
मैं मानता हूं कि यह एक अच्छा जवाब है लेकिन स्वीकार किए गए उत्तर के रूप में चिह्नित नहीं किया जा सकता है।
श्रीवल्लभ

बस शानदार !! :)
डी

4
तकनीकी रूप से, "दो वाक्यों से कम नहीं।" <
ट्रोलफेस

5
अच्छा लगा। मैं जोड़ना चाहूंगा कि HttpContext ट्रेन है। हर स्टेशन (मॉड्यूल) किसी न किसी तरह से HttpContext में योगदान देता है जैसे कि यह गुजरता है।
डुआने

203

दो वाक्य:

एक HttpModule आपके आवेदन के लिए हर अनुरोध के लिए निष्पादित करेगा, विस्तार की परवाह किए बिना, और आमतौर पर सुरक्षा, सांख्यिकी, लॉगिंग आदि जैसी चीजों के लिए उपयोग किया जाता है।

एक HttpHandler आम तौर पर एक विशिष्ट एक्सटेंशन के साथ जुड़ा हुआ है, और आरएसएस फ़ीड, गतिशील छवि पीढ़ी या संशोधन और जैसी चीजों के लिए उपयोग किया जाता है।

थोड़ा और स्पष्टीकरण अगर यह पूरी तरह से स्पष्ट नहीं है:

जिस तरह से मैं उनके बारे में सोचता हूं - मॉड्यूल अनुरोध पाइपलाइन में "प्लग इन" करते हैं, जबकि हैंडलर एक विशिष्ट फ़ाइल एक्सटेंशन को "हैंडल" करते हैं। इसलिए, यदि आपको एक लॉगिंगमॉडल और एक PdfHandler के साथ एक साइट मिली है, तो दोनों http://example.com/sample.pdf , और अकेले लॉगिंग मॉड्यूल http: // के अनुरोध के लिए निष्पादित करेंगे। example.com/page.aspx

MSDN पर अंतर पर एक बहुत स्पष्ट लेख है: HTTP हैंडलर्स और HTTP मॉड्यूल अवलोकन


1
ठीक है, इसलिए अगर मैं कुछ कोड चलाना चाहता हूं जो प्रत्येक .aspx फ़ाइल के लिए हर अनुरोध पर चलता है जिसे मैं एक हैंडलर लागू करता हूं और अगर मैं फ़ाइल के प्रकार की परवाह किए बिना अनुरोध पर हर कोड पर कुछ कोड चलाना चाहता हूं तो मैं एक मॉड्यूल लागू करता हूं। क्या यही है?
फ्रेंच जू

5
@frenchie - नहीं, Aspx पृष्ठ आपको पृष्ठ जीवन चक्र प्रदान करके HttpHandlers के शीर्ष पर बनाए गए हैं। इसे एक aspx पृष्ठ के रूप में सोचें, बहुत ही मूल घटना के लिए कट। ProcessRequest। दूसरी ओर मॉड्यूल, जीवन-चक्र के किसी भी बिंदु पर निष्पादित करेगा जिसे आप इसे तार करते हैं। Aspx पेज से पहले कुछ चलाने के लिए अपने परिदृश्य के लिए, आप एक मॉड्यूल चाहते हैं। हालाँकि, आपको उन पृष्ठों के अनुरोधों को मैन्युअल रूप से फ़िल्टर करने की आवश्यकता है जो .aspx नहीं हैं
Phill

6
क्या मैं यह कहकर सही हूं कि हर अनुरोध में सिर्फ 1 हैंडलर और कई मॉड्यूल हो सकते हैं?
Maarten Kieft

1
क्या हैंडलर = राज्य का सामान्य उत्तर है, और मॉड्यूल एक अलिखित मानक नहीं है या क्या दोनों से मौलिक रूप से कुछ अलग है, मेरा मतलब है, क्या कोई व्यक्ति मॉड्यूल को हैंडलर और इसके विपरीत होने के लिए कोड कर सकता है या इसकी सीमाएं हैं उन्हें जो इसे असंभव बनाते हैं?
रिच बियान्को

21

HttpHandler और HttpModule का मुख्य और सामान्य लक्ष्य ASP.NET अनुरोध IIS सर्वर तक पहुंचने से पहले प्री-प्रोसेसिंग लॉजिक इंजेक्ट करना है।

ASP.NET अनुरोध पाइपलाइन में तर्क को इंजेक्ट करने के दो तरीके प्रदान करता है;

  1. Http हैंडलर: Http हैंडलर हमें अनुरोध किए गए फ़ाइल नाम के विस्तार के आधार पर प्री-प्रोसेसिंग लॉजिक को इंजेक्ट करने में मदद करता है। ASP.NET HTTP हैंडलर का उपयोग करता है अपनी स्वयं की कार्यक्षमता को लागू करने के लिए। उदाहरण के लिए, ASP.NET प्रसंस्करण के लिए हैंडलर का उपयोग करता है। .aspx, .asmx और ट्रेस.एक्सडी फाइलें।

उदाहरण: RSS फ़ीड्स: किसी वेब साइट के लिए RSS फ़ीड बनाने के लिए, आप एक हैंडलर बना सकते हैं जो RSS-स्वरूपित XML का उत्सर्जन करता है। इसलिए जब उपयोगकर्ता आपकी साइट पर .rss में एक अनुरोध भेजते हैं, ASP.NET आपके हैंडलर को अनुरोध को संसाधित करने के लिए कहता है।

हैंडलर बनाने में तीन चरण शामिल हैं। IHttpHandler इंटरफ़ेस लागू करें। 2. web.config या machine.config फ़ाइल में हैंडलर रजिस्टर करें। 3. IIS में aspnet_isapi.dll फ़ाइल एक्सटेंशन (* .arshad) पर मैप करें।

IHttpHandler इंटरफ़ेस में प्रॉसेसरेस्ट विधि और IsReusable संपत्ति है जिसे लागू करने की आवश्यकता है। ProcessRequest: इस विधि में, आप उस कोड को लिखते हैं जो हैंडलर के लिए आउटपुट का उत्पादन करता है। IsResuable: यह गुण बताता है कि इस हैंडलर का पुन: उपयोग किया जा सकता है या नहीं।

आप हैंडलर को web.config फाइल में इस तरह रजिस्टर कर सकते हैं

<httpHandlers>
   <add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>

नोट: यहां हम एक्सटेंशन अरशद के साथ किसी भी फ़ाइल नाम को संभाल रहे हैं।

  1. Http मॉड्यूल: HttpModule IIS सर्वर तक अनुरोध पहुंचने से पहले प्री-प्रोसेसिंग लॉजिक को इंजेक्ट करने के लिए एक ईवेंट आधारित प्रोसेसर है। ASP.NET, HTTP मॉड्यूल का उपयोग अपनी बहुत सी कार्यक्षमता को लागू करने के लिए करता है जैसे प्रमाणीकरण और प्राधिकरण, सत्र प्रबंधन और आउटपुट कैशिंग आदि।

ASP.NET इंजन अनुरोध पाइपलाइन के माध्यम से अनुरोध पासनेस के रूप में बहुत सारी घटनाओं का उत्सर्जन करता है। उन घटनाओं में से कुछ हैं AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest। HttpModule का उपयोग करके आप इन घटनाओं में तर्क लिख सकते हैं। ये तर्क ईवेंट्स आग के रूप में निष्पादित होते हैं और अनुरोध तक पहुंचने से पहले आईआईएस में पहुंच जाते हैं।

मॉड्यूल बनाने में दो चरण शामिल हैं, 1. IHttpModule इंटरफ़ेस लागू करें। Web.config या machine.config फ़ाइल में रजिस्टर मॉड्यूल

उदाहरण: सुरक्षा: HTTP मॉड्यूल का उपयोग करके, आप IIS पहुंचने से पहले कस्टम प्रमाणीकरण या अन्य सुरक्षा जांच कर सकते हैं।


19

HTTP हैंडलर एक ऐसी प्रक्रिया है जो ASP.NET वेब एप्लिकेशन में किए गए अनुरोध के जवाब में चलती है। HTTP मॉड्यूल आपको आने वाले और बाहर जाने वाले अनुरोधों की जांच करने और अनुरोध के आधार पर कार्रवाई करने देता है।


1
उस अर्थ में, एक aspx को httphandler का एक प्रकार माना जा सकता है?
फ्रेंच जू

17
हां फ्रेंची..किसी भी एस्पेक्स के पीछे कोड को खोलें। आप देखेंगे: सार्वजनिक आंशिक वर्ग अच्छा: System.Web.UI.Page अब पेज पर राइट क्लिक करें और परिभाषा पर जाएँ पर क्लिक करें, आप देखेंगे: सार्वजनिक वर्ग पेज: TemplateControl, IHttpHandler
आदित्य बोकाडे

5

HttpHandler विस्तार से http अनुरोध को संभालने के लिए ज़िम्मेदार है, जबकि HttpModule जीवन चक्र की घटनाओं का जवाब दे रहा है।


2

अच्छा लेख इसके बारे में HttpModule-and-HttpHandlers

संदर्भ: जानकारी: ASP.NET HTTP मॉड्यूल और HTTP हैंडलर अवलोकन

“हैंडलर निष्पादित करने से पहले और बाद में मॉड्यूल को बुलाया जाता है। मॉड्यूल डेवलपर्स को प्रत्येक व्यक्तिगत अनुरोध को अवरोधन, भाग लेने या संशोधित करने में सक्षम बनाता है। हैंडलर का उपयोग व्यक्तिगत समापन बिंदु अनुरोधों को संसाधित करने के लिए किया जाता है। हैंडलर ASP.NET फ्रेमवर्क को एक अनुप्रयोग के भीतर व्यक्तिगत HTTP URL या URL एक्सटेंशन के समूहों को संसाधित करने में सक्षम करते हैं। मॉड्यूल के विपरीत, अनुरोध को संसाधित करने के लिए केवल एक हैंडलर का उपयोग किया जाता है।


धन्यवाद, यह मेरी बहुत मदद करता है
राहुल चौधरी

1

HTTP हैंडलर वह जगह है जहां वास्तव में संकलन सेटिंग के आधार पर किया जाता है। जैसे कि यदि पृष्ठ का विस्तार .aspx है तो यह system.web.Ui.Pagahandlefactory के माध्यम से संकलित करेगा। एक बार HTTP हैंडल पर संकलन किया जाता है, हालांकि HTTP मॉड्यूल और IIS में रिक्वेस्ट जाएगी।


0

HTTP हैंडलर

HTTP हैंडलर एक प्रक्रिया है जो एक HTTP अनुरोध के जवाब में चलती है। इसलिए जब भी उपयोगकर्ता किसी फ़ाइल का अनुरोध करता है तो उसे एक्सटेंशन के आधार पर हैंडलर द्वारा संसाधित किया जाता है। इसलिए, कस्टम http हैंडलर तब बनाए जाते हैं, जब आपको फ़ाइल नाम एक्सटेंशन के आधार पर विशेष हैंडलिंग की आवश्यकता होती है। आइए एक साइट के लिए RSS बनाने के लिए एक उदाहरण पर विचार करें। तो, एक हैंडलर बनाएं जो RSS- स्वरूपित XML उत्पन्न करता है। अब कस्टम हैंडलर को .rss एक्सटेंशन को बाइंड करें।

HTTP मॉड्यूल

HTTP मॉड्यूल एक अनुरोध के जीवन चक्र में प्लग किए जाते हैं। इसलिए जब एक अनुरोध संसाधित होता है तो यह अनुरोध के पाइपलाइन में सभी मॉड्यूल से गुजरता है। इसलिए आमतौर पर http मॉड्यूल का उपयोग किया जाता है:

सुरक्षा: अनुरोध को संभालने से पहले एक अनुरोध को प्रमाणित करने के लिए।

सांख्यिकी और लॉगिंग: चूंकि मॉड्यूल को प्रत्येक अनुरोध के लिए बुलाया जाता है, जिसका उपयोग वे आंकड़े इकट्ठा करने और लॉगिंग जानकारी के लिए कर सकते हैं।

कस्टम हेडर: चूंकि प्रतिक्रिया को संशोधित किया जा सकता है, इसलिए कोई कस्टम हेडर जानकारी को प्रतिक्रिया में जोड़ सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.