উইন্ডোজ 8 উইনআরটি উপস্থাপন করেছে যা। নেট যেমন পরিচালনা করে তবে পরিচালনা না করে। কেন এটি পরিচালনা করা হচ্ছে না? এটি একটি পারফরম্যান্স সমস্যা? এর অর্থ কী আবর্জনা সংগ্রহ নিম্ন স্তরের এপিআইয়ের জন্য উপযুক্ত নয়?
উইন্ডোজ 8 উইনআরটি উপস্থাপন করেছে যা। নেট যেমন পরিচালনা করে তবে পরিচালনা না করে। কেন এটি পরিচালনা করা হচ্ছে না? এটি একটি পারফরম্যান্স সমস্যা? এর অর্থ কী আবর্জনা সংগ্রহ নিম্ন স্তরের এপিআইয়ের জন্য উপযুক্ত নয়?
উত্তর:
WinRT একটি হল প্রতিস্থাপন বয়স বয়সী সি-ভিত্তিক Winapi জন্য। এটি একটি এপিআই যা অবশ্যই অনেক রানটাইম পরিবেশে ব্যবহারযোগ্য। 20 বছর আগে, একটি সি এপিআই আন্তঃসম্পর্কীয়ভাবে সহজেই প্রবেশ করানো সহজ হয়েছিল। ১৯৯০ এর দশকের শেষার্ধে সিওএম সর্বজনীন আঠালো হয়ে উঠেছে since কার্যত উইন্ডোজের সাধারণ ব্যবহারে যে কোনও ভাষা রানটাইম সিওএম সমর্থন করে।
একটি আবর্জনা সংগ্রহকারী একটি ভাষা রানটাইম বাস্তবায়নের বিশদ। .NET এর জন্য সংগ্রাহক উদাহরণস্বরূপ জাভাস্ক্রিপ্টের জন্য সংগ্রাহক থেকে খুব আলাদা। উভয়ে তৈরি দেশীয় বস্তুগুলি অবশ্যই সংগ্রাহকের খুব কঠোর নিয়মগুলি পর্যবেক্ষণ করতে হবে। যার পরিবর্তে এর অর্থ হ'ল তাদের উইনআরটি সংস্করণগুলি তৈরি করতে হবে যা প্রতিটি ভাষার রানটাইমের সাথে নির্দিষ্ট। এটি করবে না, এমনকি মাইক্রোসফ্টের মতো বড় একটি সংস্থাও প্রতিটি ভাষার বাইন্ডিংয়ের জন্য একটি নির্দিষ্ট উইনআরটি সংস্করণ তৈরি এবং সমর্থন করতে পারে না। এই ভাষাগুলি ইতিমধ্যে COM সমর্থন করে তাও প্রয়োজনীয় নয়।
এই মুহুর্তে, উইনআরটি-র জন্য সেরা বাঁধাই হ'ল সি ++ হ'ল স্পষ্টত মেমরি পরিচালনার সাথে সিওএম আরও দক্ষতার সাথে কাজ করে। নতুন সি ++ সংকলক এক্সটেনশানগুলি যা এটি স্বয়ংক্রিয় করে তোলে থেকে যথেষ্ট সহায়তার সাথে এটি এড়ানোর জন্য সি ++ / সিএলআই-এর মতো সিনট্যাক্সের সাথে _com_ptr_t পুরানো of পরিচালিত ভাষার সাথে বাঁধাই তুলনামূলক সহজ কারণ সিএলআর ইতিমধ্যে দুর্দান্ত সিওএম ইন্টারপ সমর্থন রয়েছে। উইনআরটি .NET এর মেটাডেটা ফর্ম্যাটটিও গ্রহণ করেছে। আফাইক, পরিচালিত সংকলকগুলিতে আজ পর্যন্ত কোনও কাজ করা হয়নি।
সম্পাদনা: মাইক্রোসফ্টের একজন প্রখ্যাত প্রোগ্রামার এবং ব্লগার ল্যারি অস্টারম্যান এখন মুছে ফেলা উত্তরে একটি ভাল মন্তব্য রেখে গেছেন। এটি সংরক্ষণের জন্য আমি এখানে এটি উদ্ধৃত করব:
উইনআরটি পরিচালনাহীন কারণ ওএসটি নিয়ন্ত্রণহীন। এবং উইনআরটি ডিজাইনের উপায়ে ডিজাইন করে, এটি কেবল সি ++, সি # এবং জেএস নয়, অনেকগুলি ভিন্ন ভাষায় প্রকাশ করার ক্ষমতা অর্জন করে। উদাহরণস্বরূপ, আমি সহজেই পার্ল মডিউলগুলির একটি সেট দেখতে পেল যা ডেস্কটপে উইনআরটি এপিআই প্রয়োগ করে। আমরা যদি নেট। এ এটি প্রয়োগ করে থাকি তবে এটি অত্যন্ত কঠিন হত
IInspectable
আপনি তার আসল শ্রেণির ধরণের জন্য কোনও বস্তুর অনুসন্ধান বা সমস্ত সমর্থিত ইন্টারফেসের তালিকার মতো জিনিসগুলি করতে পারেন, এবং উইনএমডি ফাইলের সাহায্যে প্রতিবিম্বের মধ্যে উইনআরটি মেটাডেটা প্রজেক্ট করতে পারেন) )। এবং উইনএমডি ফাইলগুলি ইন্টারপ অ্যাসেম্বলি হিসাবে তত্ক্ষণাত ব্যবহারযোগ্য নয়, সিএলআর তাদের বিশেষভাবে পরিচালনা করতে হয়।
উইনআরটি নিয়ন্ত্রণহীন কারণ এটি উইন 32-র প্রতিস্থাপন হিসাবে অভিহিত করা হয়েছে - উইন্ডোজের সর্বনিম্ন স্তরের বিকাশকারী অ্যাক্সেসযোগ্য এপিআই। একটি নিয়ন্ত্রণহীন এপিআই এখনও সর্বাধিক সম্ভাব্য পারফরম্যান্ট একটি যা বিকাশকারীদের কাছে প্রকাশিত হতে পারে এবং যুক্তিটি প্রমাণ করে যে এটির উপরে একটি পরিচালিত এপিআই সর্বদা মোড়ানো সম্ভব হবে, যা 'অনুমান' ঠিক কী করে থাকে।
এর অর্থ হ'ল সি ++ বিকাশকারীরা সি ++ / সিএলআই যে হুপগুলিতে প্রবর্তন না করে WinRT ব্যবহার করতে পারেন (দেখুন http://www2.research.att.com/~bs/bs_faq.html#CppCLI ) এর অর্থ এই নয় যে আপনি এখনও আপনি উইনআরটি ব্যবহার করতে চাইলে COM অধ্যয়ন করতে হবে।
আসল প্রশ্নটি হচ্ছে 'কেন সিওএম দরকার? মাইক্রোসফ্ট কেন এটি আবিষ্কার করতে হয়েছিল? ' কারণ সিওএমের সমস্ত যুক্ত সুবিধা ছাড়াই সরল সি ++ আসল ওওপি কাজের জন্য অপ্রতুল এবং স্ট্রাস্ট্রাপের সি ++ আপনাকে 'পোর্টাবিলিটি' দেওয়ার দাবী কার্যকারী বাস্তবতার আলোকে খুব স্পষ্টতই আলাদা। Http://webmechs.com/webpress/2011/11/c-versus-objective-c-as-api-substrate/ দেখুন