Partager via


Activation par client

Les objets activés par le client sont des objets dont la durée de vie est contrôlée par le domaine d'application appelant, comme c'est le cas si l'objet était local dans le client. Dans le cas d'une activation par client, un aller-retour vers le serveur se produit lorsque le client tente de créer une instance de l'objet serveur, et que le proxy client est créé à l'aide d'une référence d'objet (ObjRef) reçue en retour à la suite de la création de l'objet distant sur le serveur. Chaque fois qu'un client crée une instance d'un type activé par le client, cette instance traitera uniquement cette référence particulière dans ce client particulier jusqu'à expiration du bail et recyclage de la mémoire. Si un domaine d'application appelant crée deux nouvelles instances du type distant, chacune des références clientes appellera uniquement l'instance particulière du domaine d'application serveur à partir duquel la référence a été retournée.

Dans COM, les clients conservent un objet en mémoire en maintenant une référence à cet objet. Lorsque le dernier client libère sa dernière référence, l'objet peut se supprimer. L'activation par client fournit le même contrôle client sur la durée de vie de l'objet serveur mais sans la complexité imposée par la maintenance des références ou l'exécution constante de commande Ping pour confirmer l'existence continue du serveur ou du client. Au contraire, les objets activés par le client utilisent les Baux de durée de vie ** pour déterminer leur durée de vie. Lorsqu'un client crée un objet distant, il peut spécifier une durée d'existence par défaut pour l'objet. Si l'objet distant atteint sa limite de durée de vie par défaut, il contacte le client pour demander si cette durée peut être prolongée, et si tel est le cas, pour combien de temps. Si le client n'est pas disponible, il existe également une durée par défaut spécifiant combien de temps l'objet serveur doit attendre tout en essayant de contacter le client avant de s'automarquer pour un garbage collection. Le client peut même faire une demande de durée de vie indéfinie par défaut empêchant ainsi l'objet distant d'être recyclé jusqu'à ce que le domaine d'application serveur soit supprimé. La différence entre cette opération et une durée de vie indéfinie activée par le serveur réside dans le fait qu'un objet activé par le serveur traitera toutes les demandes clientes pour ce type, alors que les instances activées par le client servent uniquement le client et la référence chargée de leur création. Pour plus d'informations, consultez Baux de durée de vie.

Pour créer une instance d'un type activé par le client, les clients configurent leur application par programme (ou en utilisant un fichier de configuration) et appellent new (New dans Visual Basic), ou ils passent la configuration de l'objet distant dans un appel à Activator.CreateInstance. L'exemple de code suivant illustre cet appel en présupposant qu'un TcpChannel a été inscrit pour écouter le port 8080.

Dim Object() = {New UrlAttribute("tcp://computername:8080/RemoteObjectApplicationName ")}
' Note that the second parameter (Nothing) specifies that no arguments
' are being passed.
Dim MyRemoteClass As RemoteObjectClass = _
   CType( _
      Activator.CreateInstance(GetType(RemoteObjectClass), Nothing, url), _
      RemoteObjectClass)

[C#]
object[] url = {new UrlAttribute("tcp://computername:8080/RemoteObjectApplicationName")};
// Note that the second parameter (null) specifies that no arguments
// are being passed.
RemoteObjectClass MyRemoteClass = (RemoteObjectClass)Activator.CreateInstance(
      typeof(RemoteObjectClass),
      null, 
      url
   );

Voir aussi

Activation | Configuration | Activation par serveur | Baux de durée de vie