Événements et délégués avec .NET Framework Remoting

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)

Bien que vous puissiez utiliser des événements et des délégués avec .NET Framework Remoting, il vous faut d'abord régler deux problèmes principaux. Plus particulièrement, vous ne devez les utiliser que lorsque l'authentification est utilisée sur un IpcChannel.

Utilisation de délégués

Les délégués de communication à distance créent un problème de sécurité qui doit être réglé. Si un client passe un délégué à un serveur (cela arrive généralement lorsqu'un client joint un gestionnaire d'événements à un événement distant), le délégué attaché peut faire référence à une méthode non autorisée qui a la même signature que la méthode que le service visait. Comme la signature de la méthode visée et celle de la méthode non visée correspondent, le service peut appeler la méthode non visée, même si elle est statique (et ne peut donc pas être appelée sur le client distant).

Pour pallier ce problème, le serveur doit définir des délégués avec des types de paramètres personnalisés et l'assembly qui contient ces types doit avoir un nom fort. En outre, vous devez toujours authentifier (voire chiffrer) de telles communications. N'autorisez jamais un type situé sur le serveur à être désérialisé si vous n'êtes pas certain qu'il s'agit du type correct.

Utilisation d'événements

Étant donné les problèmes de sécurité rencontrés avec les délégués, l'utilisation d'événements n'est pas recommandée. Il est préférable de définir un service de rappel client qui publie des méthodes que le service peut appeler lorsqu'il doit communiquer avec le client. Si vous décidez d'utiliser des événements distants avec un IpcChannel authentifié (et que vous avez déclaré des délégués comme décrit précédemment), les méthodes de votre gestionnaire d'événements client doivent être des appels unidirectionnels. En effet, lors du déclenchement d'événements, le serveur appelle les délégués dans la liste d'appels d'événements. Le système d'événements bloque ces appels jusqu'au retour ou à l'expiration du client. Par conséquent, les clients qui n'écoutent pas réduisent considérablement le débit d'événements simples, à moins que le gestionnaire d'événements soit une méthode unidirectionnelle.

Voir aussi

Concepts

Sécurité dans la communication à distance