উদাহরণ সহ Serialization এর ব্যবহার

Object Serialization in RMI - জাভা আরএমআই (Java RMI) - Java Technologies

293

Serialization হলো জাভার একটি প্রক্রিয়া, যেখানে একটি অবজেক্টের অবস্থা (state) একটি স্ট্রিমে রূপান্তর করা হয়, যা পরবর্তীতে নেটওয়ার্কের মাধ্যমে প্রেরণ করা বা ফাইল সিস্টেমে সংরক্ষণ করা যায়। RMI (Remote Method Invocation)-এ, Serialization ব্যবহৃত হয় রিমোট অবজেক্টের ডেটা ক্লায়েন্ট এবং সার্ভারের মধ্যে আদান-প্রদান করার জন্য।


Serialization এর প্রয়োজনীয়তা RMI তে

  1. Remote Communication:
    • ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা প্রেরণের জন্য Serialization প্রয়োজন হয়।
  2. Object Passing:
    • রিমোট মেথডের প্যারামিটার এবং রিটার্ন ভ্যালুকে serialize এবং deserialize করা হয়।
  3. Persistent Storage:
    • RMI-তে কোনো অবজেক্টের অবস্থা সংরক্ষণ করতে Serialization ব্যবহৃত হয়।

Serialization এর প্রক্রিয়া

  1. Serializable ইন্টারফেস:
    • অবজেক্ট serialize করতে হলে ক্লাসটিকে java.io.Serializable ইন্টারফেস ইমপ্লিমেন্ট করতে হয়।
  2. Object Serialization:
    • ObjectOutputStream ব্যবহার করে অবজেক্ট serialize করা হয়।
  3. Object Deserialization:
    • ObjectInputStream ব্যবহার করে অবজেক্ট deserialize করা হয়।

RMI এবং Serialization: উদাহরণ

1. Remote Interface তৈরি করা

import java.rmi.Remote;
import java.rmi.RemoteException;

// Remote Interface
public interface StudentService extends Remote {
    String registerStudent(Student student) throws RemoteException;
}

2. Serializable ক্লাস তৈরি করা

import java.io.Serializable;

// Serializable Class
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    private String name;
    private int rollNumber;

    // Constructor
    public Student(String name, int rollNumber) {
        this.name = name;
        this.rollNumber = rollNumber;
    }

    // Getters
    public String getName() {
        return name;
    }

    public int getRollNumber() {
        return rollNumber;
    }
}

3. Remote Object Implementation

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

// Remote Object Implementation
public class StudentServiceImpl extends UnicastRemoteObject implements StudentService {
    public StudentServiceImpl() throws RemoteException {
        super();
    }

    @Override
    public String registerStudent(Student student) throws RemoteException {
        System.out.println("Student Registered: " + student.getName() + ", Roll: " + student.getRollNumber());
        return "Student " + student.getName() + " registered successfully!";
    }
}

4. Server: Remote Object Bind করা

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server {
    public static void main(String[] args) {
        try {
            // Create Remote Object
            StudentServiceImpl studentService = new StudentServiceImpl();

            // Start RMI Registry
            Registry registry = LocateRegistry.createRegistry(1099);

            // Bind Remote Object
            registry.bind("StudentService", studentService);

            System.out.println("RMI Server is running...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5. Client: Serializable Object পাঠানো

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
    public static void main(String[] args) {
        try {
            // Locate RMI Registry
            Registry registry = LocateRegistry.getRegistry("localhost", 1099);

            // Lookup Remote Object
            StudentService studentService = (StudentService) registry.lookup("StudentService");

            // Create Serializable Object
            Student student = new Student("John Doe", 101);

            // Call Remote Method
            String response = studentService.registerStudent(student);
            System.out.println("Response from Server: " + response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Serialization এর কাজের ধাপ

  1. Serialization (Client Side):
    • ক্লায়েন্ট Student অবজেক্ট তৈরি করে।
    • অবজেক্টটি serialize হয়ে নেটওয়ার্কের মাধ্যমে সার্ভারে প্রেরিত হয়।
  2. Deserialization (Server Side):
    • সার্ভার প্রাপ্ত ডেটাকে deserialize করে Student অবজেক্টে রূপান্তরিত করে।
    • রিমোট মেথড প্রক্রিয়াটি চালায় এবং ফলাফল প্রদান করে।

Serialization এর সুবিধা

  1. Distributed Communication:
    • ডেটা বিনিময়ের মাধ্যমে ক্লায়েন্ট এবং সার্ভার সহজে যোগাযোগ করতে পারে।
  2. Object Persistence:
    • অবজেক্টের অবস্থা সংরক্ষণ করা যায়।
  3. Platform Independence:
    • Serialization প্ল্যাটফর্ম নিরপেক্ষ হওয়ায় এটি বিভিন্ন পরিবেশে কাজ করে।

Serialization সম্পর্কিত কিছু সীমাবদ্ধতা

  1. Security Concerns:
    • Untrusted ডেটা deserialize করা ঝুঁকিপূর্ণ হতে পারে।
  2. Performance Overhead:
    • Serialization এবং Deserialization প্রক্রিয়াটি কম সময় দক্ষ।

কোড কম্পাইল এবং চালানোর ধাপ

  1. কম্পাইল করা:

    javac *.java
    
  2. RMI Registry চালানো:

    rmiregistry 1099
    
  3. Server চালানো:

    java Server
    
  4. Client চালানো:

    java Client
    

Serialization RMI-তে রিমোট অবজেক্টের ডেটা আদান-প্রদান এবং মেথড কলের জন্য অপরিহার্য। উদাহরণটি দেখায় কীভাবে একটি Serializable অবজেক্ট (যেমন Student) তৈরি এবং রিমোট মেথডে ব্যবহার করা যায়। এটি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনের ডেটা হ্যান্ডলিং ক্ষমতাকে উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...