Tiempos de espera de red – Network Timeouts

Los tiempos de espera de la red pueden ocurrir cuando no se puede establecer una conexión de red o cuando un servidor tarda demasiado en responder. Cuando se produce un tiempo de espera de la red, puede afectar la funcionalidad de una aplicación de software y causar una variedad de problemas. Este artículo discutirá cómo configurar tiempos de espera de red en C# con ejemplos prácticos. Encontrará ejemplos sencillos de C# sobre cómo crear un controlador de mensajes personalizado para tiempos de espera de operación de red.

Tiempos de espera de red – Network Timeouts

El tiempo de espera de la red se refiere a la cantidad de tiempo que un cliente, como una aplicación de software, espera una respuesta de un servidor después de enviar una solicitud. Se establece un valor de tiempo de espera para evitar esperar indefinidamente una respuesta en caso de que el servidor no esté disponible o no responda.
Un tiempo de espera de red es un límite de tiempo para completar una operación de red, como enviar una solicitud o esperar una respuesta. Si la operación de la red excede el tiempo de espera, se considera que ha fallado. El tiempo de espera de la red afecta el rendimiento y la confiabilidad de las comunicaciones de la red al determinar la cantidad máxima de tiempo permitido para que una solicitud se complete con éxito. Cuando se alcanza el tiempo de espera, la operación puede finalizar, lo que resulta en un error o falla. El tiempo de espera de la red es un factor esencial a considerar al diseñar aplicaciones de red porque puede afectar la capacidad de respuesta, la velocidad y la disponibilidad de la comunicación de la red.

Controlador de mensajes para tiempos de espera de operación de red

Para establecer el tiempo de espera máximo de operación de la red, deberá definir su propio controlador de solicitudes de red y registrarlo en la parte superior de la cola de dichos controladores. Por lo tanto, todas las solicitudes de red pasarán por él.
El siguiente ejemplo muestra cómo utilizar esta funcionalidad. Primero, creemos nuestro propio controlador de operaciones de red TimeoutMessageHandler que establecerá el tiempo de espera máximo de la red en 1 segundo y simplemente pasará el mensaje más abajo en la cadena.

1// Define the TimeoutMessageHandler class that is derived from the MessageHandler class
2public class TimeoutMessageHandler : MessageHandler
3{
4    public override void Invoke(INetworkOperationContext context)
5    {
6        context.Request.Timeout = TimeSpan.FromSeconds(1);
7        Next(context);
8    }
9}

En el fragmento de código C# anterior, definimos una clase personalizada TimeoutMessageHandler. La clase hereda de la clase MessageHandler y anula su método Invoke(). En el método Invoke(), se establece un tiempo de espera de 1 segundo para la propiedad Solicitud del objeto INetworkOperationContext pasado como parámetro. Luego se llama al método Next() para continuar la ejecución de la canalización. Este controlador de mensajes personalizado puede establecer un valor de tiempo de espera específico para las operaciones de red en una aplicación.

Tiempo de espera de red para abrir un archivo HTML

Al realizar solicitudes de red, el tiempo de espera de la red es un aspecto crucial a considerar. Los documentos HTML pueden incluir recursos que se encuentran en la nube o en otro servidor. A veces, las solicitudes a un recurso remoto tardan mucho tiempo o no responden, por lo que abrir un documento puede llevar un tiempo infinitamente largo. Si establece un tiempo de espera para la operación, evitará largas esperas, pero es posible que el documento se abra sin algunos recursos “problemáticos”.

Aquí hay un ejemplo de cómo puede usar la clase TimeoutMessageHandler para establecer un tiempo de espera para abrir un archivo HTML usando la biblioteca Aspose.HTML:

 1// Create an instance of the Configuration class
 2using var configuration = new Configuration();
 3
 4// Call the INetworkService which contains the functionality for managing network operations
 5var network = configuration.GetService<INetworkService>();
 6
 7// Add the TimeoutMessageHandler to the top of existing message handler chain
 8network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
 9
10// Prepare path to a source document file
11string documentPath = Path.Combine(DataDir, "document.html");            
12
13// Create an HTML document with a custom configuration
14using var document = new HTMLDocument(documentPath, configuration);

En este ejemplo, creamos una instancia de la clase TimeoutMessageHandler y la insertamos en la parte superior de la lista de controladores de mensajes en el servicio de red. Finalmente, creamos una instancia de la clase HTMLDocument, pasando la ruta al archivo HTML y el objeto de configuración. La clase HTMLDocument utilizará el servicio de red del objeto de configuración para realizar las solicitudes de red necesarias.

Tiempo de espera de red para convertir HTML

Veamos el código C# que establece un valor de tiempo de espera de 1 segundo para las solicitudes realizadas a través de la clase TimeoutMessageHandler en una aplicación .NET. El siguiente ejemplo muestra cómo establecer un tiempo de espera para una operación de conversión HTML. Como resultado, se interrumpirán todas las operaciones de red que se produzcan durante la conversión y que duren más de un segundo.

 1// Create an instance of the Configuration class
 2using var configuration = new Configuration();
 3
 4// Call the INetworkService which contains the functionality for managing network operations
 5var network = configuration.GetService<INetworkService>();
 6
 7// Add the TimeoutMessageHandler to the top of existing message handler chain
 8network.MessageHandlers.Insert(0, new TimeoutMessageHandler());
 9
10// Prepare path to a source document file
11string documentPath = Path.Combine(DataDir, "document.html");
12
13// Prepare a path for converted file saving 
14string savePath = Path.Combine(OutputDir, "document.pdf");
15
16// Convert HTML to PDF with customized configuration
17Converter.ConvertHTML(documentPath, configuration, new PdfSaveOptions(), savePath);

En este ejemplo, TimeoutMessageHandler se agrega a la colección MessageHandlers de INetworkService y el valor de tiempo de espera se establece en 1 segundo. Luego, la clase HTMLDocument se utiliza para cargar el archivo HTML y realizar la conversión.

Al utilizar la clase TimeoutMessageHandler y gestionar correctamente los tiempos de espera de la red, puede garantizar una experiencia confiable y eficiente para el usuario al convertir archivos HTML.

Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.