Multiple servers, one shared local resources

Automatically translated from English

There may be times when you might need users to connect to many instances of the same merged server application. When this happens, the merged client application downloads as many local resources as the server connections. But if your server’s Resources folder is huge, this can be quite a drain on time, volume, and network! Fortunately, 4D v18 R5 has a solution for this scenario!

Connecting your remote application to several servers, as described in the above picture, results in obtaining this local Resources folder in the system:

Rather than using the server’s time-consuming Resources folder, you have the ability to share the same local Resources folder between all these strictly identical servers.

Legacy REMOTE applications

A new buildApp key is at your disposal to share the local Resources folder:

<BuildApp>
  <CS>
    <ClientServerSystemFolderName>myApp</ClientServerSystemFolderName>

When connecting to a server, the server information is replaced by the string you set when building the application. We’ve kept the final key to allow you to use as many remote applications as you want on the same computer. The local Resources folder now looks like this:

You can always connect to the server using the built-in login dialog. In this case, the cache folder that is used is no longer the one composed of your custom information (application name, IP, and port), but the one set when the application was built.

REMOTE running CUSTOM connection DIALOG

In this blog post, we learned how to use a connection database instead of the legacy 4D connection dialog in your merged remote applications. The behavior is based on using a custom 4DLink file with the OPEN DATABASE command.

You can define the local resources root name using the new key cache_folder_name in the 4DLink file.

Using the same example as in the previously mentioned blog post, here’s the code snippet from a server selection dialog where Form.selectedServer contains the 4D Server information:

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+"\" cache_folder_name=\""+Form.selectedServer.customCacheFolder+"\"/>"
 $link:=Folder(fk user preferences folder).file("server.4dlink")
 $link.setText($xml)
 OPEN DATABASE($link.platformPath)
End if

Keep in mind

If you modify your server application package, the automatic local resources update will be performed for each different package. But as long as all your server application packages are strictly identical, the local resources are downloaded only when needed: at the first server connection!

Avatar

• Product Owner •

Damien Fuzeau has joined the 4D Product team in February 2019. As a Product Owner, he is in charge of writing user stories, then translating them to functional specifications. His job also entails making sure that the feature implementations delivered are meeting the customer needs.

Damien is graduated from the University of Nantes in software engineering. He spent more than 23 years in its former company, first as developer (discovering 4D in 1997), and later as engineering manager and software architect. This company is a 4D OEM partner and deployed 4D based business softwares for thousands users, on hundreds servers. So, Damien is used to 4D development and deployment in a multi-language context.