মার্শালিং - এটি কী এবং কেন আমাদের এটির প্রয়োজন?


94

মার্শালিং কী এবং কেন আমাদের এটির প্রয়োজন?

আমার বিশ্বাস করা কঠিন যে আমি intC # থেকে C তে তারের উপরে কোনও প্রেরণ করতে পারি না এবং এটি মার্শাল করতে পারি। কেন সি # কেবল 32 টি বিটকে প্রারম্ভিক এবং সমাপ্তি সংকেত দিয়ে প্রেরণ করতে পারে না, সি কোডটি জানিয়েছে যে এটি পেয়েছে int?

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


4
আসলে, আপনি কেবল 32 টি বিট প্রারম্ভিক এবং সমাপ্তি সংকেত দিয়ে পাঠাতে পারেন । এটি আপনার নিজের জন্য একটি মার্শেলিং লিখতে হবে। তবে আপনি কীভাবে একটি কোড <কাস্টমক্লাসএ, তালিকা <কাস্টমক্লাসবি>> সি কোডে পাস করবেন?
ভিঙ্কো ভার্সালোভিক

4
আপনি যখন "তারের ওপরে" বলবেন তখন এন্ডিয়েনসনেস মনে আসে।
user7116

সত্যটি বড় / ছোট এডিয়ান বা অন্য কোনও প্রকারকে উপেক্ষা করতে দেয়।

56
এটি কিছুটা বিজোড় প্রশ্ন। এটি বরং জিজ্ঞাসার মতো, "আমাদের কেন একটি ডাক সিস্টেমের দরকার, যখন আমরা কেবল এমন একটি ব্যবস্থা রাখতে পারি যেখানে চিঠি ক্যারিয়ারগুলি চিঠিপত্র গ্রহণ করে, বাছাইয়ের জন্য এটি কেন্দ্রীয় অবস্থানগুলিতে নিয়ে যায়, এবং তারপরে এড্রেসীদের হাতে পৌঁছে দেয়?" তবে ... এটি একটি ডাক সিস্টেম। আপনি জিজ্ঞাসা করুন কেন আমাদের মার্শেলিং সিস্টেমের প্রয়োজন যখন পরিবর্তে আমাদের থাকতে পারে ... একটি মার্শালিং সিস্টেম। আমি মনে করি আমি আপনার প্রশ্নের বিন্দু মিস করছি। আপনি কি স্পষ্ট করতে পারেন?
এরিক লিপার্ট

4
আমি মনে করি এটি বোঝার সর্বোত্তম উপায়টি কীভাবে "পদ্ধতি" সমাবেশে কাজ করে তা বোঝা - শেষ নির্দেশের ঠিকানাটি স্ট্যাকের মধ্যে কীভাবে সংরক্ষণ করা হয়, পরামিতিগুলি স্ট্যাকের মধ্য দিয়ে পাস করা হয়, স্ট্যাক পয়েন্টার রেজিস্টারটি পদ্ধতিতে পরিবর্তন করা হয়, নির্দেশ পয়েন্টার রেজিস্টার ব্যবহার করা হয়, এবং, বিশেষত, পদ্ধতিগুলি বাস্তবায়নের জন্য বিভিন্ন কৌশলগুলিতে কীভাবে সামান্য তারতম্য হতে পারে। কার্যত, "তারের" বোঝার আপনার প্রশ্নের উপর কিছুটা আলোকপাত করা উচিত।
ylax

উত্তর:


77

কারণ বিভিন্ন ভাষা এবং পরিবেশের বিভিন্ন কলিং কনভেনশন, বিভিন্ন লেআউট কনভেনশন, বিভিন্ন আকারের আদিম (সিএফ char। সি তে এবং charসি), বিভিন্ন অবজেক্ট তৈরি / ধ্বংস কনভেনশন এবং বিভিন্ন নকশার নির্দেশিকা রয়েছে। ব্যবস্থাপনার জমি থেকে জিনিসপত্র বাইরে বের করে আনার জন্য আপনার এমন একটি উপায় দরকার যেখানে পরিচালনা না করা জমি এটি দেখতে ও বুঝতে পারে এবং বিপরীতে। মার্শালিংয়ের জন্য এটিই।


26

.NET কোড (সি #, ভিবি) কে "পরিচালিত" বলা হয় কারণ এটি সিএলআর দ্বারা পরিচালিত হয় ( প্রচলিত ভাষা রানটাইম )

আপনি যদি সি বা সি ++ বা এসেম্বলারে কোড লিখেন তবে এগুলিকে সমস্তই "পরিচালনাবিহীন" বলা হয়, যেহেতু কোনও সিএলআর জড়িত না। সমস্ত মেমরি বরাদ্দ / ডি-বরাদ্দের জন্য আপনি দায়ী।

মার্শালিং হ'ল পরিচালিত কোড এবং নিয়ন্ত্রণহীন কোডের মধ্যে প্রক্রিয়া; এটা সবচেয়ে গুরুত্বপূর্ণ দ্বারা প্রদত্ত সেবা অন্যতম CLR


11

মার্শেলিং একটি intআদর্শভাবে আপনি যা বলেছেন ঠিক তেমনই: সিএলআর পরিচালিত স্ট্যাক থেকে মেমরির অনুলিপি করে এমন কোথাও যেখানে সি কোড দেখতে পাবে। মার্শালিং স্ট্রিং, অবজেক্টস, অ্যারে এবং অন্যান্য ধরণের জিনিসগুলিই কঠিন জিনিস।

তবে পি / ইনভোক ইন্টারপ স্তর আপনার জন্য এই প্রায় সমস্ত জিনিস যত্ন করে।


4
মার্শালিং কি আসলে অনুলিপি করছে? আমি রিয়েল টাইম ইমেজ প্রসেসিং অপারেশনগুলিতে দেখছি, এবং মেমরির সমস্ত কিছুর অনুলিপি তৈরি করতে পছন্দ করব না।
ias

7

ভিঙ্কো মন্তব্যে যেমন বলেছেন, আপনি কোনও বিশেষ মার্শালিং ছাড়াই আদিম প্রকারগুলি পাস করতে পারেন। এগুলিকে "ব্লিটটেবল" প্রকারগুলি বলা হয় এবং এতে বাইট, শর্ট, ইনট, লং ইত্যাদি এবং তাদের স্বাক্ষরযুক্ত স্বাক্ষরবিহীন অংশগুলি অন্তর্ভুক্ত থাকে।

এই পৃষ্ঠায় blittable এবং নন-ব্লিটটেবল ধরণের তালিকা রয়েছে ।


7

পিনভোক ব্যবহার করে নিরবচ্ছিন্ন বিশ্বের ডেটা ধরণের সাথে এবং এর বিপরীতে যোগাযোগ করার জন্য আরও ভাল শব্দ বা গেটওয়ের প্রয়োজনে মার্শালিং একটি "মাধ্যম" এবং এটি নিরাপদে উপায়ে ফিরিয়ে দেওয়া হয়েছে তা নিশ্চিত করে।


2

মার্শালিং একটি ফাংশনটির স্বাক্ষরকে একটি আলাদা প্রক্রিয়াতে পাঠিয়ে দিচ্ছে যা একটি ভিন্ন মেশিনে রয়েছে এবং এটি সাধারণত কাঠামোগত ডেটা একটি ডেডিকেটেড ফর্ম্যাটে রূপান্তরিত করে প্রয়োগ করা হয়, যা অন্যান্য প্রসেসর সিস্টেমে স্থানান্তরিত করা যেতে পারে (সিরিয়ালাইজেশন / ডিসরিয়ালিশন)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.