বাইন্ডার ওভারভিউ

বাইন্ডার আন্তঃপ্রক্রিয়া যোগাযোগের জন্য একটি সিস্টেম যা একটি অ্যান্ড্রয়েড-চালিত ডিভাইসে দুটি প্রক্রিয়াকে যোগাযোগ করতে দেয়। বাইন্ডার অন্য একটি প্রক্রিয়ায় ফাংশন কল চালানোর একটি উপায় প্রদান করে যা কলারের কাছে সম্পূর্ণ স্বচ্ছ।

বাইন্ডারের পরিভাষায়, কলিং প্রক্রিয়াটিকে ক্লায়েন্ট হিসাবে বিবেচনা করা হয় এবং এর শেষ পয়েন্টটিকে বাইন্ডার প্রক্সি বা প্রক্সি বলা হয়। বিপরীতভাবে, যে প্রক্রিয়াটিকে বলা হচ্ছে সেটি হল সার্ভার এবং এর শেষ বিন্দুকে বলা হয় বাইন্ডার নোড বা নোড

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

int result = someNodeInterface.foo(a, b); // someNodeInterface is a proxy object

অনুমান করুন যে ক্লায়েন্ট কলিং foo() প্রক্রিয়া A এ চলছে এবং সার্ভার বাস্তবায়নকারী foo() B প্রক্রিয়ায় চলছে। চিত্র 1 দেখায় কিভাবে এই কলটি কার্যকর করা হয়:

বাইন্ডার কল এক্সিকিউশন।

চিত্র 1. বাইন্ডার কল এক্সিকিউশন।

চিত্র 1 এ দেখানো হিসাবে অন্য প্রক্রিয়ায় একটি পদ্ধতি চালানোর জন্য, নিম্নলিখিতগুলি ঘটে:

  1. A প্রক্রিয়ায় থাকা ক্লায়েন্ট কোড A প্রক্রিয়ায় প্রক্সি কোড আহ্বান করে। A প্রক্রিয়ায় থাকা প্রক্সি কোড নিম্নলিখিত আইটেমগুলি সম্বলিত একটি লেনদেন তৈরি করে:
    • নোডের জন্য একটি শনাক্তকারী
    • নোডে foo() পদ্ধতির জন্য একটি শনাক্তকারী
    • যুক্তি a এবং b এর একটি অনুলিপি ধারণকারী একটি বাফার
  2. লেনদেনটি বাইন্ডার কার্নেল ড্রাইভারের কাছে জমা দেওয়া হয়।
  3. বাইন্ডার কার্নেল ড্রাইভার নির্ধারণ করে যে প্রক্রিয়া B নোড হোস্ট করে।
  4. কার্নেল পুরো লেনদেনটি প্রসেস B-এর ঠিকানা স্থানে কপি করে।
  5. কার্নেল লেনদেন পরিচালনা করার জন্য B প্রক্রিয়ায় একটি থ্রেড খুঁজে পায় এবং লেনদেনটি এটিতে প্রেরণ করে।
  6. থ্রেডটি লেনদেনটি আনপ্যাক করে, নোডটি খুঁজে পায় এবং নোড অবজেক্টে লেনদেন পাঠায়।
  7. নোড অবজেক্ট লেনদেন থেকে ফাংশন শনাক্তকারী পায়, লেনদেন বাফার থেকে a এবং b আনপ্যাক করে এবং স্থানীয় ভেরিয়েবলে a এবং b সঞ্চয় করে।
  8. নোড অবজেক্ট B প্রক্রিয়ায় সার্ভার কোডে foo(a, b) কল করে।
  9. কলের ফলাফল একটি উত্তর লেনদেনে ফেরত দেওয়া হয়, যা কার্নেল ড্রাইভারের কাছে পাঠানো হয় এবং তারপর A প্রক্রিয়ায় কলিং প্রক্সিতে ফিরে যায়।
  10. প্রক্সি A প্রক্রিয়ায় কলকারীকে ফলাফল প্রদান করে।

দপ্তরী ব্যবহার ক্ষেত্রে

বাইন্ডার বিভিন্ন পরিস্থিতিতে ব্যবহার করা যেতে পারে যেখানে বিভিন্ন প্রক্রিয়ায় সফ্টওয়্যারের মধ্যে যোগাযোগ ঘটতে হবে। যেমন:

  • একটি ক্যামেরা অ্যাপ অন্য প্রক্রিয়ায় ক্যামেরা সার্ভারের সাথে যোগাযোগ করতে বাইন্ডার ব্যবহার করে। ক্যামেরা সার্ভার তারপর অন্য প্রক্রিয়ায় ক্যামেরা HAL এর সাথে যোগাযোগ করতে বাইন্ডার ব্যবহার করে।

  • একটি অ্যাপ অন্য প্রক্রিয়ায় একটি সিস্টেম সার্ভারের সাথে যোগাযোগ করতে বাইন্ডার ব্যবহার করে। সিস্টেম সার্ভার অন্যান্য প্রক্রিয়ায় HAL-এর সাথে কথা বলার জন্য বাইন্ডার ব্যবহার করে।

  • একটি প্রক্রিয়ায় একটি অ্যাপ অন্য প্রক্রিয়ায় একটি ভিন্ন অ্যাপের সাথে যোগাযোগ করতে বাইন্ডার ব্যবহার করে।

  • অ্যাপগুলি ইনস্টল, আপডেট এবং অপসারণের জন্য দায়ী সিস্টেম ডেমন ( installd ) অ্যাপ কম্পাইল করতে অ্যান্ড্রয়েড রানটাইম ডেমনের ('আর্টডি') সাথে যোগাযোগ করতে বাইন্ডার ব্যবহার করে।