ওয়েব অ্যাপ্লিকেশনগুলিতে আরপিসির মতো ব্যবস্থার পরিবর্তে কেন REST সাধারণত ব্যবহৃত হয়?


18

আমি খুব সম্প্রতি এমন একটি সংস্থাতে শুরু করেছি যা তাদের ওয়েব অ্যাপ্লিকেশনগুলির জন্য একটি অস্বাভাবিক কাস্টম কাঠামো ব্যবহার করে, কমপক্ষে আমার জানা সাধারণ ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্কের তুলনায়। একটি রেস্টস্টুল ওয়েববার্সের পরিবর্তে সার্ভারের সাথে যোগাযোগের জন্য একটি আরপিসি প্রক্রিয়া ব্যবহৃত হয়।

সার্ভারের সাথে যোগাযোগ করা একটি সাধারণ ফাংশন কলের মতো দেখায়, তবে ক্রিয়াকলাপটি ক্লায়েন্ট নয়, সার্ভারে কার্যকর করা হয়। সার্ভার-সাইডে ক্লায়েন্ট কল করতে পারে কোন ফাংশনগুলি নির্ধারণ করার একটি উপায় রয়েছে। এটি কীভাবে http অনুরোধগুলিতে অনুবাদ করা হয়েছে তার বিশদ সম্পূর্ণরূপে বিমূর্ত করা হয়।

আমি এখন এটি কেবল অল্প সময়ের জন্য ব্যবহার করেছি তবে এটি বেশ সুবিধাজনক বলে মনে হচ্ছে। তবে আমি ভাবছি যে এই পদ্ধতির কোন ত্রুটিগুলি আমি অনুপস্থিত। অন্য প্রত্যেকে এটি আলাদাভাবে করছে বলে মনে হয়, যা সাধারণত আমার জন্য একটি চিহ্ন যে আমি সম্ভবত বোকামি বা উজ্জ্বল কিছু করছি যা পূর্ববর্তীটির সাথে অনেক বেশি প্রতিকূলতার সাথে রয়েছে।


5
আমি অনুমান করব (তবে আমি ১০০% নিশ্চিত নই তাই আমি এটিকে কেবল একটি মন্তব্য হিসাবে রেখে দেব এবং যারা সত্যই তাদের জিনিসগুলি জানে তাদের সঠিক উত্তর পোস্ট করতে দেবে) যে আরআরসিটি আরপিসির চেয়ে বেশি ব্যবহৃত হয় কারণ REST ইন্টারফেসগুলি সাধারণত কার্যকর করা সহজ হয় , এবং নির্দিষ্ট অন্তর্নিহিত ফ্রেমওয়ার্ক / প্রযুক্তির উপর কম নির্ভরশীল।
FrustratedWithFormsDesigner

11
আমার ছাপটি হ'ল বেশিরভাগ আরএসইটি গ্রাহকরা কেবলমাত্র আরএসটি-র তুলনায় একটি সাধারণ http + json API রাখার বিষয়ে বেশি যত্নশীল।
কোডসইনচাউস

4
কারণ পুরো ইন্ডাস্ট্রি পাগল হয়ে গেছে।
মাইক নাকিস

এটা আপনি স্বার্থ হতে পারে stackoverflow.com/q/15056878/5934037
Laiv

1
বিতর্কিত মতামত: বেশিরভাগ ক্ষেত্রেই আরইএসটি এবং আরপিসির মধ্যে পার্থক্য বেশিরভাগই একাডেমিক।
হোসাইম করুন

উত্তর:


33

REST ওয়েবের জন্য ডিজাইন করা হয়েছিল, এবং ওয়েবটি REST এর জন্য ডিজাইন করা হয়েছিল। দুজনে একসাথে ফিট হবে। রায় ফিল্ডিংয়ের 2000 পিএইচডি থিসিস আর্কিটেকচারাল স্টাইলস এবং নেটওয়ার্ক-ভিত্তিক সফটওয়্যার আর্কিটেকচারের ডিজাইনটি REST শব্দটি সংজ্ঞায়িত এবং প্রবর্তন করেছিল , এবং ওয়েব এবং আরইএসটি-র মধ্যে উল্লেখযোগ্য ইন্টারপ্লে রয়েছে: রয় ফিল্ডিং এইচটিটিপি / ১.১ এ কাজ করেছিলেন, যার মধ্যে তিনি প্রাথমিক লেখক, এবং তিনি তাঁর গবেষণামূলক প্রবন্ধে বিশ্রামের বর্ণনা দেওয়ার জন্য তিনি যা শিখেছিলেন তা ব্যবহার করেছিলেন।

সুতরাং, ওয়েব এবং আরআরএসটি এত ভালভাবে একসাথে যাওয়ার সহজ কারণ হ'ল ওয়েব কীভাবে কাজ করে তা থেকে আরইএসটি-এর সংজ্ঞাটি বের করা হয়েছিল এবং ওয়েবটি আরএসটি-র একটি বাস্তবায়ন।

আর এজন্যই ওয়েব সার্ভিসেস এবং ওয়েব অ্যাপ্লিকেশনগুলির জন্য আরএসইএসটি একটি ভাল ফিট: কারণ আপনি কেবল একই জিনিসগুলি করেন যা ইতিমধ্যে "মানব" ওয়েবে কাজ করার প্রমাণিত হয়েছে এবং সেগুলি "মেশিন" ওয়েবে প্রয়োগ করে।

বড় আরপিসি (তার উপর নির্ভর করে সঙ্গে সমস্যা সঠিক বাস্তবায়ন) এ মূলত এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ ডিস্ট্রিবিউটেড কম্পিউটিং এর Fallacies , যা আরো বিস্তারিত ব্যাখ্যা করা আছে whitepaper অর্ণোন Rotem-গালা-অজ এই :

  1. নেটওয়ার্কটি নির্ভরযোগ্য
  2. দেরী শূন্য
  3. ব্যান্ডউইথ অসীম
  4. নেটওয়ার্কটি সুরক্ষিত
  5. টপোলজি পরিবর্তন হয় না
  6. একজন প্রশাসক আছেন
  7. পরিবহন ব্যয় শূন্য
  8. নেটওয়ার্কটি সমজাতীয়

এগুলি সমস্ত অনুমান যা নতুনরা সাধারণত বিতরণ সিস্টেম তৈরি করা শুরু করার সময় করে। অবশ্যই, তাদের সব মিথ্যা। এবং বিতরণকারী সিস্টেমগুলি তৈরি করার সময় আপনার সকলকে অ্যাকাউন্টে নেওয়া উচিত।

অনেকগুলি আরপিসি বাস্তবায়নে সমস্যা হ'ল তারা দূরবর্তী কলগুলি স্থানীয় কলগুলির মতো দেখানোর চেষ্টা করে। তবে এগুলি একরকম কিছুই নয়:

  • একটি স্থানীয় কল কখনও ব্যর্থ হয় না; সাবরুটিন আপনি ব্যর্থ হতে পারে বলা হয়, কিন্তু কল নিজেই কখনও করে - একটি দূরবর্তী কল নেটওয়ার্কে হারিয়ে পারে
  • একটি স্থানীয় কল তাত্ক্ষণিক হয়; সাবরুটিন (যদি এটি একটি অসীম লুপ আটকে পায় এমনকি চিরতরে বা) আপনি নামক একটি দীর্ঘ সময়ের জন্য চালানো হতে পারে, কিন্তু কল নিজেই কোন সময় এ সব (অবশ্য CPU নির্দেশিকার একটি থাবা সর্বাধিক, লাগে কম যদি কল ইনলাইনড, তবে এটি খুব দ্রুত) - একটি দূরবর্তী কলটি দীর্ঘ সময় ধরে নেটওয়ার্কে আটকে যেতে পারে
  • সাব্রোটিন যদি স্বাভাবিকভাবে ফিরে আসে তবে ফলাফলটি সর্বদা ফিরে আসে - একটি রিমোট কল দিয়ে, ফলাফলটি নেটওয়ার্কে হারিয়ে যেতে পারে
  • রিটার্নগুলি তাত্ক্ষণিক হয় - দূরবর্তী ফলাফলগুলি দীর্ঘ সময় ধরে নেটওয়ার্কে ভ্রমণ করতে পারে
  • আমি যদি একবার সাবউরটিন কল করি তবে এটি ঠিক একবারে চলবে - একটি রিমোট কল নেটওয়ার্কে হারিয়ে যেতে পারে, বা নকল হয়ে যায় যাতে দূরবর্তী রুটিনটি 0 থেকে যে কোনও সংখ্যক বারের মধ্যে চলতে পারে may
  • আমি ঠিক একটি ফলাফল ফিরে পেয়েছি - একটি দূরবর্তী ফলাফল হারিয়ে যেতে পারে বা নকল হতে পারে, সুতরাং আপনি ফলাফল 0 বা আরও বেশি বার পেতে পারেন
  • আমি যদি সাবউরটিনকে দু'বার কল করি তবে আমি দুটি ফলাফল পেয়েছি এবং দ্বিতীয় কলের ফলাফলের আগে প্রথম কলটির ফলাফল পেয়েছি - আপনি সম্ভবত এটি এখনই অনুমান করতে পারেন: আরপিসির সাহায্যে আপনি কোনও ফলাফল ফিরে পাবেন না, কেবলমাত্র প্রথম , বা কেবল দ্বিতীয়, বা প্রথমটির আগে দ্বিতীয়টি, বা প্রথমটি হারিয়ে যেতে পারে এবং আপনি দ্বিতীয়টি দু'বার পেয়েছেন, বা অন্য পথে, এবং আরও কিছু…
  • যদি আমি ফোন করি aএবং তারপরে b, আমি ফলাফলটি পেয়েছি aএবং তারপরে ফলাফলটি b - এটি আরপিসির সাথে পূর্ববর্তী পয়েন্টটির আরও সাধারণ সংস্করণ, আপনি কোনও ক্রমে 0 বা ততোধিক বার দুটি উত্তর পেতে পারেন

আপনি হবে একটি দূরবর্তী কলের জন্য উপরের সব সাথে মোকাবিলা করতে হবে। তবে যদি আপনার কাঠামোটি দূরবর্তী কলগুলি স্থানীয় কলগুলি থেকে পৃথক করে তোলে, তবে আপনি পারবেন না , কারণ আপনি জানেন না কোনটি দূরবর্তী কল। ফ্রেমওয়ার্কটি আপনার জন্য সেগুলির সমস্তগুলি চেষ্টা করতে ও পরিচালনা করতে পারে তবে সমস্যাটি হ'ল: ফ্রেমওয়ার্কটি আপনার সিস্টেম হিসাবে আপনার মতো তেমন কিছুই জানে না। এটি জানা নেই যে এমন কোনও কল রয়েছে যেখানে এটি একবারে একবারে হারিয়ে গেলে আসলে কী আসে যায় তা নয়। সুতরাং, কাঠামোটি খুব প্রতিরক্ষামূলক হতে হবে, এবং এটি বিলম্ব এবং ব্যান্ডউইথের ক্ষেত্রে ব্যয়বহুল।

বিশেষত যেহেতু কাঠামোটি আসলে আপনাকে রক্ষা করতে পারে নাক্যাপ উপপাদ্য বলছেন যে বন্টিত ব্যবস্থা, সামঞ্জস্যপূর্ণ পাওয়া যায়, এবং দেশভাগের সহনশীল একই সময়ে হতে পারে না; আরও স্পষ্ট করে বলা হয়েছে যে, একবার পার্টিশন হওয়ার পরে সিস্টেমটি ধারাবাহিক এবং উপলব্ধ উভয়ই হতে পারে না, এটির একটি বেছে নিতে হবে (জনপ্রিয় বিশ্বাসের বিপরীতে, উপপাদ্যটি বলে না যে সিস্টেম চলমান অবস্থায় আপনি তিনটিই রাখতে পারবেন না) স্বাভাবিকভাবে, আপনি করতে পারেন সব তিনটি আছে; কিন্তু একবার আপনি একটি বিভাজন আছে, তবে আপনি অন্য দুটি কোন একটি বেছে নিন আছে)। PACELC উপপাদ্য দেখাচ্ছে যে এমনকি যখন সিস্টেম কাজ করছে, আপনি ট্রেড বন্ধ করার বনাম সমন্নয় অদৃশ্যতা আছে দ্বারা ক্যাপ উপপাদ্য প্রসারিত করে।

এগুলি গুরুত্বপূর্ণ ট্রেড-অফস যা ফ্রেমওয়ার্কটি আপনাকে রক্ষা করতে পারে না, কারণ তারা ডোমেন-নির্দিষ্ট এবং মূল নকশায় গুরুত্বপূর্ণ important

এরলংয়ের মতো পদ্ধতির সাথে এটির বিপরীতে বিপরীত হন, যা কাজ করে: এরলং-এ, সমস্ত বার্তা প্রেরণকে স্থানীয় হলেও, এটি দূরবর্তী হিসাবে বিবেচনা করা হয়। এর অর্থ আপনি উপরের সমস্ত সমস্যা (এবং আরও অনেকগুলি) মোকাবেলা করতে সর্বদা প্রস্তুত রয়েছেন। স্থানীয় প্রসেসের জন্য, এই না , একটি ওভারহেড একটি সামান্য বিট জাহির যদিও। এটিকে সহায়তা করার জন্য, ত্রুটি পরিচালনা ও তদারকির জন্য মোকাবেলার জন্য দুর্দান্ত সরঞ্জামাদি, ফ্রেমওয়ার্ক, গ্রন্থাগারগুলি, নিদর্শনগুলি এবং আইডিয়ামগুলি রয়েছে।

আপনার আরপিসি কাঠামোটি বিশেষত কীভাবে কাজ করে এবং আপনি কোন ভাষা বা গ্রন্থাগার ব্যবহার করছেন তা বর্ণনা করেননি তবে আমার দৃ strong় সন্দেহ রয়েছে যে এটি "নেটওয়ার্কের অস্তিত্ব নেই" প্রকারের সাথে সম্পর্কিত। যারা শুধু কাজ করে না। এটা ঠিক আছে চিকিত্সা করে স্থানীয় এবং দূরবর্তী কলের মধ্যে পার্থক্য মুছে ফেলার জন্য সবকিছু হিসেবে দূরবর্তী কল। এটা বিমূর্ত অন্যান্য উপায় কাছাকাছি অত্যধিক করছেন: নেটওয়ার্কের হয় আপনি এটা বিমূর্ত দূরে, আপনি বিমূর্ত দূরে কিছু যদি আপনি আসলে, আপনার সিস্টেমের অংশ প্রয়োজন সম্পর্কে জানা।

এখন, আপনাকে বিশেষভাবে আরআরএসটি ব্যবহার করতে হবে বা না, এটি সম্পূর্ণ ভিন্ন প্রশ্ন। আমি উপরে বর্ণিত, ওয়েব বাকি জন্য পরিকল্পনা করা হয়েছিল এবং বিশ্রাম ওয়েবের জন্য পরিকল্পনা করা হয়েছিল, দুই যাতে না জানার একসঙ্গে, কিন্তু আপনি অন্য স্থাপত্য শৈলী ব্যবহার করতে পারেন, যদি আপনি চান। তবে আপনার প্রশ্নের কমপক্ষে একটি অংশ "আরপিসি কেন নয়" সম্পর্কে ছিল এবং আমি উপরের কারণগুলি উল্লেখ করেছি, আরও স্পষ্টভাবে আমি ব্যাখ্যা করেছি যে আপনি যে ধরণের আরপিসি ব্যবহার করছেন বলে সন্দেহ করছেন তা আপনাকে সমস্যার মধ্যে ফেলতে পারে।


মানিককরণও কি সমস্যা নয় (এইচটিটিপি এবং আরপিসির মধ্যে 1: 1 ম্যাপিং দেওয়া নেই)?
জিমি টি।

ওয়েল, সেখানে অভিনেতা মডেল অবকাঠামো হয় যে ঠিকানা সমস্ত এইসব সমস্যার।
রবার্ট হার্ভে

অবশ্যই, এটি সমস্ত কিছু উদ্যোগী ব্যক্তি যাঁরা আরইএসটি ইন্টারফেসের উপর বিমূর্ত স্তর তৈরি করতে আগ্রহী এবং এটি কোনও আরপিসি ইন্টারফেস থেকে দ্রুত পার্থক্যযোগ্য হয়ে ওঠে।
হোসাইম করুন

1
বিতরণ করা কম্পিউটিংয়ের আরেকটি ত্রুটি: ক্লায়েন্ট এবং সার্ভারগুলি একই সাথে আপডেট হয়।
জ্যাক

@ জ্যাক: এটি "কেবলমাত্র একজন প্রশাসক আছে" ভ্রান্তি দ্বারা গ্রহন করা হয়েছে। হাইটপেপারে এটি উল্লেখ করা হয়েছে:…
জার্গ ডব্লু মিটাগ

5

মন্তব্যে ইতিমধ্যে বেশ কয়েকটি ভাল ধারণা রয়েছে, যা আমি এখানে পুনরাবৃত্তি করব:

  1. আরপিসি সাধারণত প্রযুক্তি-নির্দিষ্ট।
  2. বিকাশকারীরা বেশিরভাগ ক্ষেত্রে আগ্রহী জেএসওএন, বিশ্রাম নয়।

জেএসএনের কয়েকটি খুব সুন্দর গুণ রয়েছে। এটি সহজ, কোনও মানুষের পক্ষে পড়া সহজ, কম্পিউটারের বিশ্লেষণের পক্ষে সহজ এবং জাভাস্ক্রিপ্ট তাত্ক্ষণিকভাবে এটিকে স্থানীয়ভাবে স্বীকৃতি দেয় (এটি হ'ল, জাভাস্ক্রিপ্ট অবজেক্ট স্বরলিপি)।

আপনি যদি REST এর মতো প্রতিবন্ধকতাগুলি অগ্রাহ্য করতে ইচ্ছুক হন তবে আপনি JSON এর সাথে রিমোট প্রসেসি কলগুলি সহ প্রায় যা কিছু করতে পারেন। আপনাকে যা করতে হবে তা হ'ল একটি উপযুক্ত প্রোটোকল স্থাপন করা। আসলে, এই জাতীয় প্রোটোকল ইতিমধ্যে বিদ্যমান: জেএসএন-আরপিসি।

--> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
<-- {"jsonrpc": "2.0", "result": 19, "id": 1}

-1

আরপিসি এবং আরআরটি হ'ল বিযুক্তি এবং কনসগুলির সাথে ভিন্ন ভিন্ন পদ্ধতি এবং উভয়ই প্রসঙ্গের উপর নির্ভর করে মূল্যবান। আরআরসিটি সম্পদগুলির সাথে কাজ করার জন্য সর্বোত্তমভাবে বর্ণিত হয়েছে, যেখানে আরপিসি হিসাবে ক্রিয়াকলাপগুলি সম্পর্কে আরও বেশি। আরপিসি ক্লায়েন্টরা বেশ কয়েকটি উপায়ে পরিষেবা প্রয়োগের সাথে শক্তভাবে মিলিত হয়েছে এবং ক্লায়েন্টকে না ভেঙে পরিষেবা বাস্তবায়ন পরিবর্তন করা খুব কঠিন হয়ে পড়ে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.