সমস্যা বিবরণ
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 বেশি ব্যবহৃত হয়।