Utilisation de plusieurs modules de données serveur
Remonter à Création de l'application serveur
Vous pouvez structurer votre serveur d’applications de telle sorte qu’il utilise plusieurs modules de données distants. Le recours à plusieurs modules de données distants vous permet de partitionner votre code, d’organiser un serveur d’applications volumineux en plusieurs unités relativement autonomes.
Bien que vous puissiez toujours créer sur le serveur d’applications plusieurs modules de données distants fonctionnant indépendamment, un composant connexion spécial figurant sur la catégorie DataSnap de la palette d'outils fournit le support d’un modèle dans lequel un module de données distant "parent" principal répartit les connexions des clients parmi les modules de données distants "enfant". Ce modèle nécessite que vous utilisiez un serveur d’applications basé sur COM, ce qui signifie que le modèle le prend pas en charge le module TSoapDataModule, ni le module TSoapDataModule.
Pour créer le module de données distant parent, vous devez étendre son interface IAppServer en ajoutant les propriétés qui exposent les interfaces des modules de données distants enfant. En d'autres termes, pour chaque module de données distant enfant, ajoutez une propriété à l'interface du module de données parent dont la valeur représente l'interface IAppServer interface du module de données enfant. La méthode d'accès en lecture à une propriété doit ressembler à ceci :
function ParentRDM.Get_ChildRDM: IChildRDM;
begin
if not Assigned(ChildRDMFactory) then
ChildRDMFactory :=
TComponentFactory.Create(ComServer, TChildRDM, Class_ChildRDM,
ciInternal, tmApartment);
Result := ChildRDMFactory.CreateCOMObject(nil) as IChildRDM;
Result.MainRDM := Self;
end;
Pour plus d'informations sur l’extension de l’interface du module de données distant parent, voir Extension de l'interface du serveur d'applications.
Conseil : Vous pouvez également étendre l'interface de chaque module de données enfant en exposant l'interface du module de données parent ou les interfaces des autres modules de données enfant. Cela facilite la communication entre les différents modules de données de votre serveur d’applications.
Une fois que les propriétés qui représentent les modules de données distants enfant ont été ajoutées au module de données distant principal, les applications client n’ont pas besoin d’établir de connexions distinctes à chaque module de données distant sur le serveur d’applications. En effet, elles partagent une connexion unique au module de données distant parent, qui répartit ensuite les messages parmi les modules de données "enfant". Etant donné que chaque application client utilise la même connexion pour chaque module de données distant, les modules de données distants peuvent partager une connexion de base de données unique, ce qui permet d’économiser les ressources. Pour plus d'informations sur la partage d’une connexion unique par les applications enfant, voir Connexion à un serveur d'applications qui utilise plusieurs modules de données.