Construir un diálogo de conexión remota personalizado

Traducido automáticamente de Deepl

¿Necesita construir un diálogo de conexión 4D personalizado? ¿Está interesado en conectar su aplicación cliente a diferentes servidores? Estos son dos escenarios que 4D v18 le permite manejar. Esta entrada del blog es para usted si desea crear un diálogo de conexión remota personalizado y conectarlo a servidores 4D fusionados. Siga leyendo.

¿Por qué debería escribir mi propio diálogo de conexión?

Hay varios casos de uso para modificar el diálogo de conexión incorporado de 4D:

  • PERSONALIZACIÓN

Usted desea personalizar el diálogo estándar para las conexiones remotas al servidor.

  • MÚLTIPLES FILIALES

Cuando despliegue su aplicación y cree varias bases de datos distintas. Por ejemplo, una base de datos diferente para cada filial de un grupo. En la base de datos de conexión, puede gestionar a qué servidores y bases de datos pueden conectarse los usuarios y permitirles conectarse directamente.

  • BASE DE DATOS DE ARCHIVOS

Otra forma de utilizar un diálogo personalizado es elegir a qué base de datos de ejercicios archivados pueden acceder los usuarios.

  • PORTAL DE APLICACIONES

Si despliega varios productos y quiere que sus usuarios utilicen una única aplicación «portal» para conectarse a cada producto.

Caso de uso

Un editor de software tiene una granja de servidores alojada en la nube en la que cada servidor corresponde a una necesidad empresarial específica. Anteriormente, desplegaban tantas aplicaciones remotas como el número de usuarios que podían acceder a los servidores. Ahora, pueden desplegar una única aplicación remota para todos los servidores con una base de datos de «directorio». Mediante peticiones HTTP o almacenes de datos remotos, cada servidor envía su estado e información de conexión al servidor «directorio». La aplicación fusionada conectada puede entonces consultar la base de datos del directorio, ver una lista de servidores disponibles y conectarse a uno.

¿Cómo hacerlo?

CREAR UNA BASE DE DATOS DE CONEXIÓN

En primer lugar, es necesario crear una base de datos de conexión que contenga su propio diálogo de conexión. El comando OPEN DATABASE ha sido ampliado para permitir la conexión a un 4D Server. Genere un archivo 4DLink que contenga la ubicación y el puerto del servidor, y páselo como parámetro al comando. La aplicación autónoma detendrá automáticamente su código y se conectará al servidor, convirtiéndose en una típica aplicación remota.

Aquí hay un fragmento de código de un diálogo de selección de servidor donde Form.selectedServer contiene la información de 4D Server:

If (Form.selectedServer#Null)
C_TEXT ($xml)
C_OBJECT ($link)
$xml :="<?xml version="1.0\" encoding="UTF-8\"?><database_shortcut is_remote="true" server_database_name="FA_RemoteConnexionServ" server_path=""+Form.selectedServer.IP+": "+Form.selectedServer.portID+"\>"
$link :=Folder(fk user preferences folder).file ("servidor.4dlink")
$link .setText($xml)
OPEN DATABASE ($link.platformPath)
End if

Cuando su base de datos de conexión esté lista, sólo tiene que construir una base de datos compilada.

FUSIONAR LA BASE DE DATOS DE DESTINO

Sólo las aplicaciones cliente fusionadas pueden conectarse a los servidores fusionados. Por lo tanto, hemos desarrollado un nuevo mecanismo en el proceso de construcción de la aplicación para permitir incrustar la base de datos de conexión en la aplicación cliente fusionada.

Hemos creado las nuevas claves de BuildApp, DatabaseToEmbedInClientWinFolder y DatabaseToEmbedInClientMacFolder, para contener las rutas de la base de datos de conexión compilada. De esta manera, cuando se construya la aplicación cliente/servidor final, el proceso de construcción de la aplicación incrustará la base de datos de conexión compilada en la aplicación cliente y cambiará su nombre.

Esta aplicación puede ejecutarse sin un archivo de datos ni ninguna licencia. Sin embargo, si necesita un archivo de datos, puede colocar un archivo «Default Data.4DD» en una carpeta «Default Data» cerca de la estructura compilada. En este caso, la licencia para una aplicación fusionada independiente se integra durante el proceso de construcción de la aplicación.

Esta es una estructura de aplicación cliente fusionada sin base de datos incrustada («legacy client»):

Este es un ejemplo de claves de BuildApp para incrustar una aplicación de conexión:
<DatabaseToEmbedInClientMacFolder>
::connectionApp_Build:Compiled Database:connectionApp:
</DatabaseToEmbedInClientMacFolder>

Esta es una base de datos de conexión compilada:
blank

Y por último, esta es una estructura de aplicación cliente fusionada:
blank

¿CÓMO FUNCIONA?

En el momento de la ejecución, la aplicación cliente fusionada abrirá la base de datos de conexión integrada y, a continuación, permitirá al usuario seleccionar el servidor fusionado al que conectarse. Si se utiliza un archivo de datos por defecto, estará en modo de sólo lectura.

Tenga en cuenta que el proceso de actualización automática del servidor fusionado sigue estando disponible. Cuando la aplicación de conexión fusionada se conecta al servidor, si su versión no está en el rango del servidor, se lanza una actualización automática como lo haría si la aplicación fuera una aplicación cliente fusionada estándar.

Avatar
• Propietario de producto - Damien Fuzeau se ha unido al equipo de 4D Product en febrero de 2019. Como Propietario de producto, está a cargo de escribir historias de usuario, y luego traducirlas a especificaciones funcionales. Su trabajo también implica asegurarse de que las implementaciones de funcionalidades entregadas estén cumpliendo con las necesidades del cliente. Damien es licenciado en ingeniería de software por la Universidad de Nantes. Estuvo más de 23 años en su anterior empresa, primero como desarrollador (descubriendo 4D en 1997), y más tarde como gerente de ingeniería y arquitecto de software. Esta compañía es un Partner OEM de 4D y ha desplegado softwares empresariales basados en 4D para miles de usuarios, en cientos de servidores. Por lo tanto, Damien está acostumbrado al desarrollo y despliegue de 4D en un contexto multilingüe.