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