RPC เทียบกับ RMI
ความแตกต่างพื้นฐานระหว่าง RPC และ RMI คือ RPC เป็นกลไกที่เปิดใช้งานการเรียกขั้นตอนบนคอมพิวเตอร์ระยะไกลในขณะที่ RMI คือการนำ RPC ไปใช้ใน java RPC เป็นภาษากลางแต่สนับสนุนเฉพาะประเภทข้อมูลพื้นฐานที่จะส่งผ่าน ในทางกลับกัน RMI ถูกจำกัดไว้ที่ Java แต่อนุญาตให้ส่งผ่านอ็อบเจ็กต์ได้ RPC ปฏิบัติตามโครงสร้างภาษาขั้นตอนดั้งเดิมในขณะที่ RMI รองรับการออกแบบเชิงวัตถุ
RPC คืออะไร
RPC ซึ่งย่อมาจาก Remote Procedure Call เป็นการสื่อสารระหว่างกระบวนการ ซึ่งช่วยให้เรียกใช้ฟังก์ชันในกระบวนการอื่นที่ทำงานอยู่บนเครื่องคอมพิวเตอร์หรือคอมพิวเตอร์ระยะไกลแนวคิดนี้เกิดขึ้นเมื่อนานมาแล้วในปี 1980 แต่การนำไปใช้ที่มีชื่อเสียงครั้งแรกใน Unix
RPC มีหลายขั้นตอน ลูกค้าทำการเรียกโพรซีเดอร์บนคอมพิวเตอร์ภายในเครื่องตามปกติ โมดูลที่เรียกว่า stub ไคลเอ็นต์รวบรวมอาร์กิวเมนต์และสร้างข้อความและส่งผ่านไปยังระบบปฏิบัติการ ระบบปฏิบัติการจะเรียกระบบและส่งข้อความนี้ไปยังคอมพิวเตอร์ระยะไกล ระบบปฏิบัติการในเซิร์ฟเวอร์รวบรวมข้อความและส่งผ่านไปยังโมดูลบนเซิร์ฟเวอร์ที่เรียกว่าเซิร์ฟเวอร์ต้นขั้ว จากนั้นต้นขั้วเซิร์ฟเวอร์จะเรียกขั้นตอนบนเซิร์ฟเวอร์ สุดท้ายผลลัพธ์จะถูกส่งไปยังไคลเอนต์
ข้อดีของการใช้ RPC คือเป็นอิสระจากรายละเอียดเครือข่าย โปรแกรมเมอร์เพียงแค่ต้องระบุเป็นนามธรรมในขณะที่ระบบปฏิบัติการจะดูแลรายละเอียดเครือข่ายภายใน ดังนั้นสิ่งนี้ทำให้การเขียนโปรแกรมง่ายขึ้นและช่วยให้ RPC ทำงานบนเครือข่ายใดก็ได้ แม้จะมีความแตกต่างทางกายภาพและโปรโตคอล การใช้งาน RPC มีอยู่ในระบบปฏิบัติการหลักทั้งหมด เช่น Unix, Linux, Windows และ OS XRPC โดยทั่วไปจะเป็นกลางทางภาษา ดังนั้นจึงจำกัดประเภทข้อมูลเป็นประเภทดั้งเดิมที่สุด เนื่องจากจะต้องใช้ร่วมกันในทุกภาษา วิธีการใน RPC ไม่ใช่เชิงวัตถุ แต่เป็นกลไกขั้นตอนดั้งเดิมเช่นใน C.
RMI คืออะไร
RMI ซึ่งย่อมาจาก Remote Method Invocation เป็น API (Application Programming Interface) ที่ใช้ RPC ใน java เพื่อรองรับลักษณะเชิงวัตถุ อนุญาตให้เรียกใช้เมธอด Java บนเครื่อง Java Virtual เครื่องอื่นที่อยู่ในคอมพิวเตอร์เครื่องเดียวกันหรือเครื่องระยะไกล ข้อจำกัดของ RMI คือสามารถเรียกใช้เมธอด Java ได้เท่านั้น แต่สิ่งนี้มาพร้อมกับข้อดีที่อ็อบเจ็กต์สามารถส่งผ่านเป็นอาร์กิวเมนต์และคืนค่าได้เมื่อพิจารณาถึงประสิทธิภาพ RMI จะช้ากว่า RPC เนื่องจากเกี่ยวข้องกับ bytecode บนเครื่อง Java Virtual แต่ RMI นั้นเป็นมิตรกับโปรแกรมเมอร์เป็นอย่างมาก และใช้งานง่ายมาก
RMI ใช้กลไกความปลอดภัยในตัวใน Java และยังให้โรงงานซ็อกเก็ตที่เปิดใช้งานการใช้โปรโตคอลเลเยอร์การขนส่งแบบกำหนดเองที่ไม่ใช่ TCP นอกจากนี้ RMI ยังมีวิธีการเลี่ยงผ่านไฟร์วอลล์อีกด้วย ขั้นตอนที่เกิดขึ้นใน RMI จะคล้ายกับ RPC การใช้งาน RMI จะดูแลรายละเอียดเครือข่ายภายในที่โปรแกรมเมอร์ไม่ต้องกังวลกับมัน
RPC กับ RMI ต่างกันอย่างไร
• RPC เป็นกลางทางภาษาในขณะที่ RMI ถูกจำกัดที่ Java
• RPC มีขั้นตอนเหมือนในภาษา C แต่ RMI เป็นแบบเชิงวัตถุ
• RPC รองรับเฉพาะประเภทข้อมูลพื้นฐานในขณะที่ RMI อนุญาตให้ส่งผ่านวัตถุเป็นอาร์กิวเมนต์และคืนค่า เมื่อใช้ RPC โปรแกรมเมอร์ต้องแยกอ็อบเจ็กต์ผสมเป็นประเภทข้อมูลพื้นฐาน
• RMI นั้นง่ายต่อการตั้งโปรแกรม RPC
• RMI ช้ากว่า RPC เนื่องจาก RMI เกี่ยวข้องกับการประมวลผลจาวาไบต์โค้ด
• RMI อนุญาตให้ใช้รูปแบบการออกแบบเนื่องจากลักษณะเชิงวัตถุในขณะที่ RPC ไม่มีความสามารถนี้
สรุป:
RPC เทียบกับ RMI
RPC เป็นกลไกที่เป็นกลางทางภาษาที่อนุญาตให้เรียกใช้ขั้นตอนบนคอมพิวเตอร์ระยะไกล อย่างไรก็ตาม คุณลักษณะที่เป็นกลางทางภาษาจะจำกัดประเภทข้อมูลที่ส่งผ่านเป็นอาร์กิวเมนต์ และส่งคืนค่าเป็นประเภทพื้นฐาน RMI คือการนำ RPC ไปใช้งานใน Java และสนับสนุนการส่งผ่านอ็อบเจ็กต์เช่นกัน ทำให้ชีวิตของโปรแกรมเมอร์ง่ายขึ้น ข้อดีของ RMI คือการสนับสนุนการออกแบบเชิงวัตถุ แต่ข้อจำกัดของ Java นั้นเป็นข้อเสีย