Renouvellement 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)
Une fois qu'un bail a été créé, seule sa propriété ILease.CurrentLeaseTime peut être modifiée. Il existe deux façons de renouveler un bail : un client peut directement appeler ILease.Renew, ou un commanditaire peut être contacté et prié de renouveler le bail.
Commanditaires
Les commanditaires écoutent les demandes d'un domaine d'application hôte pour étendre le bail d'un objet particulier. Ils implémentent ISponsor et sont inscrits auprès du gestionnaire de bail en obtenant une référence au bail et en appelant ensuite ILease.Register. Lorsqu'il existe de nombreux clients par objet distant, il est généralement préférable, pour un souci d'efficacité, que l'objet distant demande à l'un des clients un renouvellement de bail plutôt que tous les clients envoient des demandes à l'objet distant.
Remarque : |
---|
À partir de la version 1.1 du .NET Framework, l'inscription d'un commanditaire afin qu'il participe à la durée de vie d'un objet serveur requiert que le paramètre de désérialisation automatique ait la valeur Full sur le domaine d'application serveur et le commanditaire. Pour plus d'informations, consultez Désérialisation automatique dans .NET Remoting. |
L'utilisation de commanditaires permet également de mettre en place une stratégie de renouvellement dynamique parmi un grand nombre de clients. Cela peut se révéler efficace pour la résolution parallèle d'un problème, au cours de laquelle un ou plusieurs clients donnent un problème à résoudre à plusieurs objets distants. Lorsqu'un objet distant retourne une solution, le commanditaire est prévenu et autorise tous les baux des autres objets distants à expirer.
Cette approche est également utile pour effectuer une migration d'objets distants vers un autre ordinateur, car l'objet distant contacte le client à partir de son emplacement actuel et le client n'a donc pas à le rechercher.
Il est également important de noter que le commanditaire peut être difficile à atteindre s'il est situé de l'autre côté d'un réseau important ou même sur Internet, si de nombreux pare-feux sont présents. Vous pouvez pallier ce problème en disposant de commanditaires de secours, ou en plaçant les commanditaires près du domaine d'application hôte, où la probabilité qu'ils soient joignables est relativement élevée.
Le gestionnaire de bail du domaine d'application hôte maintient une liste des commanditaires. Lorsqu'un commanditaire doit renouveler la durée du bail, c'est le commanditaire situé en haut de cette liste qui effectue cette opération. Si le commanditaire ne répond pas dans l'intervalle de temps ILease.SponsorshipTimeout, il est supprimé de la liste et le commanditaire suivant de la liste est appelé.
Utilisation d'un commanditaire pour renouveler un bail
Les commanditaires participent aux baux de durée de vie en obtenant le bail pour une référence d'objet particulière, en les inscrivant en tant que commanditaire et en attendant que le gestionnaire de bail distant appelle ISponsor.Renewal. Un bail d'objet est obtenu en appelant RemotingServices.GetLifetimeService, qui prend l'objet pour lequel le bail est requis en tant que paramètre. Cet appel est une méthode statique de la classe RemotingServices. Si l'objet est local par rapport au domaine d'application, le paramètre de cet appel est une référence locale à l'objet et le bail retourné est une référence locale au bail. Si l'objet est distant, le proxy est passé en tant que paramètre. Notez que le bail lui-même est un objet marshalé-par-référence (MBR), vous apportez donc un proxy au bail lorsque vous obtenez un bail pour un objet distant. Par conséquent, lorsque vous effectuez des appels aux méthodes sur le bail, vous effectuez des appels distants au processus serveur.
Vous inscrivez ensuite le commanditaire auprès du gestionnaire de bail distant en appelant Register et en passant le commanditaire ainsi que l'objet facultatif TimeSpan, si l'objet vient d'être créé.
Lorsque le bail de cet objet expire, le gestionnaire de bail peut rappeler votre commanditaire distant. La valeur de retour de votre commanditaire pour son implémentation de Renewal devient la nouvelle durée du bail.
Voir aussi
Tâches
Référence
Élément <lifetime>
Schéma des paramètres de communication à distance
Concepts
Exemple de communication à distance : durées de vie
Baux de durée de vie
Initialisation de baux