জিআরপিসি কীভাবে আরএসটি থেকে আলাদা?


98

আমি জিআরপিসির এই ব্যাখ্যাটি পড়ছি এবং এই চিত্রটি আগ্রহের বিষয়:

এখানে চিত্র বর্ণনা লিখুন

পরিবহন স্তর কীভাবে কাজ করে? যদি এটি নেটওয়ার্কের বাইরে থাকে ... তবে কেন এটি আরপিসি বলা হয়? আরও গুরুত্বপূর্ণভাবে, এটি কীভাবে আরএসটি থেকে আলাদা যে পরিষেবা-স্তরের (ক্লায়েন্টের ক্লাসে এমন একটি পদ্ধতি যা একটি HTTP অনুরোধ করে থাকে) প্রয়োগ করে?


20
It's যদি এটি নেটওয়ার্কের ওপরে থাকে ... কেন তাকে আরপিসি বলা হয় »- কারণ আরপিসি একটি দূরবর্তী প্রক্রিয়া কল এবং 'রিমোট' সম্পূর্ণরূপে 'অন্য হোস্টে' বোঝাতে পারে।
অরিদান

উত্তর:


107

পরিবহন স্তর টিসিপি / আইপি-র উপরে HTTP / 2 ব্যবহার করে কাজ করে। এটি নিম্ন লেটেন্সি (দ্রুত) সংযোগগুলির জন্য মঞ্জুরি দেয় যা ক্লায়েন্ট থেকে সার্ভারে একক সংযোগের সুবিধা নিতে পারে (যা সংযোগের আরও কার্যকরভাবে ব্যবহার করে এবং সার্ভার সংস্থানগুলির আরও দক্ষ ব্যবহারের ফলে তৈরি হতে পারে)।

এইচটিটিপি / 2 দ্বিদ্বি সংযোগ এবং অ্যাসিঙ্ক্রোনাস সংযোগকে সমর্থন করে। সুতরাং সার্ভারের পক্ষে ক্লায়েন্টের সাথে বার্তাগুলি প্রেরণের জন্য দক্ষতার সাথে যোগাযোগ করা সম্ভব হয়েছে (async প্রতিক্রিয়া / বিজ্ঞপ্তি ইত্যাদি))

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

+ ----------- + ---------------- +
| এইচটিটিপি ক্রিয়া | সিআরইউডি |
+ ----------- + ---------------- +
| জিইটি | পড়ুন |
| পুট | আপডেট / প্রতিস্থাপন |
| প্যাচ | আপডেট / পরিবর্তন করুন |
| মোছা | মুছুন |
+ ----------- + ---------------- +

যদিও জিআরপিসি আপনি সিঙ্ক্রোনাস / অ্যাসিঙ্ক্রোনাস, ইউনি-দিকনির্দেশ / দ্বিদ্বিতীয় (স্ট্রিম) ইত্যাদি সহ যে কোনও ধরণের ফাংশন কলগুলি সংজ্ঞায়িত করতে পারেন whereas

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

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


4
সুতরাং, দ্রুত প্রশ্ন: REST এ আপনি যে কোনও ধরণের ফাংশন কল করতে পারেন। উদাহরণস্বরূপ, কারাগারে আমি জিইটি অনুরোধটি একটি শেষ পয়েন্টে প্রেরণ করতে পারি যা অ-বিশ্রামযোগ্য এবং কেবল একটি উত্স প্রাপ্ত ছাড়াও কিছু করতে পারি। আমি অ-রেস্টস্টুল এন্ডপয়েন্ট থেকে সত্যিই কোনও ফাংশন শুরু করতে পারি। আমি REST এ পরিষেবাগুলিও তৈরি করতে পারি যা স্থানীয় পদ্ধতিতে কল করছে বলে মনে হচ্ছে তবে প্রকৃতপক্ষে হুডের নীচে একটি শেষ পয়েন্টে একটি http কল করছে। পার্থক্যগুলি এতটা দুর্দান্ত নয় যে তারা হ'ল ... কমপক্ষে পরিবহণ স্তরে। তারা নাকি?
Jwan622

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

: এখানে gRPC একটা চমৎকার ইন্ট্রো হয় medium.com/square-corner-blog/grpc-reaches-1-0-85728518393b এখানে gRPC একটি ডেমো হয়: github.com/mmcc007/go
mmccabe

4
জওয়ান 22২২ এবং মিম্পকেবি: সুপারগ্লিউ ২.১ লাইব্রেরি ব্যবহার করে আমি আপেল এবং কমলা দিয়ে একটি বাড়ি তৈরি করতে পারি। কিছু সময়ে, আমাদের কাজের জন্য সঠিক সরঞ্জামটি নির্বাচন করতে হবে এবং সর্বদা আমাদের সফ্টওয়্যার সিস্টেমের জটিলতা হ্রাস করতে হবে। মনে রাখবেন, কোড অপসারণ সর্বদা একটি পারফরম্যান্স অপটিমাইজেশন;)
মার্টিন অ্যান্ডারসন

4
আমার দৃষ্টিকোণ থেকে, RESTful API এর মতো স্টাফগুলি সর্বদা পুরানো প্রোটোকলগুলিতে চালানোর জন্য "হ্যাক" হয়ে থাকে। যদি এমন কিছু কিছু আসে যা আমাকে আধুনিক ভাষার জন্য আরও উপযুক্ত একটি স্ট্যাক ব্যবহার করতে দেয় এবং এখনও অজ্ঞায়িত হতে পারে যে কোনও ভাষা কোনও ক্লায়েন্টের দ্বারা বিশেষত ব্যবহৃত হচ্ছে এবং নাটকীয়ভাবে পারফরম্যান্স বাড়িয়ে তুলবে, তবে আমি ব্যান্ডওয়্যাগনে ঝাঁপিয়ে প্রথম ব্যক্তি হতে চলেছি!
মার্টিন অ্যান্ডারসন

44

REST এর জন্য JSON বা HTTP / 1.1 প্রয়োজন হয় না

আপনি তুচ্ছভাবে একটি RESTful পরিষেবা তৈরি করতে পারেন যা HTTP / 2 এর মাধ্যমে প্রোটবুফ বার্তা (বা যাই হোক না কেন) প্রেরণ করে

আপনি RESTful পরিষেবাগুলি তৈরি করতে পারেন যা HTTP / 2 এর মাধ্যমে JSON প্রেরণ করে

আপনি RESTful পরিষেবাগুলি তৈরি করতে পারেন যা HTTP / 1.1 এর মাধ্যমে প্রোটবুফ বার্তা প্রেরণ করে

এইচটিটিপি / এক্সএক্সের উপরে আরএসএফএল পরিষেবাগুলি কোনও "হ্যাক" নয়, তারা এইচটিটিপি-র যে কোনও সংস্করণকে সফল করে তুলেছে এমন মৌলিক আর্কিটেকচারাল প্রিন্সিপালগুলির নিম্নলিখিত পরিষেবাগুলি (যেমন জিইটি অনুরোধের ক্যাশেযোগ্যতা এবং পিইটি অনুরোধগুলির পুনরায় খেলনা)।

জিআরপিসি, এসওএপি, এবং আল হ্যাকের মতো আরও রয়েছে - এইচটিটিপি-র উপরে আরপিসি-স্টাইল পরিষেবাদি সুরক্ষিত করতে ফায়ারওয়াল এবং মিডলবক্স বিধিনিষেধকে ঘুরিয়ে দেওয়ার জন্য এইচটিটিপি-র উপরে হ্যাক। এটি অগত্যা কোনও খারাপ জিনিস নয়। কখনও কখনও আপনি একটি বিশ্রামের পরিবর্তে আরপিসি-স্টাইলের পরিষেবাটি পেতে পারেন এবং আমরা এমন এক পৃথিবীতে বাস করব যেখানে মিডলবক্সগুলি প্রতিস্থাপন করা শক্ত।

আপনার কাছে আরইএসটি-র প্রকৃত সংজ্ঞাটি পড়ার সময় না থাকলে: https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

সবসময় টিএলডিআর থাকে; উইকিপিডিয়ায় সংস্করণ:

https://en.wikedia.org/wiki/Repstreamational_state_transfer

আপনার যদি আরপিসি-স্টাইলের পরিষেবা প্রয়োজন তবে অবশ্যই জিআরপিসি দুর্দান্ত। আপনি যদি ওয়েবে বেঁচে থাকতে চান বা আপনি একটি রেস্টস্টুল স্টাইল পরিষেবাদির সাথে আসা সমস্ত সুবিধা চান তবে একটি রেস্টস্টুল স্টাইল পরিষেবা তৈরি করুন। এবং আপনার বিশ্রাম পরিষেবাতে যদি JSON ফর্ম্যাটে ডেটা সিরিয়ালাইজ / ডিজিটাইরিজ করতে খুব ধীর হয়, তবে প্রোটোবুফ বা যে কোনও কিছু ব্যবহার করা একেবারে ঠিক।

জিআরপিসি যদি কোনও কিছুর সংস্করণ 2 হয় তবে এটি এসওএপি-র একটি সংস্করণ 2। একটি যা এসওএপি-এর মতো ভয়ানক নয়।

এবং, না, আপনি আপনার জিইটি অনুরোধে কেবল "কোনও ফাংশন কল" করতে পারবেন না, এবং একটি রেস্ট্রুলফুল সার্ভিস পাবেন।

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

এখন আমার এসওএপি বক্স থেকে সরে যাচ্ছেন ..;)


আপনি কি বোঝাচ্ছেন যে জিআরপিসি ব্যবহার করে একটি রেস্টস্টুল সার্ভিস তৈরি করা যায় না?
কেভিন এস

4
ফিল্ডিংয়ের গবেষণামূলক প্রবন্ধটি উদ্ধৃত করে আরটিএফএম ওভারকিল ছিল, তবে অন্যথায় দুর্দান্ত সাড়া ফেলেছে।
rmharrison

4

আরআরএসটি-র উপরে জিআরপিসির সবচেয়ে বড় সুবিধা হ'ল দাদা এইচটিটিপি ১.১ এর চেয়ে এইচটিটিপি / ২ এর সমর্থন। তারপরে এইচটিটিপি ১.১-এর চেয়ে এইচটিটিপি / ২ এর সবচেয়ে বড় সুবিধাটি হ'ল, 'এইচটিটিপি / ২ সার্ভারকে সামগ্রী "ধাক্কা" দিতে দেয় ...


4
সার্ভার পুশ HTTP / 2 প্রয়োজন হয় না।
রবিন সবুজ

আপনি আরো নির্দিষ্ট হতে পারে? এইটাই
ডেনিস ওয়াং

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

4
gRPC সার্ভার HTTP- র / 2 "পুশ এবং gRPC ক্লায়েন্ট উপেক্ষা HTTP- র / 2" পুশ ধাক্কা "। সুতরাং gRPC এর সুফল HTTP- র কাছ থেকে উত্তরাধিকারসূত্রে / 2 অন্তর্ভুক্ত করবেন উচিত" পাঠায় না "।
user675693

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

0

আমি সবসময় জিআরপিসি এবং আরআরএসটি একেবারে দুটি পৃথক জিনিস অনুভব করি।

রিসোর্স ওরিয়েন্টেড পরিষেবাদির জন্য সেরা। অন্যথায় আমরা উচ্চ পারফরম্যান্সের জন্য জিআরপিসি ব্যবহার করতে পারি।

REST হ'ল ইন্টারনেট স্তর, এটি আমাদের পরিষেবাদির সাথে শেষ ব্যবহারকারী আলাপের জন্য। জিআরপিসি হ'ল ইন্ট্রানেট স্তর, এটি অভ্যন্তরীণ পরিষেবার জন্য একে অপরের সাথে কথা বলার জন্য।

REST এর অনুসরণের জন্য অ্যাপ্লিকেশন শব্দার্থবিদ্যা রয়েছে। জিআরপিসি কিছুই সরবরাহ করেনি, আপনার স্ক্র্যাচ থেকে সবকিছু তৈরি করা উচিত।

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