Délais d'attente réseau – Comment les définir dans des exemples en C#
Les délais d’attente du réseau peuvent se produire lorsqu’une connexion réseau ne peut pas être établie ou qu’un serveur met trop de temps à répondre. Lorsqu’un délai d’attente réseau se produit, il peut avoir un impact sur la fonctionnalité d’une application logicielle et causer toute une série de problèmes. Cet article explique comment définir des délais d’attente réseau en C# à l’aide d’exemples pratiques. Vous trouverez des exemples C# simples sur la façon de créer un gestionnaire de messages personnalisé pour les délais d’attente des opérations réseau.
Délais d’attente du réseau – Network Timeouts
Le délai d’attente réseau fait référence à la durée pendant laquelle un client, tel qu’une application logicielle, attend une réponse d’un serveur après avoir envoyé une requête. Une valeur de délai est définie pour éviter d’attendre indéfiniment une réponse dans le cas où le serveur n’est pas disponible ou ne répond pas Un délai d’attente réseau est une limite de temps pour terminer une opération réseau, telle que l’envoi d’une requête ou l’attente d’une réponse. Si l’opération réseau dépasse le délai, elle est considérée comme ayant échoué. Le délai d’attente réseau affecte les performances et la fiabilité des communications réseau en déterminant le temps maximum autorisé pour qu’une demande soit traitée avec succès. Lorsque le délai est atteint, l’opération peut être interrompue, ce qui entraîne une erreur ou un échec. Le délai d’attente réseau est un facteur essentiel à prendre en compte lors de la conception d’applications réseau, car il peut affecter la réactivité, la vitesse et la disponibilité de la communication réseau.
Gestionnaire de messages pour les délais de fonctionnement du réseau
Pour définir le délai maximal de fonctionnement du réseau, vous devez définir votre propre gestionnaire de requêtes réseau et l’enregistrer en tête de la file d’attente de ces gestionnaires. Ainsi, toutes les demandes de réseau passeront par lui L’exemple suivant montre comment utiliser cette fonctionnalité. Tout d’abord, créons notre propre gestionnaire d’opérations réseau TimeoutMessageHandler qui fixera le délai d’attente réseau maximal à 1 seconde et transmettra simplement le message en aval de la chaîne.
1// Set custom timeout for network requests in .NET HTML processing
2
3// Define the TimeoutMessageHandler class that is derived from the MessageHandler class
4public class TimeoutMessageHandler : MessageHandler
5{
6 public override void Invoke(INetworkOperationContext context)
7 {
8 context.Request.Timeout = TimeSpan.FromSeconds(1);
9 Next(context);
10 }
11}
Dans l’extrait de code C# ci-dessus, nous définissons une classe personnalisée TimeoutMessageHandler
. Cette classe hérite de la classe
MessageHandler et remplace sa méthode
Invoke(). Dans la méthode Invoke(), un délai d’attente de 1 seconde est défini pour la propriété Request de l’objet
INetworkOperationContext passé en paramètre. La méthode Next() est ensuite appelée pour poursuivre l’exécution du pipeline. Ce gestionnaire de messages personnalisé permet de définir une valeur de temporisation spécifique pour les opérations réseau dans une application.
Network Timeout pour l’ouverture d’un fichier HTML
Lors de requêtes réseau, le délai d’attente est un aspect crucial à prendre en compte. Les documents HTML peuvent contenir des ressources qui se trouvent dans le nuage ou sur un autre serveur. Il arrive que les requêtes adressées à une ressource distante prennent beaucoup de temps ou ne répondent pas, de sorte que l’ouverture d’un document peut prendre un temps infiniment long. Si vous définissez un délai d’attente pour l’opération, vous éviterez les longues attentes, mais le document pourra s’ouvrir sans certaines ressources “problématiques”.
Voici un exemple d’utilisation de la classe TimeoutMessageHandler
pour définir un délai d’attente pour l’ouverture d’un fichier HTML à l’aide de la bibliothèque Aspose.HTML :
1// Set custom request timeout using a message handler
2
3// Create an instance of the Configuration class
4using Configuration configuration = new Configuration();
5
6// Call the INetworkService which contains the functionality for managing network operations
7INetworkService network = configuration.GetService<INetworkService>();
8
9// Add the TimeoutMessageHandler to the top of existing message handler chain
10network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "document.html");
14
15// Create an HTML document with a custom configuration
16using HTMLDocument document = new HTMLDocument(documentPath, configuration);
Dans cet exemple, nous créons une instance de la classe TimeoutMessageHandler
et l’insérons en haut de la liste des gestionnaires de messages dans le service réseau. Enfin, nous créons une instance de la classe
HTMLDocument, en lui passant le chemin d’accès au fichier HTML et l’objet de configuration. La classe HTMLDocument utilisera le service réseau de l’objet de configuration pour effectuer les requêtes réseau nécessaires.
Network Timeout pour convertir HTML
Examinons le code C# qui fixe un délai d’attente de 1 seconde pour les requêtes effectuées par l’intermédiaire de la classe TimeoutMessageHandler
dans une application .NET. L’exemple suivant montre comment définir un délai d’attente pour une opération de conversion HTML. Par conséquent, toutes les opérations réseau qui se produiront pendant la conversion et dureront plus d’une seconde seront interrompues.
1// Set request timeout when converting HTML to PDF
2
3// Create an instance of the Configuration class
4using Configuration configuration = new Configuration();
5
6// Call the INetworkService which contains the functionality for managing network operations
7INetworkService network = configuration.GetService<INetworkService>();
8
9// Add the TimeoutMessageHandler to the top of existing message handler chain
10network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "document.html");
14
15// Prepare a path for converted file saving
16string savePath = Path.Combine(OutputDir, "document.pdf");
17
18// Convert HTML to PDF with customized configuration
19Converter.ConvertHTML(documentPath, configuration, new PdfSaveOptions(), savePath);
Dans cet exemple, le TimeoutMessageHandler
est ajouté à la collection MessageHandlers de l’INetworkService, et la valeur du timeout est fixée à 1 seconde. La classe HTMLDocument est ensuite utilisée pour charger le fichier HTML et effectuer la conversion.
En utilisant la classe TimeoutMessageHandler et en gérant correctement les délais d’attente du réseau, vous pouvez garantir à l’utilisateur une expérience fiable et efficace lors de la conversion de fichiers HTML.
Vous pouvez télécharger les exemples complets et les fichiers de données sur GitHub.