RPC vs RMI
ძირითადი განსხვავება RPC-სა და RMI-ს შორის არის ის, რომ RPC არის მექანიზმი, რომელიც საშუალებას აძლევს პროცედურის გამოძახებას დისტანციურ კომპიუტერზე, ხოლო RMI არის RPC-ის განხორციელება java-ში. RPC არის ენაზე ნეიტრალური, მაგრამ მხარს უჭერს მხოლოდ პრიმიტიულ მონაცემთა ტიპებს. მეორეს მხრივ, RMI შემოიფარგლება ჯავაზე, მაგრამ საშუალებას აძლევს ობიექტების გადაცემას. RPC მიჰყვება ტრადიციული პროცედურული ენის კონსტრუქციებს, ხოლო RMI მხარს უჭერს ობიექტზე ორიენტირებულ დიზაინს.
რა არის RPC?
RPC, რომელიც ნიშნავს დისტანციური პროცედურის გამოძახებას, არის პროცესთაშორისი კომუნიკაციის ტიპი. ეს საშუალებას გაძლევთ გამოიძახოთ ფუნქცია სხვა პროცესში, რომელიც მუშაობს ადგილობრივ კომპიუტერზე ან დისტანციურ კომპიუტერზე.ეს კონცეფცია დიდი ხნის წინ გაჩნდა 1980 წელს, მაგრამ პირველი ცნობილი განხორციელება ნახეს Unix-ში.
RPC მოიცავს რამდენიმე ნაბიჯს. კლიენტი ჩვეულებისამებრ აკეთებს პროცედურულ ზარს ადგილობრივ კომპიუტერზე. მოდული, სახელწოდებით კლიენტი stub აგროვებს არგუმენტებს და ქმნის შეტყობინებას და გადასცემს ოპერაციულ სისტემას, ოპერაციული სისტემა აკეთებს სისტემურ ზარს და აგზავნის ამ შეტყობინებას დისტანციურ კომპიუტერზე. სერვერზე არსებული ოპერაციული სისტემა აგროვებს შეტყობინებას და გადასცემს სერვერის მოდულს, რომელსაც ეწოდება სერვერის ნაშთი. შემდეგ სერვერის stub იძახებს პროცედურას სერვერზე. საბოლოოდ, შედეგები უბრუნდება კლიენტს.
RPC გამოყენების უპირატესობა ის არის, რომ ის დამოუკიდებელია ქსელის დეტალებზე. პროგრამისტმა უბრალოდ უნდა დააკონკრეტოს აბსტრაქტული გზით, ხოლო ოპერაციული სისტემა იზრუნებს შიდა ქსელის დეტალებზე. ასე რომ, ეს აადვილებს პროგრამირებას და საშუალებას აძლევს RPC-ს იმუშაოს ნებისმიერ ქსელში, ფიზიკური და პროტოკოლური განსხვავებების მიუხედავად. RPC დანერგვა წარმოდგენილია ყველა ძირითად ოპერაციულ სისტემაში, როგორიცაა Unix, Linux, Windows და OS X. RPC ზოგადად ენაზე ნეიტრალურია, ამიტომ ის ზღუდავს მონაცემთა ტიპებს ყველაზე პრიმიტიულებზე, რადგან ისინი საერთო უნდა იყოს ყველა ენისთვის. RPC-ში მიდგომა არ არის ობიექტზე ორიენტირებული, მაგრამ ეს არის ტრადიციული პროცედურული მექანიზმი, როგორიცაა C..
რა არის RMI?
RMI, რომელიც ნიშნავს დისტანციური მეთოდის გამოძახებას, არის API (აპლიკაციის პროგრამირების ინტერფეისი), რომელიც ახორციელებს RPC-ს java-ში ობიექტზე ორიენტირებული ბუნების მხარდასაჭერად. ეს საშუალებას გაძლევთ გამოიძახოთ Java მეთოდები სხვა Java ვირტუალურ აპარატზე, რომელიც მდებარეობს იმავე კომპიუტერზე ან დისტანციურზე. RMI-ის შეზღუდვა არის ის, რომ მხოლოდ Java მეთოდების გამოძახებაა შესაძლებელი, მაგრამ ამას გააჩნია უპირატესობა, რომ ობიექტები შეიძლება გადაეცეს არგუმენტებად და დააბრუნოს მნიშვნელობები.როდესაც შესრულება განიხილება, RMI უფრო ნელია ვიდრე RPC Java-ის ვირტუალურ აპარატზე ბაიტეკოდის ჩართვის გამო, მაგრამ RMI ძალიან მოსახერხებელია პროგრამისტებისთვის და მისი გამოყენება ძალიან მარტივია.
RMI იყენებს ჩაშენებულ უსაფრთხოების მექანიზმებს Java-ში და ასევე იძლევა სოკეტების ქარხანას, რომელიც საშუალებას აძლევს არა-TCP სატრანსპორტო ფენის პერსონალური პროტოკოლების გამოყენებას. უფრო მეტიც, RMI გთავაზობთ მეთოდებს Firewall-ების გვერდის ავლით. ნაბიჯები, რომლებიც ხდება RMI-ში, RPC-ის მსგავსია. RMI-ის დანერგვა ზრუნავს შიდა ქსელის დეტალებზე, სადაც პროგრამისტმა არ უნდა იდარდოს მათზე.
რა განსხვავებაა RPC-სა და RMI-ს შორის?
• RPC არის ენის ნეიტრალური, ხოლო RMI შემოიფარგლება ჯავაზე.
• RPC არის პროცედურული, როგორც C-ში, მაგრამ RMI არის ობიექტზე ორიენტირებული.
• RPC მხარს უჭერს მხოლოდ პრიმიტიულ მონაცემთა ტიპებს, ხოლო RMI საშუალებას აძლევს ობიექტების გადაცემას არგუმენტებად და დაბრუნების მნიშვნელობებად. RPC-ის გამოყენებისას, პროგრამისტმა უნდა დაყოს ნებისმიერი რთული ობიექტი მონაცემთა პრიმიტიულ ტიპებად.
• RMI ადვილია RPC-ის დაპროგრამება.
• RMI უფრო ნელია ვიდრე RPC, რადგან RMI მოიცავს java ბაიტიკოდის შესრულებას.
• RMI იძლევა დიზაინის შაბლონების გამოყენებას ობიექტზე ორიენტირებული ბუნების გამო, ხოლო RPC-ს არ აქვს ეს შესაძლებლობა.
რეზიუმე:
RPC vs RMI
RPC არის ენის ნეიტრალური მექანიზმი, რომელიც საშუალებას იძლევა პროცედურის გამოძახება დისტანციურ კომპიუტერზე. თუმცა, ენის ნეიტრალური ფუნქცია ზღუდავს მონაცემთა ტიპებს, რომლებიც გადაეცემა არგუმენტებად და აბრუნებს მნიშვნელობებს პრიმიტიულ ტიპებს. RMI არის RPC-ის იმპლემენტაცია Java-ში და ის ასევე მხარს უჭერს ობიექტების გადაცემას, რაც აადვილებს პროგრამისტის ცხოვრებას. RMI-ის უპირატესობა არის ობიექტზე ორიენტირებული დიზაინის მხარდაჭერა, მაგრამ ჯავის შეზღუდვა არის მინუსი.