IHttpHandler.IsReusable এর ব্যবহার কী?


104

আমি একটি লিখছি IHttpHandlerএবং আমার একটি IsReusableসম্পত্তি বাস্তবায়ন করা দরকার । আমি যখন এমএসডিএন ডকুমেন্টেশন দেখি তখন তা বলে:

অন্য একটি অনুরোধ IHttpHandler উদাহরণটি ব্যবহার করতে পারে কিনা তা নির্দেশ করে একটি মান পায় G

এটি খুব সহায়ক নয়। কোন পরিস্থিতিতে আমার পুনরায় ব্যবহারযোগ্য হ্যান্ডলার ব্যবহার করা উচিত এবং কোন পরিস্থিতিতে এটি পুনরায় ব্যবহারযোগ্য হবে না?

প্রশ্নগুলি অনুসরণ করুন:

  1. পুনঃব্যবহার কি?
  2. আমি কি রাষ্ট্র (অর্থাত্ বর্গের ভেরিয়েবল) বজায় রাখতে পারি Reusable = true??

9
: এখানে একটি চেহারা আছে foreachbiscuit.wordpress.com/2007/11/01/...
হোমম

"পুনঃব্যবহার" অর্থ হ্যান্ডলারের একটি নির্দিষ্ট উদাহরণ সহ একাধিক অনুরোধ হ্যান্ডেল করা। আপনি সেশনে যেকোন কিছু সংরক্ষণ করতে পারেন - হ্যান্ডলারটি প্রকাশিত হলে এটি প্রভাবিত হবে না।
আইরিশচিফটাইন

@ আইরিশচাইফটেন এটিকে পছন্দ করে
সি সি বাকার

1
@ আইরিশচিফাটাইন এখনই আমি এটি কিছু লগ তথ্যের সাধারণ স্ট্রিমারের জন্য ব্যবহার করছি। তবে আমি কখন এবং কীভাবে আইএইচটিপিহ্যান্ডলারগুলি ব্যবহার করব সেগুলি বোঝার জন্য কী কী প্রভাবগুলি তা বোঝার চেষ্টা করছি। তারা অনেকের দ্বারা ভুলে যাওয়া বৈশিষ্ট্য।
কিস সি বেকার

উত্তর:


93

একই সম্পত্তি IHttpHandler উদাহরণ সহ একাধিক অনুরোধগুলি প্রক্রিয়া করা যায় কিনা এই সম্পত্তিটি নির্দেশ করে। ডিফল্টরূপে একটি অনুরোধ পাইপলাইন শেষে এইচটিটিপি অ্যাপ্লিকেশনটির হ্যান্ডলারের রিসাইকেললিস্টে রাখা সমস্ত HTTP হ্যান্ডলারগুলি নালায় সেট করা আছে। যদি কোনও হ্যান্ডলার পুনরায় ব্যবহারযোগ্য হয় তবে এটি বাতিল হয়ে যাবে না এবং পরবর্তী অনুরোধে উদাহরণটি পুনরায় ব্যবহার করা হবে।

মূল লাভটি হ'ল পারফরম্যান্স কারণ আবর্জনা সংগ্রহের ক্ষেত্রে কম জিনিস থাকবে।
পুনরায় ব্যবহারযোগ্য হ্যান্ডলারের জন্য সবচেয়ে গুরুত্বপূর্ণ ব্যথা-পয়েন্টটি এটি থ্রেড-নিরাপদ হওয়া উচিত। এটি তুচ্ছ নয় এবং এর জন্য কিছু প্রচেষ্টা প্রয়োজন।

আমি ব্যক্তিগতভাবে পরামর্শ দিচ্ছি যে আপনি যদি কেবল পরিচালিত সংস্থানগুলি ব্যবহার করেন তবে আবর্জনা সংগ্রাহক সহজেই তাদের পরিচালনা করতে পারেন তবে আপনি ডিফল্ট মানটি (পুনরায় ব্যবহারযোগ্য নয়) ছেড়ে যান। পুনরায় ব্যবহারযোগ্য হ্যান্ডলারের কাছ থেকে পারফরম্যান্স লাভ সাধারণত থ্রেডিং বাগগুলি খুঁজে পাওয়ার জন্য কঠোর পরিচয় দেওয়ার ঝুঁকির তুলনায় নগন্য is

আপনি যদি হ্যান্ডলারটি পুনরায় ব্যবহার করার সিদ্ধান্ত নেন তবে শ্রেণি ভেরিয়েবলগুলিতে রাষ্ট্র বজায় রাখা আপনার এড়ানো উচিত কারণ হ্যান্ডলার উদাহরণটি যদি একই সাথে অ্যাক্সেস করা হয় তবে একাধিক অনুরোধগুলি মান লিখবে / পড়বে।


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

2
অবশ্যই। আমি সর্বশেষ সুপারিশটিকে জোর দিয়ে বললাম যে IHttpHandler পুনরায় ব্যবহার করা হয় তবেই এটি প্রযোজ্য। স্পষ্টতার জন্য ধন্যবাদ, বেন!
ব্রানিস্লাভ আবাদজিমারিনভ

7
কি এটা এর মূল্য জন্য, আমি অনেক অনেক বাস্তবায়িত হয়েছে IHttpHandlerসঙ্গে গুলি IsReusableসেট trueএবং কোন সমস্যা ছিল। মনে রাখার প্রধান বিষয়টি কোনও ভেরিয়েবলকে ক্লাসে রেখে দেওয়া নয়, বরং আপনার ফাংশনে স্থানীয় ভেরিয়েবল ব্যবহার করা।
দানা

6
দুর্দান্ত ব্যাখ্যা। পরিষ্কার এবং বিন্দু। আমি আশা করি এমএসডিএন নিবন্ধগুলি এই সংক্ষিপ্ত ছিল।
অ্যালেক্সভিপার্ল

1
@ ব্রানিস্লাভ - যদি আমি আপনার উত্তরটি সঠিকভাবে বুঝতে পারি। বিভিন্ন থ্রেডের পক্ষে হ্যান্ডলারের বিভিন্ন সময় একই সাথে ব্যবহার করা সম্ভব হয় না, তবে একই সাথে বিভিন্ন থ্রেড একই সাথে হ্যান্ডলারের একই চিত্রটি কার্যকর করতে পারে?
ইয়ান

11

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

এখানে একটি প্রশ্ন যা এটি সঠিকভাবে ব্যবহার না করা হলে কী ঘটে তা দেখায়:

এইচটিটিপিহ্যান্ডলার ব্যবহার করে ডেটাবেসড ছবিগুলি স্ট্রিমিং করা


আপনার উত্তর সমর্থন করে কিছু ডকুমেন্টেশন আছে?
কিস সি বেকার

4
আপনার মত আমি এমএসডিএন তে কোনও সন্তোষজনক দলিল খুঁজে পেলাম না তাই আমাকে একটি ই-কমার্স সাইটের একটি পৃষ্ঠায় একটি ডাটাবেস থেকে চিত্র লোড করার পরীক্ষা করতে হবে এবং তারপরে যা ঘটেছিল তা পর্যবেক্ষণ করতে
পেরে

5

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

সম্পাদনা

আমি নিশ্চিত না যে আমার উত্তরটি পুনরায় ব্যবহার কী কী তা সঠিকভাবে নির্ধারণ করে। এটি আসলে একযোগে পুনরায় ব্যবহারের অনুমতি দেয়, সুতরাং কার্যকরভাবে রাষ্ট্রটি সর্বোত্তমভাবে এড়ানো বা সাবধানতার সাথে থ্রেড-নিরাপদ পদ্ধতিতে পরিচালিত হবে।


আমিও তাই ভাবব। আপনি ঠিক বলেছেন, আসল (মৌলিক) প্রশ্নটি: 'পুনরায় ব্যবহার কি?'
কিস সি বেকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.