Jaki jest cel MarshalByRefObject?
Jaki jest cel MarshalByRefObject?
Odpowiedzi:
Zdalne; oznacza to, że między domenami aplikacji lub maszynami zamiast serializować i przesyłać obiekt , obiekt pozostaje na jednym końcu, a na drugim jest tworzony serwer proxy. Wszystkie wywołania metod do serwera proxy są przechwytywane, a wywołanie jest przesyłane jako wiki RPC , msdn , powodując wykonanie metody na innym komputerze (zazwyczaj serializacja argumentów i zwracana wartość).
Uwaga: może to prowadzić do nieoczekiwanie „rozmownych” interfejsów. Podejście obiekt / proxy / RPC jest teraz mniej preferowane niż podejścia z jawną granicą usługi; Firma Microsoft zaleca teraz WCF wiki , msdn zamiast komunikacji zdalnej .
Innym ważnym zastosowaniem MarshalByRefObjectjest implementacja AOP poprzez zdalne łańcuchy ujść.
Jeśli masz obiekt, który pochodzi z ContextBoundObject(który sam się wywodzi MarshalByRefObject), możesz utworzyć jego wystąpienie w oddzielnym kontekście w tej samej domenie aplikacji i mieć komunikację między obiektami automatycznie przechodzącą przez system zdalnego proxy - umożliwiając podłączenie niestandardowych ujść do ujścia zdalnego. łańcuch.
Ostatecznie umożliwia to `` dekorowanie '' wywołań metod do obiektów i wdrażanie usług przekrojowych, takich jak logowanie i zabezpieczenia itp.
jego podstawowym zastosowaniem jest obsługa dostępu do obiektów między dwiema domenami aplikacji, a te domeny aplikacji mogą znajdować się na tym samym komputerze lub na różnych komputerach za pośrednictwem komunikacji zdalnej.
Każdy obiekt spoza domeny aplikacji aplikacji wywołującej powinien być traktowany jako obiekt zdalny. Obiekt zdalny, który powinien pochodzić z MarshalByRefObjectklasy. Każdy obiekt można zmienić w obiekt zdalny, wyprowadzając go z MarshalByRefObject. Obiekty bez dziedziczenia MarshalByRefObjectsą nazywane obiektami nie zdalnymi .