Java RMI (Remote Method Invocation) হলো একটি টেকনোলজি যা ডিস্ট্রিবিউটেড কম্পিউটিং এনভায়রনমেন্টে অবস্থিত একটি জাভা অবজেক্টের মেথডকে অন্য অবজেক্ট দ্বারা রিমোটলি কল করার সুযোগ প্রদান করে। RMI জাভার বিল্ট-ইন ডিস্ট্রিবিউটেড অবজেক্ট মডেল, যা সার্ভার ও ক্লায়েন্টের মধ্যে কমিউনিকেশন সহজ করে।
Java RMI আর্কিটেকচার
Java RMI আর্কিটেকচার মূলত ৪টি স্তরে বিভক্ত:
- Application Layer
- Stub এবং Skeleton Layer
- Remote Reference Layer
- Transport Layer
1. Application Layer
- বিবরণ:
- এটি ক্লায়েন্ট ও সার্ভার কোড ধারণ করে।
- ক্লায়েন্ট অবজেক্ট এবং সার্ভার অবজেক্টের মধ্যে ইন্টারঅ্যাকশনের জন্য এটি জবাবদার।
- কাজ:
- ক্লায়েন্ট অবজেক্ট রিমোট সার্ভারের মেথড ইনভোকেশন রিকোয়েস্ট করে।
- সার্ভার অবজেক্ট রিমোট মেথড কল প্রসেস করে এবং রেসপন্স ক্লায়েন্টে পাঠায়।
2. Stub এবং Skeleton Layer
- Stub:
- Stub ক্লাস হলো ক্লায়েন্টের জন্য একটি প্রক্সি যা রিমোট মেথড ইনভোকেশন পরিচালনা করে।
- এটি ক্লায়েন্টে রান করে এবং রিমোট অবজেক্টের সাথে যোগাযোগের দায়িত্ব পালন করে।
- কাজ:
- রিমোট মেথড কল গ্রহণ করা।
- ডেটা সিরিয়ালাইজ করা (Serialization)।
- রিমোট অবজেক্টে রিকোয়েস্ট পাঠানো।
- Skeleton:
- Skeleton হলো সার্ভার-সাইড কম্পোনেন্ট যা Stub থেকে ডেটা গ্রহণ করে।
- কাজ:
- সিরিয়ালাইজড ডেটা ডিসিরিয়ালাইজ করা।
- সার্ভার অবজেক্টের রিমোট মেথড কল করা।
- মেথড কলের রেসপন্স Stub-এ পাঠানো।
Note: Java 2 (JDK 1.2) থেকে Skeleton ক্লাস আর ব্যবহার করা হয় না। বর্তমান RMI আর্কিটেকচারে Skeleton-এর কাজ Transport Layer দ্বারা পরিচালিত হয়।
3. Remote Reference Layer
- বিবরণ:
- এই লেয়ার রিমোট অবজেক্টের রেফারেন্স ম্যানেজ করে।
- একাধিক ক্লায়েন্ট যদি একই রিমোট অবজেক্ট অ্যাক্সেস করে, এটি সেগুলোর কমিউনিকেশন কন্ট্রোল করে।
- কাজ:
- রিমোট রেফারেন্সের ইন্টারপ্রিটেশন ও ফরম্যাটিং।
- ক্লায়েন্টের রিমোট মেথড কল সার্ভারে পাঠানো।
4. Transport Layer
- বিবরণ:
- Transport Layer হলো সবচেয়ে নিম্ন স্তর যা ক্লায়েন্ট ও সার্ভারের মধ্যে নেটওয়ার্ক কমিউনিকেশন পরিচালনা করে।
- এটি TCP/IP প্রোটোকলের উপর ভিত্তি করে কাজ করে।
- কাজ:
- কানেকশন স্থাপন এবং পরিচালনা করা।
- ডেটা সিরিয়ালাইজ এবং ডিসিরিয়ালাইজ করা।
- কমিউনিকেশন চ্যানেলের নিরাপত্তা এবং নির্ভরযোগ্যতা নিশ্চিত করা।
Java RMI আর্কিটেকচারের কাজের ধারা
- Stub (Client-Side Proxy):
- ক্লায়েন্ট একটি রিমোট মেথড কল করে।
- Stub রিমোট মেথড কলের প্যারামিটারগুলোকে সিরিয়ালাইজ করে।
- Transport Layer:
- Stub থেকে সিরিয়ালাইজড ডেটা নেটওয়ার্কের মাধ্যমে Skeleton-এ পাঠায়।
- Skeleton (Server-Side Proxy):
- Skeleton সিরিয়ালাইজড ডেটা গ্রহণ করে এবং ডিসিরিয়ালাইজ করে।
- এটি সার্ভারের আসল অবজেক্টের মেথড কল করে।
- Result Return:
- Skeleton মেথডের রেসপন্স Stub-এ পাঠায়।
- Stub রেসপন্স গ্রহণ করে ক্লায়েন্ট অ্যাপ্লিকেশনকে রিটার্ন করে।
Java RMI এর আর্কিটেকচারের ডায়াগ্রাম
+-------------+ +-----------------------+ +------------------------+
| Client | <---> | Stub Layer | <---> | Transport Layer |
+-------------+ +-----------------------+ +------------------------+
|
+-------------+ +-----------------------+ +------------------------+
| Server | <---> | Skeleton Layer (RRL) | <---> | Transport Layer |
+-------------+ +-----------------------+ +------------------------+
Java RMI এর সুবিধা
- Distributed Computing সহজ করা:
- রিমোট অবজেক্ট ব্যবহারের মাধ্যমে ডিস্ট্রিবিউটেড সিস্টেম নির্মাণ করা সহজ হয়।
- বিল্ট-ইন সিকিউরিটি:
- RMI TLS (Transport Layer Security) সমর্থন করে, যা সিকিউর কমিউনিকেশন নিশ্চিত করে।
- Serialization and Deserialization:
- জাভার অবজেক্টগুলো সহজেই সিরিয়ালাইজ এবং ডিসিরিয়ালাইজ করা যায়।
- Dynamic Class Loading:
- প্রয়োজনীয় ক্লাসগুলো ক্লায়েন্ট বা সার্ভারে না থাকলেও ডায়নামিকভাবে লোড করা যায়।
Java RMI আর্কিটেকচার একটি ডিস্ট্রিবিউটেড অবজেক্ট সিস্টেম নির্মাণের জন্য শক্তিশালী টুল প্রদান করে। Stub, Skeleton, এবং Transport Layer একত্রে কাজ করে ক্লায়েন্ট ও সার্ভারের মধ্যে নির্বিঘ্ন যোগাযোগ নিশ্চিত করে। এটি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করার জন্য একটি নির্ভরযোগ্য সমাধান।
Read more