ユーザーが同じマージサーバーアプリケーションの多くのインスタンスに接続する必要がある場合があります。このような場合、マージされたクライアントアプリケーションは、サーバー接続と同じ数のローカルリソースをダウンロードします。しかし、サーバーのリソースフォルダーが巨大な場合、これは時間、ボリューム、ネットワークのかなりの消耗になりえます!幸いなことに、4D v18 R5には、このシナリオのためのソリューションがあります!
上の図のように、リモートアプリケーションを複数のサーバーに接続すると、システム内のこのローカルリソースフォルダを取得することになります。
サーバーの時間のかかるリソースフォルダーを使用するのではなく、これらの厳密に同一のサーバー間で同じローカルリソースフォルダーを共有することができるのです。
レガシーREMOTEアプリケーション
新しいbuildAppキーは、ローカルのResourcesフォルダーを共有するために自由に使用できます。
<BuildApp>
<CS>
<ClientServerSystemFolderName>myApp</ClientServerSystemFolderName>
サーバーに接続すると、サーバーの情報がアプリケーションのビルド時に設定した文字列に置き換わります。最終的なキーは、同じコンピューターでいくつでもリモートアプリケーションを使えるようにするために残しています。これで、ローカルのResourcesフォルダはこのようになります。
サーバーへの接続は、常に内蔵のログインダイアログを使用して行うことができます。この場合、使用されるキャッシュフォルダは、カスタム情報(アプリケーション名、IP、ポート)で構成されたものではなく、アプリケーションのビルド時に設定されたものであることがわかります。
REMOTEでCUSTOM接続ダイアログを実行する
このブログ記事では、マージされたリモートアプリケーションで、従来の4D接続ダイアログの代わりに接続データベースを使用する方法について学びました。この動作は、OPEN DATABASE コマンドでカスタム 4DLink ファイルを使用することに基づいています。
4DLinkファイルの新しいキーcache_folder_nameを使って、ローカルリソースのルート名を定義することができます。
このブログの記事と同じ例で、サーバー選択ダイアログのコードスニペットを以下に示します。 FormselectedServer は4Dサーバーの情報を含んでいます。
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
留意点
サーバーアプリケーションのパッケージを変更した場合、ローカルリソースの自動更新は、異なるパッケージごとに実行されます。しかし、すべてのサーバーアプリケーションパッケージが厳密に同一である限り、ローカルリソースは必要なときだけダウンロードされます。