আমি আমার সি # কোডে একটি নির্দিষ্ট কমান্ড ব্যবহার করছি, যা ভালভাবে কাজ করে। তবে এটি "নিয়ন্ত্রণহীন" কোডে দুর্ব্যবহার করার কথা বলা হয়েছে।
পরিচালনা বা পরিচালনা না করা কোড কী?
আমি আমার সি # কোডে একটি নির্দিষ্ট কমান্ড ব্যবহার করছি, যা ভালভাবে কাজ করে। তবে এটি "নিয়ন্ত্রণহীন" কোডে দুর্ব্যবহার করার কথা বলা হয়েছে।
পরিচালনা বা পরিচালনা না করা কোড কী?
উত্তর:
এমএসডিএন থেকে নিয়ন্ত্রিত কোড সম্পর্কে কিছু লেখা এখানে ।
কিছু লাইব্রেরি কোডকে অপ্রয়োজনীয় কোডে কল করতে হবে (উদাহরণস্বরূপ, নেটিভ কোড এপিআই, যেমন উইন 32)। কারণ এর অর্থ পরিচালিত কোডের জন্য সুরক্ষা ঘেরের বাইরে যাওয়া, যথাযথ সতর্কতা প্রয়োজন।
পরিচালিত কোড সম্পর্কে আরও কিছু প্রশংসামূলক ব্যাখ্যা এখানে দেওয়া হয়েছে:
আপনার সমস্যার জন্য:
আমি মনে করি এটি কারণ ইউনিট টেস্টিংয়ের জন্য আপনার কোডটি কার্যকর করে এবং এটির কিছু অংশ এটি পরিচালনা না করে থাকতে পারে U তবে আমি এটি সম্পর্কে নিশ্চিত নই, সুতরাং সোনার জন্য এটি গ্রহণ করবেন না। আমি নিশ্চিত যে কেউ আপনাকে এ সম্পর্কে আরও তথ্য দিতে সক্ষম হবেন। আশা করি এটা সাহায্য করবে!
এই বিষয় সম্পর্কে একটি ভাল নিবন্ধ।
সংক্ষেপ,
একটি অ্যাপ্লিকেশন প্রোগ্রাম যা একই মেশিনে ইনস্টল করা রানটাইম ইঞ্জিনের মধ্যে সম্পাদিত হয়। অ্যাপ্লিকেশনটি এটি ছাড়া চলতে পারে না। রানটাইম পরিবেশটি সফ্টওয়্যার রুটিনগুলির সাধারণ গ্রন্থাগার সরবরাহ করে যা প্রোগ্রামটি সাধারণত মেমরি পরিচালনা ব্যবহার করে এবং সম্পাদন করে। এটি উত্স কোড থেকে এক্সিকিউটেবল কোডে বা মধ্যবর্তী ভাষা থেকে এক্সিকিউটেবল কোডে রূপান্তর করতে পারে। জাভা, ভিজ্যুয়াল বেসিক এবং .NET এর প্রচলিত ভাষা রানটাইম (সিএলআর) রানটাইম ইঞ্জিনগুলির উদাহরণ। ( আরও পড়ুন )
একটি এক্সিকিউটেবল প্রোগ্রাম যা নিজেই চলে। অপারেটিং সিস্টেম থেকে চালু, প্রোগ্রামটি অপারেটিং সিস্টেমে সফ্টওয়্যার রুটিনগুলি কল করে এবং ব্যবহার করে, তবে অন্য একটি সফ্টওয়্যার সিস্টেম ব্যবহার করার প্রয়োজন হয় না। মেশিন ল্যাঙ্গুয়েজ এবং সি / সি ++ প্রোগ্রামগুলিতে নির্দিষ্ট প্ল্যাটফর্মের জন্য মেশিন ল্যাঙ্গুয়েজে সংকলিত বিধানসভা ভাষার প্রোগ্রামগুলি নিয়ন্ত্রণহীন কোডের উদাহরণ more ( আরও পড়ুন )
যখন আপনি মনে অপরিচালিত মনে মেশিন-নির্দিষ্ট, মেশিন-স্তরের কোড। X86 সমাবেশ ভাষার মতো। অব্যবহৃত (নেটিভ) কোডটি সংকলনযুক্ত এবং প্রসেসরের জন্য চালানোর জন্য এটি সংযুক্ত করা হয় যার জন্য এটি তৈরি করা হয়েছিল, মুহুর্তের জন্য সমস্ত ওএস স্টাফ বাদ দিয়ে। এটি পোর্টেবল নয়, তবে এটি দ্রুত। খুব সহজ, ডাউন স্ট্রিপ কোড।
পরিচালিত কোডটি জাভা থেকে পুরানো ইন্টারপ্রিটিভ বেসিক, বা নেট। এর অধীনে চলমান কিছু anything পরিচালিত কোড সাধারণত একটি মাঝারি স্তরের পি-কোড বা বাইট কোড নির্দেশাবলীর সংকলিত হয়। এগুলি মেশিন-নির্দিষ্ট নির্দেশাবলী নয়, যদিও এগুলি সমাবেশ ভাষার সাথে মিল দেখায়। পরিচালিত কোডটি যে মেশিনটি চলছে সেখান থেকে প্রোগ্রামটি অন্তরিত করে এবং একটি সুরক্ষিত সীমানা তৈরি করে যেখানে সমস্ত মেমরি অপ্রত্যক্ষভাবে বরাদ্দ করা হয়, এবং সাধারণভাবে বলতে গেলে, আপনার কাছে বন্দর, মেমরি ঠিকানা ঠিকানা, স্ট্যাক ইত্যাদির মতো মেশিন রিসোর্সে সরাসরি অ্যাক্সেস নেই don't ধারণাটি আরও সুরক্ষিত পরিবেশে চালানো।
পরিচালিত ভেরিয়েবল থেকে রূপান্তর করতে, বলুন, একটি পরিচালনা না করে রাখাতে, আপনাকে আসল অবজেক্টে পৌঁছাতে হবে। এটি সম্ভবত কিছু অতিরিক্ত প্যাকেজিংয়ে মোড়ানো বা বক্স করা হয়েছে। 32 বিট মেশিনে অব্যবহৃত পরিচালিত ভেরিয়েবল (যেমন একটি 'ইনট', বলুন) - 4 বাইট লাগে। কোনও ওভারহেড বা অতিরিক্ত প্যাকেজিং নেই। পরিচালনা করা থেকে পরিচালনা না করা কোডে যাওয়ার প্রক্রিয়া - এবং আবার ফিরে - তাকে " মার্শালিং " বলে। এটি আপনার প্রোগ্রামগুলি সীমানা অতিক্রম করার অনুমতি দেয়।
যতটা সম্ভব কথায় কথায়:
পরিচালিত কোড যা সি #। নেট, ভিবি.নেট, এফ #। নেট ইত্যাদি সংকলক তৈরি করে। এটি সিএলআর-এ চলে, যা অন্যান্য জিনিসগুলির মধ্যে আবর্জনা সংগ্রহ, এবং রেফারেন্স চেকিং এবং আরও অনেক কিছুর মতো পরিষেবা সরবরাহ করে। সুতরাং এটি হিসাবে মনে করুন, আমার কোডটি সিএলআর দ্বারা পরিচালিত হয়।
অন্যদিকে, অপরিচালিত কোড সোজা মেশিন কোডে প্রনয়ন। এটি সিএলআর দ্বারা পরিচালনা করে না।
পরিচালিত কোড: এমন
কোড যা সাধারণ ভাষার রানটাইম সহ "সহযোগিতার চুক্তি" এর অধীনে চলে। পরিচালিত কোডটিতে মেমরি পরিচালনা, ক্রস-ল্যাঙ্গুয়েজ ইন্টিগ্রেশন, কোড অ্যাক্সেস সুরক্ষা এবং অবজেক্টের স্বয়ংক্রিয়ভাবে আজীবন নিয়ন্ত্রণের মতো পরিষেবাদি সরবরাহের জন্য রানটাইমের জন্য প্রয়োজনীয় মেটাডেটা সরবরাহ করতে হবে। মাইক্রোসফ্ট মধ্যবর্তী ভাষা (এমএসআইএল) ভিত্তিক সমস্ত কোড পরিচালিত কোড হিসাবে কার্যকর করে।অ-পরিচালিত কোড:
প্রচলিত ভাষা রানটাইমের কনভেনশন এবং প্রয়োজনীয়তা বিবেচনা না করে তৈরি করা কোড। পরিচালনা না করা কোডটি ন্যূনতম পরিষেবাদির সাথে সাধারণ ভাষার রানটাইম পরিবেশে কার্যকর করে (উদাহরণস্বরূপ, কোনও আবর্জনা সংগ্রহ নয়, সীমিত ডিবাগিং ইত্যাদি)।
তথ্যসূত্র: http://www.dotnetspider.com/forum/11612-differences-between-managed-and-unageaged-code.aspx
ম্যানেজড কোড সিএলআর পরিবেশের অভ্যন্তরে চলে আসে অর্থাৎ। নেট রানটাইম.একটি সংক্ষেপে সমস্ত আইএল পরিচালিত কোড হয়। তবে আপনি যদি কিছু তৃতীয় পক্ষের সফ্টওয়্যার উদাহরণস্বরূপ ভিবি 6 বা ভিসি ++ উপাদান ব্যবহার করেন তবে সেগুলি এনইটি রানটাইম (সিএলআর) এর নিয়ন্ত্রণ না থাকায় নিয়ন্ত্রণহীন কোড হিসাবে রয়েছে ভাষার উত্স কোড কার্যকরকরণের ওপরে।
পরিচালিত কোড: - এমএসআইএল (অন্তর্বর্তী ভাষা) ফর্মটি ভাষা সংকলক সংকলনের পরে তৈরি করা হয় এবং সরাসরি সম্পাদন করে CLR
ডেকে আনে পরিচালিত কোড । যেমন: - সমস্ত 61 ভাষা কোড। নেট ফ্রেমওয়ার্ক দ্বারা সমর্থিত
নিয়ন্ত্রণহীন কোড: - .net
এমএসআইএল ফর্ম উপলভ্য নয় এমন কোড আগে তৈরি হয়েছিল এবং এটি CLR
সরাসরি পরিবর্তে কার্যকর করা হয়CLR
পরিচালিত হয়ে অপারেটিং সিস্টেমে পুনর্নির্দেশিত হবে কোড হিসাবে পরিচিত।
যেমন: -কম, উইন 32 এপিআই
সবার আগে এটি বোঝার আগে .NET framework
, Microsoft
স্ট্যান্ড-একল পণ্যগুলি সরবরাহ করা MFC (Visual C++), VB, FoxPro
ইত্যাদি etc.
২০০২ সালে, মাইক্রোসফ্ট তার পণ্যগুলি সংযুক্ত করে এবং নেট ফ্রেমওয়ার্ক তৈরি করে। এখন কোডটি কীভাবে আগে কার্যকর করা হয়েছিল এবং কীভাবে .NET ফ্রেমওয়ার্কে কোড পরিচালনা ও কার্যকর করা হয় তার মধ্যে পার্থক্য রয়েছে। মাইক্রোসফ্ট CLR
.NET ফ্রেমওয়ার্কের সাথে ধারণাটি প্রবর্তন করে যা .NET ফ্রেমওয়ার্কের কোনও সমর্থিত ল্যানুগ থেকে কোড সংকলন করে এবং memory mangement, garbage collection
ইত্যাদির মতো অতিরিক্ত কার্যকারিতা সরবরাহ করে তবে এ জাতীয় সিএলআর বৈশিষ্ট্যগুলি সরাসরি আগে উপলভ্য ছিল না।
সুতরাং যদি আপনি .NET ফ্রেমওয়ার্কে লাইব্রেরি / কোড তৈরি করে থাকেন (সিএলআরের সাথে সংকলিত) তবে তাকে বলা হয়
Managed code
। আপনি এই লাইব্রেরিটি আরও NET অ্যাপ্লিকেশন / প্রকল্পে আরও ব্যবহার করতে পারেন এবং সেখানেও, সিএলআর বুঝতে পারে এটি কীভাবে আগে সংকলিত হয়েছিল এবং সে কারণেই এটি আপনার পরিচালিত কোড হিসাবে রয়ে গেছে।
OTOH আপনি যদি .NET কাঠামোর আগে লেখা লাইব্রেরিগুলি ব্যবহার করতে চান তবে আপনি নির্দিষ্ট সীমাবদ্ধতাগুলি সহ করতে পারেন তবে মনে রাখবেন যেহেতু সে সময় সিএলআর সেখানে ছিল না, এখন, সিএলআর আবার এই কোডটি বুঝতে এবং সংকলন করবে না । এবং এই বলা হবে unmanaged code
। দয়া করে নোট করুন, কিছু বৈশিষ্ট্য / সরঞ্জাম সরবরাহ করতে কিছু তৃতীয় পক্ষ দ্বারা নির্মিত লাইব্রেরি / অ্যাসেমবিলিগুলি সিএলআর কম্পটিব্লি না হলে পরিচালনা ব্যবস্থা হিসাবে বিবেচিত হতে পারে।
সাধারণ শর্তে, ম্যানেজ কোড হ'ল এমন একটি জিনিস যা আপনার সিএলআর বুঝতে পারে এবং আরও কার্যকর করার জন্য এটি নিজেই এটি সংকলন করতে পারে। .NET ফ্রেমওয়ার্কে (কোনও ভাষা থেকে এটি .NET ফ্রেমওয়ার্কে কাজ করে) কোড সিএলআর এ যায় তখন কোড কিছু মেটা ডেটা তথ্য সরবরাহ করে, যাতে সিএলআর আপনাকে এখানে নির্দিষ্ট বৈশিষ্ট্য সরবরাহ করতে পারে । এর মধ্যে কয়েকটি হ'ল Garbage collection, Performance improvements, cross-language integration, memory management
ইত্যাদি are
OTOH , পরিচালনাবিহীন কোডটি মেশিনের সাথে নির্দিষ্ট কিছু এবং ব্যবহারের জন্য প্রস্তুত, এটি আরও প্রক্রিয়া করার প্রয়োজন নেই।
প্রো সি # 5 এবং .NET 4.5 ফ্রেমওয়ার্ক থেকে:
পরিচালিত বনাম পরিচালনা ব্যবস্থাবিহীন কোড: সি # ভাষা সম্পর্কে বোঝার জন্য সবচেয়ে গুরুত্বপূর্ণ পয়েন্টটি হ'ল এটি কোড তৈরি করতে পারে যা কেবলমাত্র নেট নেটটাইমের মধ্যেই কার্যকর করতে পারে (আপনি কোনও নেটিভ সিওএম সার্ভার তৈরি করতে বা সি-সি +++ ব্যবহার করতে পারেন না) আবেদন)। আনুষ্ঠানিকভাবে বলতে গেলে, .NET রানটাইম কোডটি লক্ষ্যযুক্ত কোডটি বর্ণনা করতে ব্যবহৃত শব্দটি পরিচালিত কোড। বাইনারি ইউনিট যাতে পরিচালিত কোড থাকে তাকে অ্যাসেমব্লী বলা হয় (অ্যাসেমব্লিতে আরও কিছু বিশদ বিশদ)। বিপরীতভাবে, .NET রানটাইম দ্বারা সরাসরি হোস্ট করা যায় না এমন কোডটিকে নিয়ন্ত্রণহীন কোড হিসাবে অভিহিত করা হয়।