RPC asynchrone
L’appel de procédure distante asynchrone (RPC) est une extension Microsoft qui répond à plusieurs limitations du modèle RPC traditionnel tel que défini par l’environnement Open Software Foundation-Distributed Computing (OSF-DCE). Le RPC asynchrone sépare un appel de procédure distante de sa valeur de retour, ce qui résout les limitations suivantes du RPC traditionnel et synchrone :
- Plusieurs appels en attente à partir d’un client à thread unique. Dans le modèle RPC traditionnel, un client est bloqué dans un appel de procédure distante jusqu’à ce que l’appel retourne. Cela empêche un client d’avoir plusieurs appels en attente, tout en conservant son thread disponible pour effectuer d’autres tâches.
- Clients lents ou retardés. Un client qui est lent à produire des données peut souhaiter effectuer un appel de procédure distante avec des données initiales, puis fournir des données supplémentaires lors de sa production. Cela n’est pas possible avec rpc conventionnel (synchrone).
- Serveurs lents ou retardés. Un appel de procédure distante qui prend beaucoup de temps pour terminer l’achemine le thread de distribution pendant la durée de la tâche. Avec rpc asynchrone, le serveur peut démarrer une opération distincte (asynchrone) pour traiter la demande et renvoyer la réponse lorsqu’il est disponible. Le serveur peut également envoyer la réponse de manière incrémentielle à mesure que les résultats deviennent disponibles sans avoir à lier un thread de distribution pendant la durée de l’appel distant. En rendant l’application cliente asynchrone, vous pouvez empêcher un serveur lent de lier inutilement une application cliente.
- Transfert de grandes quantités de données. Le transfert de grandes quantités de données entre le client et le serveur, en particulier sur des liens lents, lie à la fois le thread client et le thread du gestionnaire de serveur pendant la durée du transfert. Avec rpc et canaux asynchrones, le transfert de données peut prendre place de manière incrémentielle et sans empêcher le client ou le serveur d’effectuer d’autres tâches.
Vous tirez parti des mécanismes RPC asynchrones en déclarant des fonctions avec l’attribut [asynchrone]. Étant donné que vous effectuez cette déclaration dans un fichier de configuration d’attribut (ACF), vous n’avez pas besoin d’apporter de modifications au fichier IDL (Interface Definition Language) ; rpc asynchrone n’a aucun effet sur le protocole filaire (comment les données sont transmises entre le client et le serveur). Cela signifie que les clients synchrones et asynchrones peuvent communiquer avec une application serveur asynchrone.
Cette section présente une vue d’ensemble du développement d’applications distribuées à l’aide de RPC asynchrone. La vue d’ensemble est présentée dans les sections suivantes :
- déclaration de fonctions asynchrones
- RPC asynchrone côté client
- RPC asynchrone côté serveur
- classement causal des appels asynchrones
- gestion des erreurs
- RPC asynchrone sur le protocole de canal nommé
- à l’aide de RPC asynchrone avec des canaux DCE
- DCOM asynchrone