Quel est le but de MarshalByRefObject?
93
À distance; cela signifie qu'entre les AppDomains ou les machines, plutôt que de sérialiser et de transférer l' objet , l'objet reste à une extrémité et un proxy est créé à l'autre. Tous les appels de méthode au proxy sont interceptés et l' appel est transmis en tant que wiki RPC , msdn , provoquant l'exécution de la méthode sur l'autre machine (généralement en sérialisant les arguments et la valeur de retour).
Remarque: cela peut conduire à des interfaces "bavardes" inattendues. L'approche objet / proxy / RPC est désormais moins préférable aux approches avec une limite de service explicite ; Microsoft recommande maintenant le wiki WCF , msdn au lieu de la communication à distance.
Une autre utilisation importante de
MarshalByRefObject
est pour implémenter AOP via des chaînes de puits distantes.Si vous avez un objet qui dérive de
ContextBoundObject
(dont il dérive lui-mêmeMarshalByRefObject
), vous pouvez l'instancier dans un contexte séparé au sein du même AppDomain et faire en sorte que les communications entre les objets passent automatiquement par le système proxy distant - vous permettant de brancher des récepteurs personnalisés dans le récepteur distant- chaîne.Cela vous permet finalement de `` décorer '' les appels de méthode à vos objets et de mettre en œuvre des services transversaux, tels que la journalisation et la sécurité, etc.
la source
son utilisation de base est de prendre en charge l'accès des objets entre deux domaines d'application et ces domaines d'application peuvent être sur le même ordinateur ou dans les différents ordinateurs via la communication à distance.
Vois ici
la source
Tout objet en dehors du domaine d'application de l'application appelante doit être considéré comme un objet distant. Un objet distant qui doit être dérivé de
MarshalByRefObject
Class. Tout objet peut être transformé en objet distant en le dérivantMarshalByRefObject
. Les objets sans hériter deMarshalByRefObject
sont appelés objets non distants .la source