ওয়াইন এবং মনো এর মধ্যে পার্থক্য


31

আমি যতদূর জানি ওয়াইন এবং মনো উভয় উবুন্টুর অধীনে উইন্ডোজ অ্যাপ্লিকেশন চালাতে ব্যবহৃত হয়।

তাই আমি ভাবছিলাম

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

ধন্যবাদান্তে!

উত্তর:


34

সফলভাবে একটি প্রোগ্রাম চালানোর জন্য তিনটি জিনিস মিলে যায়:

  • CPU- র নির্দেশ সেট (যেমন। এক্স 86 আপনার পিসিতে, এআরএম আপনার মোবাইল ফোনে এ, পাওয়ারপিসি কিছু অ্যাপল Macs- এর মধ্যে জাভা বাইটকোড জাভা অ্যাপলেট জন্য, CLI জন্য "নেট" / মনো অ্যাপ্লিকেশন)
  • বাইনারি ফাইল ফর্ম্যাট (যেমন। পি ই / COFF ".exe" মাইক্রোসফট উইন্ডোজ, জন্য জার জাভা অ্যাপলেট, জন্য PE32 ".exe", ELF ইউনিক্স / লিনাক্স দিকে)
  • অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস ; (যেমন। POSIX লিনাক্স / ইউনিক্স, উপর কোকো ম্যাক ওএসএক্স, জন্য Win32 মাইক্রোসফট উইন্ডোজ, উপর বেজ ক্লাস লাইব্রেরী "নেট" জন্য / মনো অ্যাপ্লিকেশন)।

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

আরও মনে রাখবেন, কিছু প্রসেসর স্থানীয়ভাবে একাধিক নির্দেশিকা নির্বাহ করতে পারে; একটি পিসি প্রায়শই x86 এবং amd64 নির্দেশ সেট থাকে; একটি এআরএম প্রসেসর চারটি কার্যকর করতে পারে: এআরএম 32 / থাম্ব / জাভা বাইকোড / থাম্বইই । কিছু অপারেটিং সিস্টেম একাধিক এপিআই স্থানীয়ভাবেও সরবরাহ করতে পারে (মাইক্রোসফ্ট উইন্ডোজ উইন 32 এবং পসিক্স সরবরাহ করে )।

অন্য সব কিছুর জন্য আপনার অতিরিক্ত সফ্টওয়্যার লাগবে। জাভা প্রোগ্রামগুলি চালনার জন্য আপনাকে এটিকে কাজ করতে উপরে তালিকাভুক্ত তিনটি অংশের প্রয়োজন: বাইটকোড চালানোর জন্য একটি জাভা ভার্চুয়াল মেশিন প্রোগ্রাম ; জাভা প্রোগ্রাম চালু করার একটি উপায়, এবং প্রোগ্রামগুলির কল করার জন্য একটি জাভা ক্লাসলিবারি। "জাভা" মূলত সূর্যের দ্বারা বিকাশ করা কয়েকটি পৃথক পৃথক প্রযুক্তির ব্র্যান্ডনাম, তবে একটি ব্যবহারকারীর কাছে তারা প্রায়শই একটি হিসাবে ডাউনলোড হয়।

একইটি "। নেট" এর ক্ষেত্রে প্রযোজ্য, যা মাইক্রোসফ্ট দ্বারা মূলত বিকাশ করা বিভিন্ন প্রযুক্তিগুলির বিপণন ব্র্যান্ডনাম: প্রচলিত ভাষা রান-টাইম / বেস ক্লাস লাইব্রেরি (সিএলআর) এপিআই; ভিইএস হ'ল লোডার এবং কমন ল্যাঙ্গুয়েজ ইন্টারফেস (সিএলআই) হল নির্দেশের সেট।

আপনাকে মাইক্রোসফ্ট থেকে সূর্যের কাছ থেকে বা ইন্টেল থেকে এই প্রযুক্তিগুলি ডাউনলোড করতে হবে না কারণ তারা মূলত কিছু আবিষ্কার করেছিল। এএমডি প্রসেসরগুলি ইন্টেলের মানের সাথে সামঞ্জস্যপূর্ণ করে তোলে; অ্যাপাচি ("হারমনি") এবং গুগল ("অ্যান্ড্রয়েড ডালভিক") উভয়ই জাভার মতো স্যুট তৈরি করে; এবং মনো একটি সিএলআর / সিএলআই / ভেস স্যুট সরবরাহ করে। গুরুত্বপূর্ণ বিষয় হ'ল প্রত্যেকে একই মানদণ্ডগুলি ব্যবহার করে তাদের সামঞ্জস্যপূর্ণ করে তোলে। একটি ডিভিডি ডিস্ক এমন কোনও ডিভিডি প্লেয়ারের সাথে খেলবে যা মানকটি পূরণ করে এবং একটি HTML ওয়েবপৃষ্ঠা যে কোনও ওয়েব ব্রাউজারে এইচটিএমএল মান পূরণ করে উপস্থাপন করবে।

  • মনো হ'ল একটি সিএলআর / সিএলআই / ভেস স্যুট যা ম্যাক ওএসএক্স, এমএস উইন্ডোজ এবং লিনাক্সে চলতে পারে।
  • ওয়াইন একটি উইন 32 এপিআই বাস্তবায়ন যা ম্যাক ওএসএক্স, এমএস উইন্ডোজ এবং লিনাক্সে চলতে পারে।
  • আপনি যেকোন অপারেটিং সিস্টেমের উপরে ওয়াইন এর উপরে মনো চালাতে পারেন ।
  • আপনি যেকোন সিপিইউ আর্কিটেকচারের শীর্ষে, কেমুর উপরে ওয়াইন চালাতে পারেন ।

সুতরাং মনো সিএলআর। এক্স অ্যাপ্লিকেশনগুলি চালিত করে এবং ওয়াইন উইন 32। এক্স অ্যাপ্লিকেশনগুলি চালিত করে। একমাত্র সাধারণ বিষয় হল ফাইলের নামগুলি ".exe" এ শেষ হয়; বিষয়বস্তুগুলি সম্পূর্ণ আলাদা এবং বেমানান, সুতরাং আপনার সঠিক প্রয়োজন ।

পারল (এবং এর বিপরীতে) উপস্থাপন করার সময় পাইথন দোভাষী যেমন ত্রুটি ঘটায় তেমনি x86 + Win32, বা JVM + জাভা বাইটকোড উপস্থাপন করার সময় একটি সিএলআর ইন্টারপ্রেটার ত্রুটি করবে। আপনি যে নির্দিষ্ট প্রোগ্রামটি চালাতে চান তার লিঙ্কটি যদি পোস্ট করতে পারেন তবে আমি বা অন্য কেউ আপনাকে সঠিক নির্দেশিকা সেট, ফাইল ফর্ম্যাট এবং এপিআই এর জন্য ডিজাইন করেছিল এবং লিনাক্সে আপনাকে কী ইনস্টল করতে হবে তা বলতে সক্ষম হবেন এটি চালাতে। আশা করি এইটি কাজ করবে!

(কখনও কখনও আপনার উভয়ের প্রয়োজনও হতে পারে example উদাহরণস্বরূপ, ওপেনবেভ ট্রেন সিমুলেটরটি সি # এবং পিই / সিএফএফ + সিএলআই + সিএলআর তে সংকলিত হয়, তবে পিই / সিএফএফ + উইন 32 + x86 এর জন্য সংকলিত সি বাইনারি প্লাগইনগুলি ব্যবহার করতে পারেন this এক্ষেত্রে আপনি ওয়াইন এর অধীনে মনো এর একটি উইন 32 সংস্করণ প্রয়োজন। সিপিইউ আর্কিটেকচারটিও যদি আলাদা হয় তবে অনুকরণের প্রয়োজন হবে; সুতরাং মনোটি কেমুর অধীনে ওয়াইন এর নিচে)।


22

সংক্ষিপ্ত উত্তর:

.NET হ'ল মাইক্রোসফ্ট জাভা সম্পর্কিত উত্তর, এবং মনো এটির একটি মুক্ত উত্স বাস্তবায়ন implementation ওয়াইন নেটিভ এক্সেসের জন্য এবং মনো এর সাথে কিছুই করার নেই তবে এটি আপনি যে কোনও দেশীয় উইন্ডোজ সফ্টওয়্যার এর মতো। নেট নেটটাইমটি চালাতে পারেন।


দীর্ঘ উত্তর:

ওয়াইন এবং মনো (এবং .NET) এর মধ্যে পার্থক্য বুঝতে আপনার অবশ্যই দেশীয় মেশিন কোড এক্সিকিউটেবল এবং "সাধারণ ভাষা রানটাইম" ওরফে "ভার্চুয়াল মেশিন" এক্সিকিউটেবলের মধ্যে পার্থক্য বুঝতে হবে:

নেটিভ মেশিন কোড এক্সিকিউটেবল আপনার প্রসেসরের জন্য নির্দিষ্ট নির্দেশ কোড ব্যবহার করে এবং এটির দ্বারা সরাসরি সম্পাদিত হয়। তার মানে তাদের বিভিন্ন প্রসেসরের জন্য পুনরায় সংযোগ করতে হবে। ওয়াইন সরাসরি এই এক্সিকিউটেবল কোডটি চালিয়ে এবং যে কোনও লাইব্রেরি কল করে এটি উইন 32 এপিআইয়ের নিজস্ব বাস্তবায়নে পুনর্নির্দেশের মাধ্যমে দেশীয় মেশিন কোড এক্সিকিউটেবলগুলি চালাতে সক্ষম হয়।

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

তাই:

1) ওয়াইন এবং মনো এর মধ্যে পার্থক্য: ওয়াইন উইন্ডোজের জন্য তৈরি দেশীয় মেশিন কোড এক্সিকিউটেবলগুলি চালনার জন্য, এবং মনো মনো / / নেট নেট এক্সিকিউটেবলগুলি চালনার জন্য যা কোনও নির্দিষ্ট প্ল্যাটফর্মের জন্য প্রয়োজনীয়ভাবে তৈরি হয় না। লিনাক্সে মনো ইনস্টল করা উইন্ডোজে .NET রানটাইম ইনস্টল করার সমতুল্য।

2) আপনি যে প্রোগ্রামটি চালাতে চান তা যদি নেট ব্যবহার করে না তবে নেট অবশ্যই ব্যবহার করতে হবে। মনো এখানে আপনাকে কিছুতেই সহায়তা করবে না।

যাইহোক, যদি প্রোগ্রামটি .NET ব্যবহার করে তবে আপনার কাছে দুটি বিকল্প রয়েছে, যার মধ্যে দুটি কাজ করতে পারে বা নাও পারে:

  • আপনি মনো ব্যবহার করে এটি চালানোর চেষ্টা করতে পারেন। .NET প্রোগ্রামটি উইন 32 এপিআই থেকে নেটিভ ফাংশন ব্যবহার করে তবে এটি ব্যর্থ হবে, যা উইন্ডোজের জন্য তৈরি নেট অ্যাপ্লিকেশনগুলি করে (অনেকগুলি নয়)।

  • বিকল্পভাবে, আপনি ওয়াইনের অভ্যন্তরে উইন্ডোজগুলির জন্য মাইক্রোসফ্ট .NET রানটাইম ইনস্টল করতে পারেন এবং তারপরে এটি নেট অ্যাপ্লিকেশন চালাতে পারেন। আপনি এক্ষেত্রে মনো ব্যবহার করবেন না।

৩) ওয়াইন এবং মনো একে অপরের উপর নির্ভর করে না, তবে উপরে উল্লিখিত হিসাবে, আপনি ওয়াইনে মাইক্রোসফ্ট। নেট রানটাইম ব্যবহার করতে পারেন মনো /। নেট অ্যাপ্লিকেশনগুলি চালানোর জন্য।


ধন্যবাদ! (1) সুতরাং যদি কোনও অ্যাপ্লিকেশন .NET এবং win32 উভয়ের উপর নির্ভর করে তবে একমাত্র উপায় হ'ল .NET ইনস্টল করা এবং তারপরে ওয়াইনে অ্যাপ্লিকেশনটি ইনস্টল করা? (২) কোনও অ্যাপ্লিকেশন .NET এবং / অথবা win32 এর উপর নির্ভর করে কিনা তা কীভাবে জানবেন?
টিম

1
টাইপিং file *.exeসিপিইউ নির্দেশিকা সেট এবং ফাইলের ধরণ সম্পর্কে তথ্য প্রদর্শন করবে। যদি একটি CLI / CLR হয় ( "নেট" / মোনো) অ্যাপ্লিকেশন এছাড়াও কোন নেটিভ Win32 API কল আপনি এটি চালানোর জন্য প্রয়োজন হবে, অথবা বর্ণন ব্যবহার file *.dllকরে নেটিভ এক্স 86 + + Win32 হচ্ছে দেন ফাইল।
স্ল্যাডেন

আপনি ওয়াইনে উইন্ডোজের জন্য মনোও ইনস্টল করতে পারেন তবে ওয়াইন এফএকিউ অনুসারে এটি। নেট রানটাইমের চেয়ে কম কাজ করার সম্ভাবনা রয়েছে। কোনও নেট নেটওয়ার্ক কোনও নেটিভ উইন 32 কল ব্যবহার করে যেহেতু তারা বিভিন্ন উপায়ে এটি করতে পারে সেগুলির কোনও সহজ উপায় নেই know করণীয় সেরা কাজটি হল মনোকে প্রথমে চেষ্টা করা, যদি এটি কাজ না করে তবে ওয়াইন +। নেট চেষ্টা করুন।
এলিস্টায়ার বুকসটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.