সুতরাং, একটি RESTful পরিষেবাটির শব্দভাণ্ডারে ক্রিয়াগুলির একটি নির্দিষ্ট সেট রয়েছে। একটি RESTful ওয়েব পরিষেবা এটিকে HTTP পদ্ধতি থেকে গ্রহণ করে। একটি নির্দিষ্ট শব্দভাণ্ডার সংজ্ঞায়িত করার জন্য কিছু অনুমিত সুবিধাগুলি রয়েছে তবে আমি সত্যিই বিষয়টিটি বুঝতে পারি না। কেউ এটি ব্যাখ্যা করতে পারে।
কেন প্রতিটি স্থির জন্য শব্দভাণ্ডারকে গতিশীলভাবে সংজ্ঞায়নের চেয়ে আরআরএসটি দ্বারা নির্ধারিত একটি নির্দিষ্ট শব্দভাণ্ডার ভাল? উদাহরণস্বরূপ, অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং একটি জনপ্রিয় দৃষ্টান্ত। আরপিসি স্থির ইন্টারফেস সংজ্ঞায়িত করার জন্য বর্ণনা করা হয়েছে, তবে কেন জানি লোকেরা ধরে নিচ্ছে যে আরপিসি এই প্রতিরোধগুলির দ্বারা সীমাবদ্ধ। একটি আরএসএফুল সার্ভিস যেমন এর বিষয়বস্তুর কাঠামোকে গতিশীলভাবে বর্ণনা করে আমরা গতিশীলভাবে ইন্টারফেসটি নির্দিষ্ট করতে পারি।
REST এর পক্ষে সুবিধাজনক বলে মনে করা হচ্ছে যে এটি শব্দভাণ্ডার না বাড়িয়েই বাড়তে পারে। RESTful পরিষেবাদি আরও সংস্থান যুক্ত করে গতিশীলভাবে বৃদ্ধি পায়। প্রতি-অবজেক্ট ভোকাবুলারি গতিশীলভাবে নির্দিষ্ট করে একটি পরিষেবা প্রসারিত করার কী এত ভুল? কেন আমরা কেবল সেই পদ্ধতিগুলি ব্যবহার করি না যা আমাদের বস্তুগুলিকে শব্দভাণ্ডার হিসাবে সংজ্ঞায়িত করা হয় এবং আমাদের পরিষেবাগুলি ক্লায়েন্টকে এই পদ্ধতিগুলি কী তা বর্ণনা করে এবং এর পার্শ্ব প্রতিক্রিয়া রয়েছে কি না?
মূলত আমি এই অনুভূতিটি পেয়েছি যে কোনও সার্ভারের সাইড রিসোর্স কাঠামোর বর্ণনাটি কোনও শব্দভান্ডারের সংজ্ঞার সমান, তবে আমরা তখন এই সংস্থাগুলির সাথে ইন্টারেক্ট করার জন্য সীমিত শব্দভাণ্ডারটি ব্যবহার করতে বাধ্য হই।
কোনও স্থির শব্দভাণ্ডার কী ক্লায়েন্টের উদ্বেগগুলি সার্ভারের উদ্বেগ থেকে সত্যই ডিউল করে দেয়? আমি অবশ্যই সার্ভারের কিছু কনফিগারেশনের সাথে উদ্বিগ্ন হতে হবে, এটি সাধারণত রেস্টস্টুল পরিষেবাদিতে রিসোর্সের অবস্থান। একটি গতিশীল শব্দভাণ্ডারের ব্যবহারের জন্য অভিযোগ করা অনুচিত বলে মনে হচ্ছে কারণ আমাদের কীভাবে কোনওভাবেই এই কনফিগারেশনটি বুঝতে হবে তা গতিশীলভাবে বলতে হবে। একটি রেস্টস্টুল সার্ভিস হাইপারমিডিয়ার মাধ্যমে অবজেক্ট স্ট্রাকচার সনাক্ত করে আপনি যে রূপান্তরগুলি করতে সক্ষম তা বর্ণনা করে।
আমি কেবল বুঝতে পারি না যে কোনও স্ব-বর্ণনামূলক গতিশীল শব্দভাণ্ডারের চেয়ে স্থির শব্দভাণ্ডারটি আরও ভাল কী করে তোলে, যা কোনও আরপিসির মতো পরিষেবায় সহজেই খুব ভালভাবে কাজ করতে পারে। এটি কি এইচটিটিপি প্রোটোকলের সীমাবদ্ধ শব্দভাণ্ডারের জন্য কেবলমাত্র যুক্তিযুক্ত যুক্তি?
প্রতিফলন
আমি আমার চিন্তাভাবনাগুলি পরিষ্কার করার জন্য যা করেছি তার থেকে কিছুটা ভাল। মনে করুন আপনি কোনও সাধারণ উদ্দেশ্য এপিআই ডিজাইন করছেন, এমনকি ওয়েব মুখোমুখিও নয়। আপনি কি খুশি হবেন যদি কেউ বলে যে আপনি কেবল নিজের বস্তুগুলিতে এই পদ্ধতির নাম ব্যবহার করতে পারেন? REST টি এইচটিটিপি-তে সীমাবদ্ধ নয়, তবে আপনি যে প্রতিটি এপিআই লিখেন, ওয়েব মুখোমুখি হন বা অন্যথায় কেবল পোষ্ট পুট এবং ডিলেট পদ্ধতি অনুসরণ করে এমন বস্তুর সমন্বিত পরিস্থিতিটি বিবেচনা করুন। সুতরাং যে অবজেক্ট.ফু পদ্ধতিটি আপনি সংজ্ঞায়িত করতে চেয়েছিলেন তা সম্ভব নয়। আপনাকে ফু নামে একটি নতুন অবজেক্টের সংজ্ঞা দিতে হবে এবং এর জিইটি পদ্ধতিতে কল করতে হবে। এটি মূলত কীভাবে আরএসটি কাজ করে, এবং এটি সম্পর্কে ভাবতে আমার একটু অস্বস্তি হয়। Foo কী করে তার সম্পর্কে আপনার আর কোনও জেনেরিক বোঝাপড়া নেই, আপনি মূলত পিতামাত্ত বস্তুতে একটি পদ্ধতি যা মূলত তার জন্য একটি নতুন অবজেক্ট তৈরি করতে বাধ্য হয়েছিল। তবুও আপনার এপিআই কম জটিল নয়, আপনি আরও অবজেক্ট তৈরি করে ইন্টারফেস জটিলতা লুকিয়ে আছে। RESTful ওয়েব পরিষেবাদি আমাদের এমন একটি ইন্টারফেস অবলম্বন করতে বাধ্য করে যা আমরা প্রকাশ করা API এর প্রসঙ্গে যথেষ্ট হতে পারে বা নাও পারে। সম্ভবত ওয়েব মুখোমুখি এপিআইগুলির সাথে এটি করার উপযুক্ত কারণ রয়েছে তবে প্রতিটি সাধারণ উদ্দেশ্য এপিআইতে প্রতিটি বস্তুর জন্য স্ট্যান্ডার্ড ইন্টারফেস গ্রহণ না করার একটি ভাল কারণ। একটি বাস্তব উদাহরণ প্রশংসা করা হবে।