Яка мета MarshalByRefObject?
Яка мета MarshalByRefObject?
Відповіді:
Видалення; це означає, що між AppDomains або машинами, а не серіалізувати і переносити об'єкт , об'єкт залишається на одному кінці, а інший створюється проксі. Усі виклики методів до проксі перехоплюються, і виклик передається у вигляді wiki wiki , msdn , що спричиняє виконання методу на іншій машині (як правило, серіалізує аргументи та повертає значення).
Примітка. Це може призвести до несподівано «балаканицьких» інтерфейсів. Об'єкт / проксі / RPC підхід тепер менш кращий, ніж підходи з явним кордоном обслуговування; Тепер Microsoft рекомендує замість видалення WCF- wiki , msdn .
Ще одне важливе застосування - MarshalByRefObjectце реалізація AOP за допомогою видалення раковин.
Якщо у вас є об'єкт, який походить від ContextBoundObject(який сам походить MarshalByRefObject), ви можете створити його в окремому контексті в межах одного AppDomain і зв’язок між об'єктами автоматично пройти через проксі-систему віддалення - що дозволяє вам підключати користувацькі мийки до віддаленої мийки, ланцюжок.
Це в кінцевому підсумку дозволяє "прикрасити" виклики методів до ваших об'єктів та реалізувати наскрізні послуги, такі як реєстрація та безпека тощо.
Основне використання - це підтримка доступу до об'єктів між двома додатками домену, і ці додатки можуть бути на одному комп'ютері або на різних комп'ютерах шляхом видалення.
Будь-який об'єкт, що знаходиться за межами домену додатка програми, що викликає, повинен розглядатися як віддалений об'єкт. Віддалений об’єкт, який повинен бути отриманий з MarshalByRefObjectкласу. Будь-який об'єкт може бути змінений у віддалений об’єкт шляхом його отримання MarshalByRefObject. Об'єкти без успадкування від MarshalByRefObjectназиваються об'єктами, що не віддаляються .