মনে রাখবেন এগুলি। নেট ইকোসিস্টেমের প্রসঙ্গে।
বিকাশকারীরা কখনও কখনও তাদের সংযোগের বিষয়গুলি পুনরায় ব্যবহার করতে তাদের কোডটি "অনুকূলিত করতে" চান। এই প্রশ্নের প্রসঙ্গে প্রদত্ত, এটি প্রায় সর্বদা একটি ভুল।
ADO.Net এর একটি সংযোগ পুলিং নামে একটি বৈশিষ্ট্য রয়েছে । আপনি যখন একটি নতুন সংযোগ অবজেক্ট তৈরি এবং খুলবেন তখন আপনি যা করছেন তা পুল থেকে সংযোগের জন্য অনুরোধ করছে। আপনি যখন কোনও সংযোগ বন্ধ করেন, আপনি এটি পুলটিতে ফিরিয়ে দিন।
এটা তোলে বস্তু আমরা কোডে সরাসরি ব্যবহার বুঝতে গুরুত্বপূর্ণ: SqlConnection, MySqlConnection, OleDbConnectio ইত্যাদি সবাই মাত্র চাদরে ADO.Net দ্বারা পরিচালিত একটি বাস্তব অন্তর্নিহিত সংযোগ প্রায়, এবং ADO.Net বাস্তব সংযোগ অনেক "গুরুতর" এবং আরো ব্যয়বহুল একটি পারফরম্যান্স দৃষ্টিকোণ থেকে। প্রমাণীকরণ, নেটওয়ার্ক ট্রানজিট, এনক্রিপশন ইত্যাদির মতো উদ্বেগগুলির মধ্যে এই অন্তর্নিহিত অবজেক্টগুলি হ'ল সেই জিনিসগুলি যা আপনি আসলে আপনার নিজের কোডে দেখেন সেই অবজেক্টটিতে স্বল্প পরিমাণের মেমরি ছাড়িয়ে যায়।
আপনি যখন নিজের সংযোগের অবজেক্টটি পুনরায় ব্যবহার করার চেষ্টা করবেন তখন আপনি গুরুত্বপূর্ণ অন্তর্নিহিত সংযোগগুলি কার্যকরভাবে পরিচালনা করার জন্য ADO.Net এর ক্ষমতাটি ভেঙে ফেলেন। আপনি আরও বড় জিনিস ব্যয়ে ছোট জিনিস দক্ষতা অর্জন।
কোনও অ্যাপ্লিকেশন বা HTTP অনুরোধ জুড়ে পুনরায় ব্যবহার করা আপনাকে দুর্ঘটনাক্রমে এমন কিছু সিরিয়ালাইজ করতে বাধ্য করতে পারে যা অন্যথায় সমান্তরালে চালাতে সক্ষম হতে পারে এবং একটি পারফরম্যান্স বাধা হয়ে দাঁড়ায়। আমি বাস্তব অ্যাপ্লিকেশনগুলিতে এটি ঘটতে দেখেছি।
এখানে ওয়েব পৃষ্ঠার উদাহরণের ক্ষেত্রে, যেখানে আপনি কমপক্ষে কেবলমাত্র একক HTTP অনুরোধ / প্রতিক্রিয়ার সময়কালের জন্য ছোট সংযোগ রাখেন, আপনি আপনার অনুরোধ পাইপলাইনে কী জিজ্ঞাসা চালাচ্ছেন তা মূল্যায়ন করে আপনি আরও দক্ষতা অর্জন করতে পারেন এবং পাওয়ার চেষ্টা করেছেন এগুলি যতটা সম্ভব ডাটাবেসে কয়েকটি পৃথক অনুরোধের নিচে নামিয়ে নিন (ইঙ্গিত: আপনি একটি একক এসকিউএল স্ট্রিংয়ে একাধিক কোয়েরি জমা দিতে পারেন এবং তাদের মধ্যে সরানোর জন্য DataReader.NextResult()
বিভিন্ন টেবিল ব্যবহার বা চেক করতে পারেন DataSet
)।
অন্য কথায়, কোনও অ্যাপ্লিকেশনের জন্য একটি সংযোগ পুনরায় ব্যবহারের শর্তাবলী বিবেচনা না করে বা ক্যোয়ারী অনুসারে একটি অনুরোধ বনাম HTTP অনুরোধের পরিবর্তে, প্রতিটি সময় আপনি ডাটাবেসে কল করার জন্য একটি সংযোগের শর্তে ভাবেন ... প্রতিটি রাউন্ড ট্রিপ। তারপরে সেই ভ্রমণের সংখ্যা হ্রাস করে সংযোগের সংখ্যা হ্রাস করার চেষ্টা করুন। এইভাবে আপনি উভয় লক্ষ্য পূরণ করতে পারেন।
তবে এটি কেবল এক ধরণের অপ্টিমাইজেশন। প্রোগ্রামার সময়টি অনুকূলকরণ এবং কার্যকর কোড পুনরায় ব্যবহার লাভ করারও রয়েছে। বিকাশকারীরা কেবল খোলা এবং ব্যবহারের জন্য প্রস্তুত যে সংযোগের অবজেক্ট পেতে বারবার একই বয়লারপ্লিট কোডটি লিখতে চান না। এটি কেবল ক্লান্তিকরই নয়, এটি প্রোগ্রামে বাগ প্রবর্তনের একটি উপায়।
এমনকি এখানে, যদিও, ক্যোয়ারী (বা রাউন্ড ট্রিপ) অনুযায়ী একটি সংযোগ থাকা সাধারণত ভাল। একই বয়লারপ্লেট কোডটি আবার লেখা এড়াতে সহায়তা করতে আপনি ব্যবহার করতে পারেন এমন অন্যান্য নিদর্শন রয়েছে। এখানে আমি পছন্দ করি এমন একটি উদাহরণ , তবে আরও অনেকগুলি রয়েছে।