অ্যাসপনেটর কোর মিডলওয়্যার বনাম ফিল্টার


89

এসপ নেট কোর মিডলওয়্যারটি পড়ার পরে, আমি বিভ্রান্ত হয়ে পড়েছি কখন ফিল্টার ব্যবহার করা উচিত এবং কখন মিডলওয়্যারগুলি ব্যবহার করা উচিত যখন তারা একই লক্ষ্য অর্জন করে বলে মনে হয়। ফিটলারের পরিবর্তে মিডলওয়্যারগুলি কখন ব্যবহার করা উচিত?


4
এই ডকুমেন্টেশন সেই নির্দিষ্ট প্রশ্নকে লক্ষ্য করে। ডকস.মাইক্রোসফট.ইন- ইউএস
এনকোসি

উত্তর:


83

চ্যানেল 9 এ সম্পর্কে একটি ভিডিও রয়েছে: এএসপি.এনইটি দানব # 91: মিডলওয়্যার বনাম ফিল্টার । ভিডিওটির সংক্ষিপ্তসার হিসাবে:

অনুরোধটির বাস্তবায়ন শুরু হয় এবং আমাদের মধ্যে একটি মিডওয়্যার এবং অন্য মিডলওয়্যার রয়েছে, এটি "পুতুলের ভিতরে রাশিয়ান পুতুল" এর মতো ভাবেন এবং শেষ পর্যন্ত রাউটিং মিডলওয়্যারটি লাথি মারে এবং তারপরে অনুরোধটি এমভিসি পাইপলাইনে যায়। এখানে চিত্র বর্ণনা লিখুন সুতরাং আপনার যদি এমভিসির প্রসঙ্গের প্রয়োজন না হয় (আসুন আমরা বলি যে আপনি প্রবাহ এবং সম্পাদনের বিষয়ে উদ্বিগ্ন, যেমন শিরোনামগুলিকে কিছু প্রাক-রাউটিং প্রক্রিয়া ইত্যাদি ইত্যাদি প্রতিক্রিয়া জানান) তবে মিডলওয়্যারগুলি ব্যবহার করুন ।
তবে যদি আপনার এমভিসির প্রসঙ্গের প্রয়োজন হয় এবং আপনি ক্রিয়াগুলির বিরুদ্ধে পরিচালনা করতে চান তবে ফিল্টারগুলি ব্যবহার করুন ।


সুতরাং, আমার যদি যুক্তি থাকে তবে আমি প্রতিটি অনুরোধ চালাতে চাই (উদাহরণস্বরূপ লগিং) যার মধ্যে কয়েকটি এমভিসি সম্পর্কিত, আমি এটি মিডলওয়্যারের মধ্যে রেখে দেই, তারপরে ফিল্টার হ্যান্ডলারটি নির্দিষ্ট যুক্তির জন্য যা প্রয়োজন তা করতে পারি, তারপরে মিডওয়্যারের কাছে পুনর্বিবেচনা?
টেরি এইচ

69

মিডলওয়্যারগুলি এএসপি.নেট কোর স্তরে কাজ করে এবং অ্যাপ্লিকেশনটিতে আসা প্রতিটি একক অনুরোধের ভিত্তিতে কাজ করতে পারে।

অন্যদিকে এমভিসি ফিল্টারগুলি কেবল এমভিসিতে আসা অনুরোধগুলির জন্য চালিত হয়।

সুতরাং উদাহরণস্বরূপ, আমি যদি প্রয়োগ করতে চাই যে সমস্ত অনুরোধগুলি এইচটিটিপিএস-এর মাধ্যমে করা উচিত, তবে এর জন্য আমাকে মিডলওয়্যার ব্যবহার করতে হবে। যদি আমি এমন কোনও এমভিসি ফিল্টার তৈরি করি যা ব্যবহারকারীরা এখনও এইচটিটিপি-র মাধ্যমে উদাহরণস্বরূপ স্ট্যাটিক ফাইলগুলির জন্য অনুরোধ করতে পারে।

তবে অন্যদিকে এমভিসি নিয়ন্ত্রণকারীদের মধ্যে অনুরোধের সময়সীমার লগগুলিতে এমন কিছু হ'ল একেবারে অ্যাকশন ফিল্টার হতে পারে।


5

middlewareপাইভলাইনে এমভিসি প্রসঙ্গটি উপলব্ধ হওয়ার আগেই এর সম্পাদন ঘটে। অর্থাৎ উদাহরণস্বরূপ অ্যাকশনফিল্টারের ক্ষেত্রে বা এর middlewareঅ্যাক্সেস নেই । আপনার যা অ্যাক্সেস রয়েছে তা হ'ল যা আপনাকে অনুরোধের পাশাপাশি প্রতিক্রিয়াতেও ক্রিয়া সম্পাদন করতে দেয়। যেহেতু মডেল বাইন্ডিং এখনও ঘটেনি, মিডলওয়্যার ব্যবহার কোনও বৈধতা ফাংশন চালানো বা মান সংশোধন করার পক্ষে উপযুক্ত নয়। যে কোনও নিয়ামক বা অ্যাকশন কল করা হোক না কেন প্রতিটি অনুরোধেও চলবে।ActionExecutingContextActionExecutedContextHttpContextMiddleware

অন্যদিকে, filtersকেবলমাত্র নির্দিষ্ট ক্রিয়াকলাপ এবং কন্ট্রোলারদের উপর চালিত হবে যদি না আপনি প্রারম্ভকালে ফিল্টারটি বিশ্বব্যাপী নিবন্ধন করেন। যেহেতু আপনার প্রসঙ্গে সম্পূর্ণ অ্যাক্সেস রয়েছে আপনি নিজেও নিয়ামক এবং অ্যাকশনটিতে অ্যাক্সেস করতে পারবেন।

উত্স এবং উদাহরণ: dotnetcultist.com

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.