logo
small logo
  • Producto
  • Comprar
  • Ayuda
  • About
  • Consola de usarios Ayuda
    • en
    • de
    • JP
    • ZH
  • Página principal
  • /
  • Blogs
  • /
  • Informes web en Lazarus en Linux
  • Instalación de FastReport en Lazarus

    17 de marzo de 2021

    Como parte del programa educativo Académico, hemos decidido producir algunos artículos de apoyo para los

    read more
  • Hacer un informe detallado en FastReport VCL (Delphi / Lazarus)

    9 de febrero de 2021

    "Drill Down" o "profundización en los datos" es un concepto de muchos aspectos, que puede

    read more
  • Cómo crear un solo informe de varios en Delphi / Lazarus / C++ Builder

    11 de diciembre de 2020

    Me gustaría señalar que FastReport VCL es uno de los componentes más convenientes para generar

    read more
  • Cómo crear códigos de barras CODE 39 y CODE 39 Extended con Delphi / Lazarus

    23 de octubre de 2020

    CODE 39 es el código de barras desarrollado por Intermec Corporation en 1975. En el

    read more
  • Cómo generar código de barras ITF (intercalado, industrial, matricial) con Delphi / Lazarus / C ++ Builder

    11 de noviembre de 2020

    Un poco de teoría sobre los códigos de barras Es difícil imaginar nuestra vida sin códigos

    read more

Informes web en Lazarus en Linux

15 de diciembre de 2020

Hasta hace poco, generar informes a través de la Web desde una aplicación escrita en Lazarus era, digamos, muy creativa. Hoy nos complace anunciar el lanzamiento de componentes cliente-servidor para Lazarus en pruebas beta. Se pueden utilizar para crear y personalizar un servidor para la generación y exportación de informes remotos, mientras que su programa y navegador web pueden actuar como un cliente.

Los componentes cliente-servidor en FastReport VCL se implementaron hace mucho tiempo, pero antes no se habían adaptado para Lazarus y había funcionado solo en Rad Studio Delphi y C ++ Builder.

El artículo será útil no solo para aquellos que nunca los han usado antes, sino también para aquellos que quieren migrar su servidor FR a Linux, ya que describe honestamente todas las ventajas y desventajas. También descubrimos un problema en el propio Lázaro y encontramos la manera de resolverlo.

Y ahora pasemos al aspecto técnico del problema.

Componentes cliente-servidor para informes en Lazarus

Los componentes cliente-servidor de Lazarus están disponibles en dos sistemas operativos: Windows y Linux (solo GTK2). Se implementan en el paquete "fr6CS_lazarus.lpk", cuyas dependencias especifican el paquete de exportación y, por lo tanto, el paquete de exportación ubicado en la carpeta "Source / ExportPack" debe instalarse antes de la instalación.

Después de instalar el paquete de componentes cliente / servidor, tendrá una nueva pestaña llamada "FastReport 6.0 Cliente / Servidor", donde encontrará 4 componentes:

Informes web en Lazarus en Linux

1. TfrxReportServer es un componente de servidor, un servidor de informes y un servidor HTTP dos en uno. Su campo más importante es ConfigFileName, donde se debe especificar la ruta al archivo xml con una configuración.

Puede especificar muchas configuraciones en este archivo, estas son solo las más importantes:

  • Configuración del servidor en sí, como el puerto y el tiempo de espera;
  • Configuración del motor FR, como deshabilitar la ejecución de scripts;
  • Amplias configuraciones de exportación;
  • Configuración de caché, como la duración del archivo de caché, la ubicación del almacenamiento de caché o puede deshabilitarlo por completo;
  • Configuración del sistema de registro;
  • Configuración de conexión a la base de datos.

Puede leer más sobre todas las configuraciones aquí. 

2. TfrxServerConnection es un componente de cliente que contiene información para la conexión remota a TfrxReportServer, como: host, puerto, número de intentos de error, tiempo de espera, etc.

3. TfrxReportClient, un componente de cliente, análogo a TfrxReport, realiza una solicitud de informe en el servidor y lo muestra en el cliente. Utiliza este componente TfrxServerConnection para obtener información sobre el servidor. Puede recibir un informe construido desde el servidor y mostrarlo o exportarlo solo (en la máquina del cliente).

4. TfrxHTTPClient es un componente de cliente diseñado para recibir archivos arbitrarios a través del protocolo HTTP. Por ejemplo, puede solicitar informes ya exportados desde el servidor.

También proporcionamos 3 aplicaciones de demostración:

1 del servidor que va junto con informes y bases de datos;
2 del cliente: simple y "avanzado".

Como cliente "avanzado", puede realizar pruebas multiproceso de soporte de carga presionando el botón Start:

Informes web en Lazarus en Linux

También nos gustaría recordarle que el cliente puede ser un navegador normal y la generación del sitio web para el cliente web también se puede configurar a su gusto, mientras que el servidor de demostración ya está configurado para el cliente web.

Informes web en Lazarus en Linux

"Cuello de botella" GTK2

Lazarus es un IDE de código abierto multiplataforma. Pero este perfume lujoso, lamentablemente, también tiene una una mosca dentro. Empezaremos por el más desagradable, a saber, el servidor Linux.

GTK2 tiene una propiedad extremadamente desagradable: un solo subproceso.

Esto significa que incluso si 2 programas dibujarán cifras en su BitMap en un ciclo sin fin, GTK2 reducirá todo a 1 flujo. Por lo tanto, en total, estos 2 programas dibujarán menos cifras de las que habría dibujado un programa, porque parte del tiempo se dedicará a la sincronización.

Pero en este caso la sincronización se organiza sin nuestra participación.

Tomemos ahora, por ejemplo, la situación en la que las cifras son dibujadas por 1 programa en varios flujos (cada flujo tiene su propio mapa de bits local). En este caso, tendrá que crear un sistema de bloqueo en su código, porque recordamos acerca de los subprocesos individuales de esta biblioteca. Pero estas no deberían ser secciones críticas ordinarias, sino secciones críticas globales a nivel GTK2. Y cuando uno de los hilos entra en esta función crítica, incluso la forma básica se cuelga hasta que sale de ella.

El subproceso múltiple con imágenes solo se puede organizar encontrando un componente de dibujo similar que sea independiente de GTK2 (por ejemplo, para este ejemplo con imágenes), en nuestro caso, otro componente no es adecuado.

Por lo tanto, algunas operaciones del servidor se reducen a una secuencia.

Y debido a esta característica, en particular, es mejor no usar diálogos, porque mientras 1 cliente responda a un diálogo, la construcción de informes para otros clientes se detenrá.

Puede surgir la pregunta: "¿Por qué necesita un servidor de un solo subproceso?" y estará parcialmente en lo cierto, ya que es similar al problema del "cuello de botella" en las carreteras donde la capacidad total de la carretera es igual a la capacidad de la carretera en el lugar más estrecho.

Pero tendrá razón solo en parte. Solo 3 grandes operaciones se reducen a un solo flujo: carga de informes, creación y exportación. La recepción y la transferencia se llevan a cabo en paralelo y, gracias al sistema de almacenamiento en caché de los informes creados, en algunos casos no será necesario volver a crearlos.

Y esto, en combinación con un servidor potente, hará que este problema sea mucho menos visible. También es un problema solo para Linux (GTK2), porque este problema no existe en Windows, y con el lanzamiento de GTK3 (que ya soporta multihilo) en Lazarus desaparecerá por completo.

El resto de los problemas son muchas veces más pequeños e incluso minúsculos en comparación con este.

Lo que queda atrás

Una pequeña parte de la funcionalidad se eliminó durante la migración, a saber, el CGI y el sistema de autorización. La rapidez con la que los implementemos depende de las solicitudes reales de nuestros clientes.

Exportar a HTML para Lazarus aún está lejos de ser perfecto, el cliente web puede y debe usarse, porque es conveniente, pero los informes no se mostrarán perfectamente.

Sin embargo, puede configurar el sistema para que el cliente web reciba informes exportados no en HTML sino en PDF, por ejemplo. Después de todo, la mayoría de los navegadores modernos pueden mostrar archivos PDF perfectamente. Hemos implementado muy bien este formato de exportación, que puede comprobar usted mismo.

Corrección de un error en la cola de mensajes de Lazarus 2.0.10

También para aquellos que quieran usar nuestros nuevos componentes en Linux, vale la pena mencionar una cosa importante: encontramos un error al bloquear la cola de mensajes y no pudimos omitirlo. Pudimos contactar a los programadores en Lazarus, ellos ya han solucionado este problema y en la próxima versión de Lazarus todo funcionará de manera constante. Por ahora, en la versión 2.0.10 y posteriores, este error deberá corregirse localmente. No tomará mucho esfuerzo ni tiempo, todo lo que tiene que hacer es añadir 3 líneas a uno de los archivos de Lazarus y reconstruirlo:

1. Abra la carpeta donde se encuentra Lazarus (en Ubuntu, por ejemplo "/usr/share/lazarus/2.0.10")
2. Abra el archivo ~ / lcl / interfaces / gtk2 / gtk2msgqueue.pp en él.
3. Busque el procedimiento: procedimiento TGtkMessageQueue.Lock;
4. En este procedimiento, busque la línea: g_main_context_acquire (FMainContext);

Este código ignora el hecho de que la función g_main_context_acquire puede fallar.

Así que reemplázalo con:

repeat
until g_main_context_acquire(FMainContext);

Es decir, llamamos a g_main_context_acquire en un ciclo hasta que devuelve True (completado con éxito).

Le invitamos a que pruebe nuestros nuevos componentes para Lazarus, pero nos gustaría recordarle que esta es una versión beta y mejorará según tus necesidades. En caso de cualquier error, póngase en contacto con el soporte.

about product comprar
avatar
Sergey Plastun
VCL Development
Fast Reports Team: Sergey Plastun - VCL Development at Fast Reports
VCL Lazarus FastReport Linux WebReport Delphi

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Comprar
  • Descargar
  • Documentación
  • Opiniones de usuarios
  • Cómo desinstalar nuestros productos
  • FAQ
  • Toturial en vídeo
  • Foro
  • Support SLA
  • Documentación técnica
  • Nuestras noticias
  • Quiénes somos
  • Socios
  • Extended licensing
  • Contactos

© 1998-2023 by Fast Reports Inc.

  • Privacidad

Trustpilot