Mục đích của MarshalByRefObject là gì?
Mục đích của MarshalByRefObject là gì?
Câu trả lời:
Rời khỏi; nó có nghĩa là giữa AppDomains hoặc máy, thay vì tuần tự hóa và chuyển đối tượng , đối tượng sẽ ở một đầu và một proxy được tạo ở đầu kia. Tất cả các lệnh gọi phương thức tới proxy đều bị chặn và cuộc gọi được truyền dưới dạng RPC wiki , msdn , khiến phương thức thực thi trên máy khác (thường là tuần tự các đối số và giá trị trả về).
Lưu ý: điều này có thể dẫn đến giao diện "chát" không mong muốn. Phương pháp tiếp cận đối tượng / proxy / RPC hiện nay ít thích hợp hơn so với các phương pháp có ranh giới dịch vụ rõ ràng ; Microsoft hiện khuyến nghị WCF wiki , msdn thay vì xóa.
Một cách sử dụng quan trọng khác của MarshalByRefObjectnó là triển khai AOP thông qua loại bỏ chuỗi chìm.
Nếu bạn có một đối tượng có nguồn gốc từ ContextBoundObject(mà chính nó bắt nguồn từ MarshalByRefObject), bạn có thể khởi tạo nó trong một Ngữ cảnh riêng trong cùng một AppDomain và liên lạc giữa các đối tượng tự động đi qua hệ thống proxy Remoting - cho phép bạn cắm các bộ chìm tùy chỉnh vào bộ phận Remoting- chuỗi.
Điều này cuối cùng cho phép bạn 'trang trí' các cuộc gọi phương thức tới các đối tượng của mình và triển khai các dịch vụ xuyên suốt, chẳng hạn như ghi nhật ký và bảo mật, v.v.
nó sử dụng cơ bản để hỗ trợ truy cập các đối tượng giữa hai tên miền ứng dụng và các tên miền ứng dụng này có thể nằm trên cùng một máy tính hoặc trong các máy tính khác nhau thông qua quá trình xóa.
Bất kỳ đối tượng nào bên ngoài miền ứng dụng của ứng dụng người gọi nên được coi là Đối tượng Từ xa. Một Đối tượng Từ xa phải được dẫn xuất từ MarshalByRefObjectLớp. Bất kỳ đối tượng nào cũng có thể được thay đổi thành Đối tượng từ xa bằng cách lấy từ đó MarshalByRefObject. Các đối tượng mà không kế thừa từ MarshalByRefObjectđược gọi là Đối tượng không thể điều khiển từ xa .