The purpose of this section is to briefly describe the concept of the Front End Protocol, the communication between the Runtime System and the Front End.
The purpose of the Front End Protocol is to synchronize the Abstract User Interface (AUI) Tree maintained by the Runtime System and the corresponding copy held by the Front End. For more details about these concepts, see the Dynamic User Interface.
The AUI Tree is used by the Front End to create graphical objects. The Front End and the Runtime System have the same version of the AUI Tree. This way, communications correspond to AUI Tree synchronization operations: on one hand the Front End sends modification requests to the Runtime System (also called Front End Events); on the other hand, the Runtime System analyses and validates Front End requests, performs some codes if required, and sends back modification orders.
The following schema describes typical communication between the Runtime System and the Front End:
Compression might be used in the GUI protocol to reduce the amount of data exchanged between the front-end and the application server. Compression is typically useful on slow networks. The compression algorithm is provided by the standard ZLIB library of the system.
Note that when using the Genero Web Client (GWC/GAS), compression is not useful and is automatically disabled.
Compression makes sense on slow networks (for example, with a phone-line dialup modem, or broadband modem based networks); On fast networks (like 100 Mbps Ethernet based networks), compression uses un-necessary processor time.
Compression is disabled by default, and can be enabled with this FGLPROFILE entry:
gui.protocol.format = "zlib"
If the above parameter is defined, but the ZLIB library is not installed on your system or if the ZLIB version is not compatible with the version needed by the Genero runtime system, compression cannot be supported, and the program will stop with error -6317. The ZLIB version must be 1.2.5 (or compatible with version 1.2.5). On Microsoft Windows platforms, the name of the library must be ZLIB1.DLL; Precompiled binary packages can easily be found on the internet. On UNIX platforms, the name of the shared library must be libz.so (normally located in /usr/lib). Note that on Linux distributions, you typically have to install the zlib (or zlib1g) package and create a symbolic link for libz.so. The libz.so file is part of zlib-devel package, thought.
To properly see the GUI communication in a front-end log window, set the environment variable FGLGUIDEBUG to 1. The protocol data will then be indented for a better readability.