Quel est le but de MarshalByRefObject?
Quel est le but de MarshalByRefObject?
Réponses:
À 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ême MarshalByRefObject), 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.
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.
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 MarshalByRefObjectClass. Tout objet peut être transformé en objet distant en le dérivant MarshalByRefObject. Les objets sans hériter de MarshalByRefObjectsont appelés objets non distants .