Initialisation de baux
Cette rubrique est spécifique à la technologie héritée assurant la compatibilité descendante avec des applications existantes et n'est pas recommandée en cas de nouveau développement. Les applications distribuées doivent maintenant être développées à l'aide de Windows Communication Foundation (WCF).
Lorsqu'une classe dérivée MarshalByRefObject est instanciée, l'infrastructure .NET Remoting Framework appelle la méthode InitializeLifetimeService de l'objet. Cette méthode retourne un objet de bail qui contient les valeurs de durée de vie par défaut de l'objet distant. Vous pouvez modifier ces valeurs par défaut en spécifiant des valeurs alternatives dans le fichier de configuration de l'application serveur (à l'aide de l'Élément <lifetime>) ou en substituant InitializeLifetimeService.
Notez bien que si vous spécifiez des valeurs alternatives dans un fichier de configuration, les valeurs de durée de vie par défaut de l'ensemble des objets que l'application serveur héberge seront modifiées. Le fait de substituer InitializeLifetimeService vous permet de modifier les valeurs de durée de vie par défaut pour une classe spécifique.
Substitution d'InitializeLifetimeService
Lors de la substitution de InitializeLifetimeService, vous devez vérifier la valeur du CurrentState. Vous ne pouvez modifier les valeurs de bail que lorsque CurrentState est égal à Initial.
Le seul appel qui affecte le service de durée de vie est l'appel à InitializeLifetimeService à partir de l'infrastructure .NET Remoting, qui active le bail. D'autres codes peuvent appeler InitializeLifetimeService et créer un bail, mais ce bail reste dans son état initial jusqu'à ce qu'il soit retourné à l'infrastructure .NET Remoting.
Si InitializeLifetimeService retourne Null, la durée de vie de l'objet est infinie et n'est pas récupérée par le garbage collector tant que le domaine d'application hôte n'est pas déchargé.
L'implémentation de InitializeLifetimeService appelle normalement la méthode correspondante de la classe de base pour récupérer le bail existant pour l'objet distant. Si l'objet n'a jamais été marshalé, le bail retourné est dans son état initial et les propriétés de bail peuvent être définies. Une fois que l'objet a été marshalé, le bail passe dans son état actif et toute tentative d'initialiser les propriétés de bail est ignorée. Une exception est ensuite levée. InitializeLifetimeService est appelé lorsque l'objet distant est activé. Une liste de commanditaires pour le bail peut être fournie avec l'appel d'activation et des commanditaires supplémentaires peuvent être ajoutés à n'importe quel moment, à condition que le bail soit actif.
Pour plus d'informations sur la substitution de la méthode InitializeLifetimeService, consultez Comment : substituer l'interface InitializeLifetimeService.
Voir aussi
Tâches
Comment : substituer l'interface InitializeLifetimeService
Concepts
Renouvellement de baux
Exemple de communication à distance : durées de vie
Baux de durée de vie