ความแตกต่างระหว่าง RPC และ RMI

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 15 พฤษภาคม 2024
Anonim
API’s In The Morning (EP. 1) : Restful VS RPC
วิดีโอ: API’s In The Morning (EP. 1) : Restful VS RPC

เนื้อหา


RPC และ RMI เป็นกลไกที่ช่วยให้ลูกค้าสามารถเรียกขั้นตอนหรือวิธีการจากเซิร์ฟเวอร์ผ่านการสร้างการสื่อสารระหว่างลูกค้าและเซิร์ฟเวอร์ ความแตกต่างทั่วไประหว่าง RPC และ RMI คือ RPC รองรับเท่านั้น การเขียนโปรแกรมตามขั้นตอน ในขณะที่ RMI รองรับ การเขียนโปรแกรมเชิงวัตถุ.

ความแตกต่างที่สำคัญอื่น ๆ ระหว่างสองคือพารามิเตอร์ที่ส่งผ่านไปยังการเรียกขั้นตอนระยะไกลประกอบด้วย โครงสร้างข้อมูลสามัญ. ในขณะที่พารามิเตอร์ที่ส่งไปยังวิธีการระยะไกลประกอบด้วย วัตถุ.

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบRPCRMI
รองรับขั้นตอนการโปรแกรม
การเขียนโปรแกรมเชิงวัตถุ
พารามิเตอร์โครงสร้างข้อมูลทั่วไปจะถูกส่งไปยังกระบวนการระยะไกลวัตถุถูกส่งผ่านไปยังวิธีการระยะไกล
อย่างมีประสิทธิภาพต่ำกว่า 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 ของคลาสสตับ ผ่านการอ้างอิง จำกัด ต้นขั้วสำหรับวัตถุระยะไกล

  1. RPC รองรับกระบวนทัศน์การเขียนโปรแกรมเชิงกระบวนงานจึงเป็นแบบอิง C ในขณะที่ RMI สนับสนุนกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุและอิงตามจาวา
  2. พารามิเตอร์ที่ส่งผ่านไปยังโพรซีเดอร์แบบรีโมตใน RPC เป็นโครงสร้างข้อมูลทั่วไป ในทางตรงกันข้าม RMI ส่งผ่านวัตถุเป็นพารามิเตอร์ไปยังวิธีการระยะไกล
  3. RPC ถือได้ว่าเป็น RMI เวอร์ชันเก่าและใช้ในภาษาการเขียนโปรแกรมที่รองรับการเขียนโปรแกรมตามขั้นตอนและสามารถใช้วิธีส่งผ่านตามค่าได้เท่านั้น เมื่อเทียบกับสิ่งอำนวยความสะดวก RMI ถูกออกแบบตามวิธีการเขียนโปรแกรมที่ทันสมัยซึ่งสามารถใช้การส่งผ่านตามค่าหรือการอ้างอิง ข้อดีอีกประการของ RMI คือพารามิเตอร์ที่ส่งผ่านโดยการอ้างอิงสามารถเปลี่ยนแปลงได้
  4. โปรโตคอล RPC สร้างโอเวอร์เฮดมากกว่า RMI
  5. พารามิเตอร์ที่ส่งผ่านใน RPC ต้องเป็น“ในการออก” ซึ่งหมายความว่าค่าที่ส่งผ่านไปยังโพรซีเดอร์และค่าเอาต์พุตต้องมีประเภทข้อมูลเดียวกัน ในทางตรงกันข้ามไม่มีการบังคับผ่าน "ในการออก” พารามิเตอร์ใน RMI
  6. ใน RPC ไม่สามารถอ้างอิงได้เนื่องจากทั้งสองกระบวนการมีพื้นที่ที่อยู่แตกต่างกัน แต่เป็นไปได้ในกรณีของ RMI

ข้อสรุป

ทั้ง RPC และ RMI ให้บริการวัตถุประสงค์เดียวกัน แต่ใช้ในภาษาที่สนับสนุนกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกันดังนั้นจึงมีคุณสมบัติที่แตกต่างกัน