ความแตกต่างระหว่าง RPC และ RMI
เนื้อหา
- แผนภูมิเปรียบเทียบ
- คำจำกัดความของ RPC
- มาทำความเข้าใจถึงวิธีการใช้งาน RPC ผ่านขั้นตอนที่กำหนด:
- คำจำกัดความของ RMI
- ข้อสรุป
RPC และ RMI เป็นกลไกที่ช่วยให้ลูกค้าสามารถเรียกขั้นตอนหรือวิธีการจากเซิร์ฟเวอร์ผ่านการสร้างการสื่อสารระหว่างลูกค้าและเซิร์ฟเวอร์ ความแตกต่างทั่วไประหว่าง RPC และ RMI คือ RPC รองรับเท่านั้น การเขียนโปรแกรมตามขั้นตอน ในขณะที่ RMI รองรับ การเขียนโปรแกรมเชิงวัตถุ.
ความแตกต่างที่สำคัญอื่น ๆ ระหว่างสองคือพารามิเตอร์ที่ส่งผ่านไปยังการเรียกขั้นตอนระยะไกลประกอบด้วย โครงสร้างข้อมูลสามัญ. ในขณะที่พารามิเตอร์ที่ส่งไปยังวิธีการระยะไกลประกอบด้วย วัตถุ.
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | RPC | RMI |
---|---|---|
รองรับ | ขั้นตอนการโปรแกรม | การเขียนโปรแกรมเชิงวัตถุ |
พารามิเตอร์ | โครงสร้างข้อมูลทั่วไปจะถูกส่งไปยังกระบวนการระยะไกล | วัตถุถูกส่งผ่านไปยังวิธีการระยะไกล |
อย่างมีประสิทธิภาพ | ต่ำกว่า RMI | มากกว่า RPC และสนับสนุนโดยวิธีการเขียนโปรแกรมที่ทันสมัย (เช่นกระบวนทัศน์เชิงวัตถุ) |
ค่าโสหุ้ย | มากกว่า | เปรียบเทียบค่อนข้างน้อย |
พารามิเตอร์ In-out จำเป็นต้องมี | ใช่ | ไม่จำเป็น |
ให้ความสะดวกในการเขียนโปรแกรม | สูง | ต่ำ |
คำจำกัดความของ RPC
การเรียกขั้นตอนระยะไกล (RPC) เป็นคุณสมบัติการเขียนโปรแกรมภาษาที่ออกแบบมาสำหรับการคำนวณแบบกระจายและขึ้นอยู่กับความหมายของ ขั้นตอนท้องถิ่น โทร เป็นรูปแบบบริการระยะไกลที่พบมากที่สุดและได้รับการออกแบบเป็นวิธีการสรุปกลไกการเรียกใช้โพรซีเดอร์เพื่อใช้ระหว่างระบบที่เชื่อมต่อผ่านเครือข่าย มันคล้ายกับกลไก IPC ที่ระบบปฏิบัติการอนุญาตให้กระบวนการจัดการข้อมูลที่ใช้ร่วมกันและจัดการกับสภาพแวดล้อมที่กระบวนการต่าง ๆ กำลังดำเนินการบนระบบที่แยกต่างหากและจำเป็นต้องมีการสื่อสารตาม
มาทำความเข้าใจถึงวิธีการใช้งาน RPC ผ่านขั้นตอนที่กำหนด:
- กระบวนการไคลเอนต์เรียกไคลเอ็นต์สตับด้วยพารามิเตอร์และการดำเนินการของมันจะถูกระงับจนกว่าการโทรจะเสร็จสมบูรณ์
- จากนั้นพารามิเตอร์จะถูกแปลเป็นรูปแบบที่ไม่ขึ้นอยู่กับเครื่องจักรโดย marshalling ผ่าน stub ไคลเอนต์ จากนั้นเป็นการเตรียมซึ่งประกอบด้วยการแสดงของพารามิเตอร์
- หากต้องการค้นหาเอกลักษณ์ของไซต์ไคลเอ็นต์ stub สื่อสารกับเซิร์ฟเวอร์ชื่อที่มีโพรซีเดอร์แบบรีโมตอยู่
- การใช้โปรโตคอลการปิดกั้นไคลเอนต์ของไซต์ไปยังไซต์ที่มีการเรียกขั้นตอนระยะไกลอยู่ ขั้นตอนนี้หยุด stub ไคลเอนต์จนกว่าจะได้รับการตอบกลับ
- ไซต์เซิร์ฟเวอร์รับการส่งจากฝั่งไคลเอ็นต์และแปลงเป็นรูปแบบเฉพาะของเครื่อง
- ตอนนี้ stub ของเซิร์ฟเวอร์จะดำเนินการเรียกใช้โพรซีเดอร์เซิร์ฟเวอร์พร้อมกับพารามิเตอร์และ stub ของเซิร์ฟเวอร์จะถูกยกเลิกจนกว่าโพรซีเดอร์จะเสร็จสมบูรณ์
- โพรซีเดอร์เซิร์ฟเวอร์ส่งคืนผลลัพธ์ที่สร้างไปยัง stub เซิร์ฟเวอร์และผลลัพธ์ถูกแปลงเป็นรูปแบบที่ไม่ขึ้นอยู่กับเครื่องที่ stub เซิร์ฟเวอร์และสร้างผลลัพธ์ที่มี
- ผลลัพธ์ถูกส่งไปยัง stub ไคลเอ็นต์ซึ่งถูกแปลงกลับเป็นรูปแบบเฉพาะของเครื่องที่เหมาะสมสำหรับ stub ไคลเอ็นต์
- ที่ไคลเอ็นต์สุดท้าย stub ส่งคืนผลลัพธ์ไปยังกระบวนการไคลเอ็นต์
คำจำกัดความของ RMI
รีโมตเมธอดรีโมต (RMI) คล้ายกับ RPC แต่เป็นภาษาเฉพาะและคุณสมบัติของจาวา อนุญาตให้เธรดเรียกใช้เมธอดบนวัตถุระยะไกล เพื่อรักษาความโปร่งใสในด้านไคลเอนต์และเซิร์ฟเวอร์นั้นจะดำเนินการวัตถุระยะไกลโดยใช้ต้นขั้วและโครงกระดูก ต้นขั้วอยู่กับลูกค้าและสำหรับวัตถุระยะไกลจะทำงานเป็นพร็อกซี
เมื่อไคลเอนต์เรียกใช้วิธีการระยะไกล stub สำหรับวิธีการระยะไกลถูกเรียก stub ไคลเอนต์รับผิดชอบในการสร้างและรับพัสดุที่มีชื่อของวิธีการและพารามิเตอร์ marshalled และโครงกระดูกมีหน้าที่รับผิดชอบในการรับพัสดุ
พารามิเตอร์ Skeleton unmarshals และเรียกใช้เมธอดที่ต้องการบนเซิร์ฟเวอร์ โครงกระดูก marshals มูลค่าที่กำหนด (หรือข้อยกเว้น) กับพัสดุและส่งไปยังลูกค้าต้นขั้ว ต้นขั้วประกอบกลับพัสดุและส่งไปยังลูกค้าใน Java พารามิเตอร์จะถูกส่งไปยังเมธอดและส่งคืนในรูปแบบของการอ้างอิง นี่อาจเป็นปัญหาสำหรับบริการ RMI เนื่องจากวัตถุบางอย่างอาจไม่ใช่วิธีการระยะไกล ดังนั้นจึงต้องพิจารณาว่าจะส่งผ่านข้อมูลอ้างอิงใดและไม่สามารถทำได้
Java ใช้กระบวนการชื่อเป็น การทำให้เป็นอันดับ โดยที่วัตถุถูกส่งผ่านเป็นค่า วัตถุระยะไกลมีการแปลโดยผ่านค่า นอกจากนี้ยังสามารถส่งผ่านวัตถุโดยการอ้างอิงผ่านการอ้างอิงระยะไกลไปยังวัตถุพร้อมกับ URL ของคลาสสตับ ผ่านการอ้างอิง จำกัด ต้นขั้วสำหรับวัตถุระยะไกล
- RPC รองรับกระบวนทัศน์การเขียนโปรแกรมเชิงกระบวนงานจึงเป็นแบบอิง C ในขณะที่ RMI สนับสนุนกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุและอิงตามจาวา
- พารามิเตอร์ที่ส่งผ่านไปยังโพรซีเดอร์แบบรีโมตใน RPC เป็นโครงสร้างข้อมูลทั่วไป ในทางตรงกันข้าม RMI ส่งผ่านวัตถุเป็นพารามิเตอร์ไปยังวิธีการระยะไกล
- RPC ถือได้ว่าเป็น RMI เวอร์ชันเก่าและใช้ในภาษาการเขียนโปรแกรมที่รองรับการเขียนโปรแกรมตามขั้นตอนและสามารถใช้วิธีส่งผ่านตามค่าได้เท่านั้น เมื่อเทียบกับสิ่งอำนวยความสะดวก RMI ถูกออกแบบตามวิธีการเขียนโปรแกรมที่ทันสมัยซึ่งสามารถใช้การส่งผ่านตามค่าหรือการอ้างอิง ข้อดีอีกประการของ RMI คือพารามิเตอร์ที่ส่งผ่านโดยการอ้างอิงสามารถเปลี่ยนแปลงได้
- โปรโตคอล RPC สร้างโอเวอร์เฮดมากกว่า RMI
- พารามิเตอร์ที่ส่งผ่านใน RPC ต้องเป็น“ในการออก” ซึ่งหมายความว่าค่าที่ส่งผ่านไปยังโพรซีเดอร์และค่าเอาต์พุตต้องมีประเภทข้อมูลเดียวกัน ในทางตรงกันข้ามไม่มีการบังคับผ่าน "ในการออก” พารามิเตอร์ใน RMI
- ใน RPC ไม่สามารถอ้างอิงได้เนื่องจากทั้งสองกระบวนการมีพื้นที่ที่อยู่แตกต่างกัน แต่เป็นไปได้ในกรณีของ RMI
ข้อสรุป
ทั้ง RPC และ RMI ให้บริการวัตถุประสงค์เดียวกัน แต่ใช้ในภาษาที่สนับสนุนกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกันดังนั้นจึงมีคุณสมบัติที่แตกต่างกัน