Optimice su código ORDA con el registro de solicitudes

Traducido automáticamente de Deepl

¿Alguna vez ha necesitado analizar el tráfico de sus peticiones ORDA entre un cliente y el servidor 4D? ¡A veces puede tomar un tiempo para recibir una respuesta del servidor, lo que puede hacer que se pregunte si es debido al tráfico de la red o a una petición no optimizada que ha escrito! Afortunadamente, 4D v17 R6 permite determinar la(s) razón(es) probable(s) de esta latencia con los nuevos métodos ORDA disponibles en el objeto ds objeto. No sólo son funciones de depuración, también le permiten optimizar su código ORDA con una mejor comprensión de las peticiones enviadas.

Habilitar el registro de peticiones ORDA

El método miembro startRequestLog() es muy flexible ya que puede registrar las peticiones ORDA en un archivo o en la memoria.

registrar en un archivo

Para registrar en un archivo, simplemente llama a startRequestLog() con un objeto File indicando dónde se registrarán las peticiones ORDA. En el ejemplo siguiente, ejecutamos una consulta sobre un campo no indexado que puede tardar algún tiempo. Gracias a esta nueva funcionalidad, podemos comprobar la duración de nuestras peticiones:

C_OBJECT($employees;$file)
$file :=File("/PACKAGE/Logs/ORDARequests.txt")
$file .delete()
ds .startRequestLog($file)
$employees :=ds.Employee.query("firstname = :1"; "abcd") //firstname is not indexed

ds .stopRequestLog()

Cada solicitud se registra como una representación JSON de un objeto.

Este es el contenido del archivo ORDARequests.txt:

[
{
..
.
"startTime": "2019-07-02T12:33:25.922Z",
"endTime": "2019-07-02T12:33:27.681Z",
"duration":4200,
"response":{ ...}
...
}
]

registro en la memoria

Cada petición puede ser registrada como un objeto en una colección que puede ser recuperada usando el método getRequestLog() método miembro.

Como devuelve una colección, puede utilizar todos los métodos de colección disponibles.

C_OBJECT($first;$e)
C_COLLECTION (
$log)

ds .startRequestLog(10) // Only the last 10 requests will be kept in memory
$first :=ds.Persons.all().first()
$e :=ds.Persons.query("name=:1"; "Brown")
$log :=ds.getRequestLog()
ALERT ("La petición más larga ha durado: "+String($log.max("duration"))+" ms")
ds .stopRequestLog()

desactivar el registro de peticiones ORDA

Para dejar de registrar las peticiones de ORDA, basta con llamar al método stopRequestLog() como se muestra en los ejemplos anteriores.

Avatar
• Propietario de producto - Marie-Sophie Landrieu-Yvert ingresó al equipo de 4D Product como Propietario de producto en 2017. Como tal, está a cargo de escribir las historias de los usuarios y luego traducirlas en especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Marie-Sophie se graduó en la Escuela de Ingeniería de ESIGELEC y comenzó su carrera como ingeniera en IBM en 1995. Participó en varios proyectos (de mantenimiento y creación) y trabajó como desarrolladora de Cobol. Luego trabajó como diseñadora de UML y desarrolladora de Java. Sus principales funciones fueron analizar y redactar requisitos funcionales, coordinar los equipos de negocio y de desarrollo.