কম্পিউটার টিউটোরিয়াল

পাইথনে XML-RPC সার্ভার ও ক্লায়েন্ট মডিউল ব্যবহার করে ক্রস-প্ল্যাটফর্ম RPC সার্ভিস তৈরি করুন

সমস্যা বিবরণ

XML-RPC হলো একটি রিমোট প্রোসিজার কল (RPC) প্রোটোকল যা XML ব্যবহার করে ডেটা এনকোড করে এবং HTTP ব্যবহার করে ট্রান্সপোর্ট করে। পাইথনের xmlrpc.server এবং xmlrpc.client মডিউল দিয়ে সহজে ক্রস-প্ল্যাটফর্ম, ল্যাঙ্গুয়েজ-ইনডিপেনডেন্ট RPC সার্ভার ও ক্লায়েন্ট তৈরি করা যায়।

সার্ভার সাইড কোড

from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler

class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)

with SimpleXMLRPCServer(('localhost', 9000), requestHandler=RequestHandler) as server:
    # ইনট্রোসপেকশন ফাংশনস রেজিস্টার করুন (system.listMethods ইত্যাদি)
    server.register_introspection_functions()
    
    # বিল্ট-ইন len() ফাংশন রেজিস্টার করুন
    server.register_function(len)
    
    # কাস্টম ফাংশন রেজিস্টার করুন (ব ভিন্ন নাম দিয়ে)
    @server.register_function(name='rmndr')
    def remainder_function(x, y):
        return x // y  # পূর্ণসংখ্যা ভাগফল
    
    # কাস্টম ফাংশন রেজিস্টার করুন (ফাংশন নাম দিয়ে)
    @server.register_function
    def modl(x, y):
        return x % y  # মডুলো
    
    print("XML-RPC সার্ভার পোর্ট ৯০০০-এ চালু হয়েছে...")
    server.serve_forever()

ক্লায়েন্ট সাইড কোড

import xmlrpc.client

# সার্ভার প্রক্সি তৈরি করুন
s = xmlrpc.client.ServerProxy('https://localhost:9000')

# রিমোট ফাংশন কল করুন
print("len('Tutorialspoint'):", s.len("Tutorialspoint"))
print("rmndr(12, 5):", s.rmndr(12, 5))
print("modl(7, 3):", s.modl(7, 3))

# উপলব্ধ মেথড লিস্ট দেখুন
print("উপলব্ধ মেথড:", s.system.listMethods())

আউটপুট (ক্লায়েন্ট সাইড)

len('Tutorialspoint'): 14
rmndr(12, 5): 2
modl(7, 3): 1
উপলব্ধ মেথড: ['len', 'modl', 'rmndr', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']

ব্যাখ্যা

  • SimpleXMLRPCServer: বিল্ট-ইন HTTP সার্ভার যা XML-RPC রিকোয়েস্ট হ্যান্ডেল করে।
  • register_function: পাইথন ফাংশনকে RPC মেথড হিসেবে এক্সপোজ করে।
  • ServerProxy: ক্লায়েন্ট সাইডে রিমোট অবজেক্টের প্রক্সি, যেন লোকাল ফাংশন যেন কল করা হচ্ছে।
  • ক্রস-ল্যাঙ্গুয়েজ: এই সার্ভারকে Java, C#, PHP, JavaScript যেকোনো ল্যাঙ্গুয়েজ থেকে কল করা যায়।

সুরক্ষা নোট

প্রোডাকশনে HTTPS, অথেন্টিকেশন, রেট লিমিটিং ইত্যাদি যোগ করুন। XML-RPC কিছুটা পুরানো প্রোটোকল, আধুনিক অ্যাপে JSON-RPC, gRPC, REST API বেশি ব্যবহৃত হয়।

  1. লিনাক্স CentOS/RHEL-এ NFS সার্ভার এবং ক্লায়েন্ট কনফিগারেশন

  2. পাইথনে কোরিলেশন এবং রিগ্রেশন

  3. পাইথন মডিউল এবং তাদের ডিপেন্ডেন্সি সহজে ইনস্টল করা

  4. <code>json</code> এবং <code>simplejson</code> পাইথন মডিউলের পার্থক্য