วัตถุประสงค์ของ MarshalByRefObject คืออะไร?
วัตถุประสงค์ของ MarshalByRefObject คืออะไร?
คำตอบ:
ระยะไกล; หมายความว่าระหว่าง AppDomains หรือเครื่องแทนที่จะทำให้เป็นอนุกรมและถ่ายโอนวัตถุวัตถุจะอยู่ที่ปลายด้านหนึ่งและมีการสร้างพร็อกซีที่อีกด้านหนึ่ง การเรียกใช้เมธอดทั้งหมดไปยังพร็อกซีจะถูกดักฟังและการโทรจะถูกส่งเป็น RPC wiki , msdnทำให้เมธอดดำเนินการกับเครื่องอื่น (โดยทั่วไปจะเป็นอนุกรมของอาร์กิวเมนต์และค่าส่งคืน)
หมายเหตุ: สิ่งนี้อาจนำไปสู่อินเทอร์เฟซ "ช่างพูด" โดยไม่คาดคิด ขณะนี้วิธี object / proxy / RPC ไม่นิยมใช้กับวิธีการที่มีขอบเขตการให้บริการที่ชัดเจน ตอนนี้ Microsoft แนะนำ WCF wiki , msdnแทนการรีโมท
การใช้งานที่สำคัญอีกประการหนึ่งMarshalByRefObjectคือการใช้ AOP ผ่านการควบคุมโซ่จม
หากคุณมีอ็อบเจ็กต์ที่มาจากContextBoundObject(ซึ่งมาจากตัวมันเองMarshalByRefObject) คุณสามารถสร้างอินสแตนซ์ได้ในบริบทที่แยกจากกันภายใน AppDomain เดียวกันและมีการสื่อสารระหว่างอ็อบเจ็กต์โดยอัตโนมัติผ่านระบบพร็อกซี Remoting - ช่วยให้คุณสามารถเสียบซิงก์ที่กำหนดเองเข้ากับ Remoting sink- เชื่อมต่อ.
ในที่สุดสิ่งนี้จะช่วยให้คุณสามารถเรียกเมธอด 'ตกแต่ง' ไปยังวัตถุของคุณและใช้บริการการตัดขวางเช่นการบันทึกและการรักษาความปลอดภัยเป็นต้น
การใช้งานขั้นพื้นฐานคือการสนับสนุนการเข้าถึงวัตถุระหว่างสองแอปโดเมนและโดเมนแอปเหล่านี้สามารถอยู่บนคอมพิวเตอร์เครื่องเดียวกันหรือในคอมพิวเตอร์เครื่องอื่นผ่านการรีบูต
อ็อบเจ็กต์ใด ๆ ที่อยู่นอกโดเมนแอปพลิเคชันของแอปพลิเคชันผู้โทรควรถือเป็นวัตถุระยะไกล วัตถุระยะไกลที่ควรได้รับจากMarshalByRefObjectคลาส วัตถุใด ๆ MarshalByRefObjectที่สามารถเปลี่ยนเป็นวัตถุระยะไกลโดยสืบมาได้จาก ออบเจ็กต์ที่ไม่มีการสืบทอดจากMarshalByRefObjectเรียกว่าออบเจ็กต์ที่ไม่สามารถรีโมตได้