2013-02-24 78 views
7

में संदेश हैंडलर बनाम फ़िल्टर एमवीसी वेब एपीआई प्रोजेक्ट के लिए अनुरोध हेडर में एपीआई कुंजी की जांच करने के लिए एक संदेश हैडलर बनाम फ़िल्टर का उपयोग करने के बीच क्या अंतर है।एएसपीनेट एमवीसी वेब एपीआई प्रोजेक्ट

मैं देख रहा हूँ http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

उदा में सिर्फ इतना है कि उद्देश्य के लिए एक MessageHandler की एक अच्छी तरह से उल्लिखित उदाहरण है कि वहाँ

GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiKeyHandler()); 

लेकिन ऐसा लगता है कि मैं फ़िल्टर का उपयोग करके भी वही कर सकता हूं।

GlobalConfiguration.Configuration.Filters.Add(new ApiKeyFilter()); 

ApiKeyFilter मान लिया जाये और ApiKeyHandler दोनों सिर्फ अनुरोध हेडर को देखो और एक API कुंजी, किस तरह और अधिक कुशल है के लिए जाँच? क्या फर्क पड़ता है?

उत्तर

6

संदेश हैंडलर फ़िल्टर से पहले बहुत पहले चलाते हैं।

आदेश है:

-MessageHandler

-Authorization फिल्टर

-Model बाध्यकारी

-अन्य फिल्टर

सुरक्षा से संबंधित सामान को जल्द से जल्द चलाने चाहिए।

+0

अगर मैं सिर्फ अनुरोध और प्रतिक्रिया का निरीक्षण करना चाहता हूं, उदाहरण के लिए केवल अनुरोध और प्रतिक्रिया पेलोड लॉगिंग करना चाहिए तो क्या प्राथमिकता दी जानी चाहिए? क्योंकि फिल्टर और हैंडलर इसे संभाल सकते हैं। हैंडलर प्रति मार्ग विशिष्ट भी हो सकते हैं। इसलिए "सुरक्षा संबंधी सामान" एकमात्र भिन्नता है जब प्रत्येक के उपयोग के मामलों की बात आती है? –

+1

यह स्कोपिंग और निष्पादन के आदेश के बारे में है। चूंकि संदेश हैंडलर vnext में दूर जाने लगते हैं - मैं बजाय लॉगिंग के लिए कटाना मिडलवेयर का उपयोग करूंगा। – leastprivilege

+0

धन्यवाद, मैं अभी भी उलझन में हूं। बस मेरी मूल बातें पाने के लिए कृपया कृपया मान लें कि हमारे पास कटाना नहीं है। अगर मैं लॉगिंग के लिए फ़िल्टर का उपयोग करता हूं तो कोई नुकसान होगा। मैं समझता हूं कि उन सामानों के लिए जिन्हें बहुत जल्दी हैंडलर को निष्पादित करने की आवश्यकता है, का उपयोग किया जाना चाहिए। लेकिन मान लें कि मेरे पास लॉगिंग के साथ ऐसी कोई आवश्यकता नहीं है, जो एक बेहतर विकल्प (हैंडलर या फ़िल्टर) है। लॉगिंग सिर्फ एक उदाहरण है जिसे मैं चर्चा के लिए उद्धृत करता हूं। धन्यवाद फिर से –