HF en client/Serveur
Anonyme
Bonjour tout le monde.

Je suis en windev 9 et je viens juste de creer une petite appli pour tester HF en client/serveur. j'ai donc testé dans mon appli la difference entre HF classique et HF client serveur et a mon grand etonnement, HF classique est beaucoup plus rapide que HF CS.

Dans mon test, je parcours juste un fichier de 10000 enregistrements et a chaque parcours je fais un hmodifie

ex:
hlipremier(MonFichier,Macle)
tantque pas hendehors()
hmodifie(MonFichier)
hlitsuivant(MonFichier)
fin

en HF classique, mon traitement dur 2 secondes et en HF CS, mon traitement dure 30 secondes

Est-ce quelqu'un d'entre vous a deja testé HF CS et a rencontré des problemes similaire???

Merci.

Contribution le : 21/04/2005 18:31
Créer un fichier PDF de la contribution Imprimer


Re: HF en client/Serveur
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Conclusion un peut simpliste
Il ne s'agit pas d'un probleme au niveau du moteur mais plus d'un problème au niveau du mode de programmation.

Il faut commencer par comprendre la technologie des deux systemes qui sont mit à votre disposition:

- Hyper File Classisque:
Vous traivaillez sur des fichiers sur lesquelles vous disposez d'un acces direct soit en local soit sur un serveur qui partage le répertoire qui contient les fichiers de données

Chaques fonctions H* sont appliquées directement sur le fichiers de données. Accès très rapide langage dit natif au moteur de données.
Ce qui ralentit le traitement dans ce cas n'est pas le nombre de lecture / ecriture faite sur le fichier (un par ordre lancé) mais plutot le taux de trafic du réseau (100 mbits ayant de meilleurs temps de réponse que sur du 10 mbits) quoi encore certains postes mal configurés peuvent ralentir aussi le trafic
Les fonctions H* manipule le fichier enregistrement par enregistrement

Si vous utilisé cette technique sur un Client / Serveur cela correspont à autant de requête lancer sur le serveur qu'il existe de commande H* dans votre boucle ce qui est completement innadapté.

- En Client / Serveur
En Client / serveur on utilisera de préférence donc des requêtes SQL qui manipuleront les données par paquets
Une demande = plusieurs lignes retournées, modifiées ou supprimées selon le besoin.

Le trafic utilisé est alors limité entre le client et le serveur un orde passé pour manipuler plusieurs enregistrement.
L'ordre est alors envoyé au serveur qui lui meme l'exécute en local ce qui est très rapide.

Ayez toujours à l'esprit qu'en client / serveur il faut que le serveur interprête les requêtes avec dans certain cas du cryptage + de la compression à chaque dialogue, d'ou l'intéret de limiter le nombre de demande.

Le language SQL est adapté pour cela

Exemple
En HF classique
votre boucle avec les ordre H* ne fait que déplacer le curseur du fichier d'enregistrement en enregistrement (En local ou meme en reseau cela reste très rapide)

Cette technique utilisé sur un client serveur
pour chaque ordre H* une requête est préparée puis envoyée au serveur qui l'interprête en locale puis l'exécute. Prépare la réponse et enfin vous la renvoie avec tout ce que ce type de dialogue peut engendrer comme ressources nécessaires.
(Autant d'échange qu'il y a de fonctions H*)

Avec le language Sql:
La requête est envoyer au serveur, interprétée sur le serveur puis exécuter, Cela peut agir sur un paquet de données ou bien meme sur la totalité du fichier, ensuite le contre rendu ou résultat, est renvoyer au client(Un seul echange)


par exemple dans votre cas les vues serait les bien venues
on récupères l'intégralitée des enregistrement, on les modifies un par un en local et on demande ensuite d'appliquer les modifs sur le serveur en une seul fois.
(Bien sur je considère ici que chaque valeur à modifier est différentes ou variables pour chacun des enregistrements

Dans le cas contraire s'il s'agissait de modifier la valeur d'une rubrique de tous les enregistrement avec une valeur unique il serait préférable d'utiliser une simple requête SQL du type:

UPDATE SET = WHERE =

Contribution le : 22/04/2005 12:01
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: HF en client/Serveur
Anonyme
Merci pour cette réponse.

Donc si j'ai bien compris, il faut que j'utilise au maximum des requetes SQL et que je mette de côté les parcours de fichier avec hlitpremier et hlitsuivant.

Contribution le : 22/04/2005 14:56
Créer un fichier PDF de la contribution Imprimer


Re: HF en client/Serveur
Animateur WDF
Inscrit:
29/07/2002 12:31
De 59000, Lille
Post(s): 239
a mettre en FAQ

Contribution le : 22/04/2005 15:55
Créer un fichier PDF de la contribution Imprimer


Re: HF en client/Serveur
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Oui en Clients / Serveur il est recommandé d'utiliser tous ce qui peut optimiser les temps de réponse et faire transiter le minimim d'information (En clair le strict minimum)
Pensez a filtrer via Filtrer vos fichiers (HFiltre)lorsque les requêtes sont portées sur un seul fichier.

Pensez aussi à utiliser les vues, dans certain cas il peuvent être très pratiques.

Contribution le : 22/04/2005 16:08
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: HF en client/Serveur
Anonyme
OK, il va falloir que je change le mode de parcours des fichiers dans mon appli alors.

Ca serait cool si quelqu'un qui connait bien HF en CS fasse un petit article sur ce qu'il faut eviter et sur ce qu'il faut faire pour optimiser les temps de reponses.

Sinon, je ne suis pas vraiment expert en SQL, ou me conseillez vous d'aller chercher pour avoir de bonnes infos sur la programmation en SQL.

Merci.

Contribution le : 22/04/2005 16:38
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2