আপনি যা চাইছেন তা পরিচালনা করার বিভিন্ন উপায় এবং আপনার প্রশ্নের কয়েকটি ভিন্ন দিক:
প্রচারের জন্য ছোট আপডেটগুলি পরিচালনা করুন
আপনি এখানে আসার পরে যা ঘটছেন তা হ'ল একটি কনটেন্ট ম্যানেজমেন্ট সিস্টেম বা অনুরূপ যা আপনাকে ফ্লাইতে থাকা সামগ্রীগুলি সম্পাদনা করার অনুমতি দেয় (মনে করুন ওয়ার্ডপ্রেস / দ্রুপাল বা একটি। নেট দর্শন N2 সিএমএস, উম্ব্রাকো, অর্চার্ড ইত্যাদি), তবে সেখানে এমন কিছু জিনিস যা আপনি চেষ্টা করতে পারেন যদি আপনি সেই পথে নামেন না।
কারণ এএসপি.এনইটি কেবল তখনই পুনরায় লোড করে যদি আপনি নির্দিষ্ট ধরণের ফাইল (ওয়েবকনফিগ (গুলি), /bin/
এবং /app_code/
মূলত ফোল্ডারগুলির বিষয়বস্তু) স্পর্শ করেন - এবং "অন্যান্য ফাইল পরিবর্তনের" জন্য একটি কনফিগারযোগ্য সীমা থাকে (মূলত আপনি একবারে এটি পরিবর্তন করেছেন তাই) আপনার সাইটের মধ্যে থাকা অনেকগুলি ফাইল অ্যাপ্লিকেশন পুল পুনরায় চালু হবে - NumRecompilesBeforeAppRestart
) আপনি কিছু স্ট্যাটিক (যেমন .html
) ফাইলগুলির জন্য আলাদা ফোল্ডারটি পরীক্ষা করে এমন কিছু করছেন যা আপনি প্রয়োজন হিসাবে টানছেন এবং প্রদর্শন করতে পারেন, বা LoadControl
যে স্ট্রিংয়ের পথটি নিয়েছে সে পদ্ধতিটি ব্যবহার করতে পারেন you একটি .ascx
ব্যবহারকারী নিয়ন্ত্রণ এবং এটি গতিশীলভাবে লোড করে - আপনি কীভাবে কী দেখানবেন তা কীভাবে নির্ধারণ করা হবে তা স্ট্যাকওভারফ্লোয়ের পক্ষে আরও উপযুক্ত - তবে আমি একটি নামকরণ কনভেনশন ভিত্তিক সমাধানের প্রস্তাব দিই।
আপনি ম্যানেজড এক্সটেনসিবিলিটি ফ্রেমওয়ার্ক (এমইএফ - যা সংস্করণ 4 এর পরে থেকে .NET ফ্রেমওয়ার্কের পুরো অংশ হয়ে গেছে) এর মতো কিছু ব্যবহার করার ক্ষেত্রেও নজর রাখতে পারেন যা আপনাকে একটি প্লাগইন ভিত্তিক আর্কিটেকচার লিখতে এবং আপনার /bin/
ডিরেক্টরিতে বাইরে কোনও ফোল্ডার নির্দিষ্ট করার জন্য নিরীক্ষণের অনুমতি দেয় নতুন .ডিএলএলস - যদিও অ্যাপটি পুনরায় চালু হওয়া সমস্যাটি এড়ানো হবে কিনা তা দেখার জন্য আমি এটি চেষ্টা করি নি, তবে কোনও সাইটে সাধারণ কার্যকারিতা যুক্ত করার জন্য আমি এটি একটি ওয়েব পরিবেশে ভাল প্রভাব ফেলতে ব্যবহার করেছি।
যদি এটি আবেদন না করে তবে কেবলমাত্র অপশন হিসাবে আমি ভাবতে পারি যে ক্লাসিক এএসপিতে যেমন করলাম "কোড-ইন-ফ্রন্ট" হিসাবে নিয়ন্ত্রণ যুক্ত করা - অর্থাত <script runat="server">
একটি সংকলিত "কোড-ব্যাক" শ্রেণীর পরিবর্তে একটি ব্লক সহ নিয়ন্ত্রণ চালানোর জন্য যুক্তিযুক্ত রয়েছে - এটি নিয়ন্ত্রণের সময় ফ্লাইতে সংকলিত হওয়ার সাথে সাথে কিছু সময়ের প্রথম কার্য সম্পাদনের ক্ষতিতে একটি ডিএলএল পরিবর্তনের প্রয়োজনীয়তা সরিয়ে ফেলবে - আবার আপনার যদি এটির সাথে ভারসাম্য বজায় রাখতে হবে NumRecompilesBeforeAppRestart
তবে আপনি 'খুব সামান্য পরিবর্তন করছি।
আমি আবার অ্যাপ্লিকেশন পুনরায় আরম্ভ জুড়ে সেশন চালিয়ে যেতে পারি?
এটি সম্ভবত সমাধান করা সহজতর সমস্যা এবং এতে তিনটি মূল পদক্ষেপ জড়িত:
- মেশিনকি (আইআইএস 7 কনফিগার করুন, তবে এখনও 8 টি ধরে রাখে) তার পরিবর্তে ধ্রুবক মান হতে পারে
AutoGenerate
- এর অর্থ হ'ল অ্যাপপুল যখন পুনর্ব্যবহার করে তখন এটি একই কী ব্যবহার করবে এবং তাই সেশন কুকিজ, ভিউসেট ইত্যাদি ডিক্রিপ্ট করতে সক্ষম হবে রিসাইক্ল
- হয় একটি রাষ্ট্রীয় সার্ভার সেটআপ করুন বা সেশন স্থিতি রাখতে একটি ডাটাবেস কনফিগার করুন ।
- আপনার ওয়েবকনফিগের সেশনস্টেট উপাদানটিতে বা ব্যবহার
InProc
করতে স্যুইচ করুন ।StateServer
SQLServer
এইভাবে আপনার অবিরাম সেশন থাকবে যা কোনও অ্যাপ পুনরায় চালু হতে পারে। তবে এগুলি "নিখরচায়িত" নয় - আপনার সেশনে সংরক্ষণ করা সমস্ত কিছু অবশ্যই সিরিয়ালাইজ করতে হবে এবং প্রতিটি পৃষ্ঠার লোডের জন্য এখন অতিরিক্ত নেটওয়ার্ক ট্রিপ দরকার হবে এবং সম্ভাব্যভাবে সেশন ডেটা প্রকাশ করতে হবে।
যাইহোক, আপনি যদি এমন অবস্থানে থাকেন যেখানে কোনও স্থাপনার পরে অ্যাপ্লিকেশনটি পুনরায় শুরু করতে "কয়েক মিনিট" লাগে, আপনি লোড-ভারসাম্যপূর্ণ পরিবেশে যেতে বা কমপক্ষে একটি হট-অদল-বদল স্টেজিং / লাইভ সেটআপ বিবেচনা করতে পারেন (যেমন অ্যাজুর / এডাব্লুএস / ইত্যাদি সরবরাহ করেছেন) - আপনি আপডেট করার সময় কোনও সার্ভার অফলাইনে নিতে পারেন বা নতুন কোডটি দিয়ে প্রস্তুত হয়ে যেতে পারেন এবং তারপরে এটিকে সরিয়ে নিতে পারেন - তবে আপনি ভাগ করে নেওয়ার উদ্দেশ্যে পদক্ষেপ নিয়েছেন সেশনগুলি (উপরে দেখুন) এটি আপনার ব্যবহারকারীদের কোনও প্রভাব ছাড়াই দুর্দান্ত কাজ করবে।