Client léger Harmony Web

Client léger Harmony Web


Dans l'architecture 3 tiers d'Harmony, la couche Présentation est assurée par le client léger Harmony. Deux types de client léger coexistent : le client léger Wpf, qui s'exécute de manière classique sur un poste client équipé du système Windows, et le client léger Web (ou client léger Html) qui s'exécute à partir et dans un navigateur Web.
Ce livre présente les spécificités du client léger Web. Il contient les chapitres :


Remarque :
Le "Client léger Html" et "Harmony Web" sont deux produits totalement distincts, qui utilisent deux technologies différentes et ne doivent pas être confondus. Les documentations d'installation et de paramétrage de ces deux produits font d'ailleurs l'objet de livres totalement séparés.

Installation et paramétrage d'un serveur de clients légers Web


Les applications Harmony accessibles depuis un client léger Web s'exécutent sur un ordinateur qui sert à la fois de serveur Web et de serveur d'applications.
Ce premier livre décrit d'abord l'installation et le paramétrage du serveur Web , avec les chapitres :

Le côté serveur d'applications fait l'objet du livre Installation du serveur d'applications. Les explications qui y sont fournies restent valables pour le client léger Html, en dehors des chapitres décrivant l'installation du serveur en mode Socket et en mode Service Web qui s'appliquent uniquement au client léger Wpf. En particulier, il faut installer Harmony Power Foundation et configurer le service DhsDivaAgent sur le serveur.
Au chapitre Gestion des utilisateurs en client léger Web, ce livre décrit ensuite quelques spécificités du client léger Web.

Installation automatisée du serveur de clients légers Web


Pour installer un serveur de clients légers Web, exécutez le choix Paramétrage : Installation serveur client léger Web du menu Harmony. L'utilitaire xLcwebInstall.dhop lancé par ce choix permet :

  • D'installer un nouveau serveur (onglet Installation d'un nouveau serveur).

  • De mettre à jour un ou plusieurs serveurs préalablement installés (onglet Mise à jour).

Attention : Ce programme doit être lancé avec les droits d'administrateur si l'utilisateur courant ne les possède pas.

Installation d'un nouveau serveur
Les paramètres d'installation proposés sous l'onglet Installation d'un nouveau serveur sont les suivants :

Vérifier et installer si nécessaire le serveur et les composants IIS

Cochez cette case si vous installez votre premier serveur Web. Cette option permet d'installer et configurer le serveur IIS avec tous les composants requis au fonctionnement du client léger Web. Les opérations réalisées sont détaillées à la rubrique Installation manuelle de IIS sur le serveur de clients légers Web. Attention : Cette option n'est pas disponible pour les versions Vista ou 2008 Server du système Windows.

Répertoire de destination Windows

Indiquez ici le chemin d'accès au répertoire pointé par l'application IIS utilisée pour votre serveur de clients légers Web.
Le nom de l'application IIS spécifié plus loin est automatiquement concaténé à ce chemin d'accès. Exemple : Répertoire de destination : c:\divalto\MonChemin Application IIS : MonApplication
==> Répertoire pointé de l'application : c:\divalto\MonCheminMonApplication Il est en effet obligatoire que le répertoire de stockage des fichiers du client léger Web porte le même nom que celui donné à l'application IIS.
Remarque importante : Si vous spécifiez ici le chemin d'accès au répertoire de départ (x:\Divalto\Internet), l'installateur ne procède à aucune copie de fichier. L'application IIS utilisée pour votre serveur pointera directement le répertoire Divalto standard (x:\Divalto\Internet\Lcweb provenant de l'installation du runtime d'Harmony). Après la livraison par Divalto d'une nouvelle version des fichiers inclus dans ce répertoire, aucune mise à jour ne sera nécessaire. On utilisera cette solution (pour sa simplicité) lorsque l'ordinateur héberge un site Web unique.
Dans le cas contraire, l'installateur effectue une copie complète du répertoire standard dans le répertoire spécifié ici. L'application IIS utilisée pour votre serveur pointera le nouveau répertoire. Attention : Après une mise à jour du runtime d'Harmony (i.e. la livraison d'une nouvelle version des fichiers inclus dans le répertoire standard), il faudra impérativement rappeler l'installateur pour effectuer la mise à jour de votre répertoire spécifique (voir le paragraphe "Mise à jour d'un ou plusieurs serveurs" ci-après). On sera amené à utiliser cette solution lorsque l'ordinateur héberge plusieurs sites Web, ce qui peut s'avérer nécessaire par exemple pour que les différents clients disposent de leur propre chemin d'accès si des images spécifiques à chaque client sont affichées par les programmes d'application : voir la rubrique Installation des images sur le serveur de clients légers Web.

Utiliser le site par défaut

Si vous cochez cette case, l'application IIS sera créée dans le site Web par défaut de IIS ("Default Web Site").

Site

Nom du site Web dans IIS, si vous souhaitez créer un site Web spécifique au serveur de clients légers Web (option conseillée qui évite tout conflit avec tout autre serveur Web hébergé sur cet ordinateur). Le fait d'utiliser le site par défaut ou un site spécifique n'a pas d'incidence.

Port

Numéro de port pour ce site (8080 par défaut). Attention en cas d'installation de plusieurs sites : Chaque site doit utiliser un port différent. L'installateur ne vérifie ni la validité du numéro de port ni la présence d'éventuels doublons.

Application IIS

Nom de l'application IIS. Remarque : Les fichiers du client léger Web sont copiés dans le répertoire pointé par l'application et qui porte obligatoirement le même nom que le nom spécifié ici. Certains fichiers sont également patchés pour y intégrer ce nom.


Plusieurs serveurs Web peuvent être installés sur un même ordinateur, sur un ou plusieurs sites distincts (y compris le site par défaut). Un même site peut en effet héberger plusieurs applications IIS.
Des explications complémentaires concernant la configuration de l'application IIS, ainsi que les opérations réalisées par l'installateur sur ce point, sont décrites à la rubrique Création et configuration manuelles d'une application IIS sur le serveur de clients légers Web. Voir aussi la rubrique Compression des trames pour un client léger Web.
Utilisez le bouton "Ouvrir la console IIS" pour visualiser le serveur Web créé par l'installateur.

Mise à jour d'un ou plusieurs serveurs
ATTENTION :
Après une mise à jour du runtime d'Harmony, il faut impérativement actualiser toutes les instances du client léger Web créées par l'installateur .
La liste des serveurs installés par xLcwebInstall.dhop est conservée (dans le fichier DivaltoWebServer.txt) et récapitulée dans le tableau affiché sous l'onglet "Mise à jour".
Pour exécuter une mise à jour, sélectionnez le(s) serveur(s) à actualiser (Ctrl+A sélectionne tous les serveurs) et validez.
Remarque : La mise à jour d'un serveur Web "standard" (application IIS pointant le répertoire x:\Divalto\Internet\Lcweb) n'est pas nécessaire.

Installation manuelle de IIS sur le serveur de clients légers Web

Le service IIS de Microsoft doit être installé sur l'ordinateur exécutant les applications Harmony accessibles depuis un client léger Web.
Pour installer IIS
Pour installer le composant IIS de Windows (ou modifier la liste de ses fonctionnalités), sélectionnez le choix "Programmes et fonctionnalités" du Panneau de configuration, puis le choix Activer ou désactiver des fonctionnalités Windows. Sélectionnez ensuite le composant "Internet Information Services" (IIS).
Les fonctionnalités suivantes de la famille "Services World Wide Web" doivent être impérativement ajoutées (si elles ne sont pas proposées par défaut) :

  • ASP.NET 4.5 et Extensibilité .NET 4.5.

  • Authentification de base et Authentification Windows.

Lorsque IIS est installé, tous les paramétrages qui le concernent s'effectuent par le Gestionnaire des Services Internet (IIS), accessible depuis le panneau de configuration, outils d'administration (voir la rubrique Création et configuration d'une application IIS sur le serveur de clients légers Web). Voir aussi la rubrique Compression des trames pour un client léger Web.

Service IIS
IIS est un service qui peut empêcher de renommer ou déplacer des dossiers si ceux-ci sont pointés par des applications IIS. La solution pour pallier cette difficulté consiste à arrêter momentanément le serveur Web. Pour cela, stoppez le service de Publication World Wide Web depuis le gestionnaire de services (Panneau de configuration : Outils d'administration : Services).

Création et configuration manuelles d'une application IIS sur le serveur de clients légers Web


Après l'installation et la configuration de IIS, tous les paramétrages le concernant s'effectuent par le Gestionnaire des Services Internet (IIS), accessible depuis le panneau de configuration, outils d'administration. Le client léger Harmony Web nécessite la création d'une application dans un site Web, attachée à un pool d'applications.
Pool d'applications IIS
Une application IIS appartient toujours à un pool d'applications. Il est possible d'utiliser l'un des pools proposés par défaut mais il est plutôt conseillé de créer un pool d'applications dédié, de manière à ne pas interférer avec d'autres applications Web. Pour créer et configurer un pool d'applications :

  • Cliquez avec le bouton droit de la souris sur la ligne Pools d'applications dans l'arbre des Connexions. Sélectionnez Ajouter un pool d'applications...

  • Entrez le nom du pool, sélectionnez la version 4 du CLR.NET et le mode pipeline Intégré. Exemple de nom de pool : DivaltoLcweb.

  • Dans la fenêtre Pools d'applications (au centre de l'écran), sélectionnez le nouveau pool puis éditez ses paramètres avancés. Les options suivantes sont impératives :

 

  •  

    • Activer les applications 32 bits : True (si votre système Windows est un système 64 bits).

    • Mode Pipeline géré : Integrated (Intégré).

    • Version du CLR.NET (Framework) : 4.0 minimum.

    • Identité. L'identité à spécifier ici dépend du type d'utilisation :

 

  • Sur un serveur Web qui est aussi serveur de données (par exemple sur un ordinateur de développement), le plus simple est de prendre l'identité LocalSystem.

  • Sinon, on utilisera un compte de service dédié. Attention, il faut donner à ce compte les droits d'accès au dossier c:\Windows\Temp et aux répertoires des pièces jointes de l'ERP.

 

 

Création de l'application IIS
Pour qu'une page (par exemple, ia.aspx) de votre serveur soit accessible par un client léger Web, il faut créer une application IIS 32 bits pointant le répertoire contenant cette page. On crée ainsi un répertoire virtuel, alias d'un chemin dans l'arborescence des fichiers du serveur. Pour créer une application IIS :

  • Développez la branche de l'arbre correspondant au site Web souhaité. Remarque : vous pouvez utiliser le site par défaut ("Default Web Site") ou, si le système d'exploitation le permet, un site Web dédié.

  • Cliquez avec le bouton droit de la souris sur le nom du site et sélectionnez le choix du menu "Ajouter une application...". Attention à bien exécuter ce choix et non le choix "Ajouter un répertoire virtuel...". Si vous avez créé par erreur un répertoire virtuel, vous pouvez toutefois le convertir en application (clic droit sur le répertoire, choix "Convertir en application").

  • Entrez le nom de l'alias et le Chemin d'accès physique pointant la page ia.aspx. Spécifiez aussi le pool d'applications créé précédemment (bouton Sélectionner ...).

Attention : En cas d'utilisation du chemin standard x:\Divalto\Internet\Lcweb, il est impératif que l'alias porte le nom "Lcweb".
(Voir aussi le paragraphe "Installation de plusieurs serveurs de clients légers Web sur un même ordinateur" ci-dessous.)
Exemple : Alias : Lcweb. Chemin d'accès physique : c:\Divalto\Internet\Lcweb. Pool d'applications : DivaltoLcweb. Avec ces valeurs, pour accéder à l'interface d'accueil du client léger Harmony Web, l'utilisateur devra spécifier une url du type "http://www.monserveur.fr/lcweb/ia.aspx". Nous verrons au paragraphe "Déclaration d'une page à charger par défaut" comment se passer du nom de la page aspx dans l'url.
Configuration de l'application IIS

  • Authentifications. ATTENTION, il est impératif de modifier les authentifications configurées par défaut de la manière suivante et dans l'ordre :

  • Application Web elle-même. Il faut désactiver l'authentification Anonyme et activer l'authentification par formulaire. Pour accéder aux paramètres d'authentification de l'application, cliquez sur son nom dans l'arbre des Connexions pour la sélectionner puis sur le bouton "Authentification" (dans la zone IIS en bas de la partie centrale de l'écran).

  • Sous-dossier login. Il faut (ré)activer l'authentification Anonyme. Pour accéder aux paramètres d'authentification du dossier login, ouvrez l'arborescence de l'application en cliquant sur la flèche à gauche de son nom dans l'arbre des Connexions. Cliquez ensuite sur le dossier login pour le sélectionner. Cliquez enfin sur le bouton "Authentification" (dans la zone IIS en bas de la partie centrale de l'écran).


La désactivation de l'authentification anonyme au niveau de l'application est automatiquement reportée à tous ses enfants. Après cette opération, le sous-dossier login a donc perdu cette authentification !

  • Déclaration d'une page à charger par défaut. Un paramètre IIS permet d'éviter à l'utilisateur de spécifier le nom de la page (ia.aspx) à charger dans l'url de son navigateur. Pour ce faire, cliquez sur le nom de l'application dans l'arbre des Connexions pour la sélectionner puis sur le bouton "Document par défaut" (dans la zone IIS en bas de la partie centrale de l'écran). Ajoutez un nouveau document (bouton Ajouter... à droite de l'écran) en le nommant ia.aspx. Assurez-vous que son nom est bien positionné en tête de liste des documents par défaut. En reprenant l'exemple précédent et avec ce paramétrage, pour accéder à l'interface d'accueil du client léger Harmony Web, l'utilisateur pourra maintenant spécifier une url du type "http://www.monserveur.fr/lcweb".


Mise en oeuvre d'une compression des trames
Voir la rubrique Compression des trames pour un client léger Web.
Installation de plusieurs serveurs de clients légers Web sur un même ordinateur
Un même ordinateur serveur peut héberger plusieurs sites Web, par exemple en mode ASP si l'on souhaite que chaque client dispose de son propre chemin d'accès physique . Pour ce faire :

  • Au besoin, créez autant de pools d'applications que de sites. En général toutefois, les paramètres du pool servant aux applications du client léger Harmony Web seront identiques et le même pool pourra être utilisé pour tous les sites.

  • Créez et configurez une application IIS par site (avec les mêmes paramètres en dehors du nom de l'alias et du chemin d'accès physique).

  • Il faut ensuite copier le contenu complet du dossier /Divalto/Internet/Lcweb dans chaque répertoire d'accès physique paramétré pour les différentes applications IIS. Mais attention, une simple copie manuelle des fichiers ne suffit pas.

Pour effectuer cette copie, utilisez le programme d'installation xLcwebInstall.dhop (à lancer à partir du menu Harmony Paramétrage : Installation serveur client léger Web).

  • Attention aussi en cas de mise à jour du runtime d'Harmony (et donc des fichiers du dossier Lcweb) car il est impératif d'actualiser les copies (toujours à l'aide de xLcwebInstall.dhop, onglet Mise à jour).

On aura par exemple besoin que les différents clients disposent de leur propre chemin d'accès si des images spécifiques à chaque client sont affichées par les programmes d'application : voir la rubrique Installation des images sur le serveur de clients légers Web.

Paramétrages complémentaires

  • Pour des raisons de sécurité, Windows interdit par défaut la saisie par l'utilisateur des caractères "<" et ">" (car ces caractères servent de délimiteurs dans un source HTML). Pour pallier cet inconvénient et éviter un arrêt brutal du programme, le fichier default.aspx livré en standard contient sur la première ligne (<%@ Page ...) le paramètre validateRequest="false", qui permet de passer outre à cette interdiction. Mais attention, la présence de ce paramètre peut constituer une faille de sécurité : il suffit de le retirer du fichier .aspx pour retrouver le fonctionnement par défaut de Windows.

  • Il est possible de paramétrer un site Web IIS par l'intermédiaire du fichier Web.Config (situé au même niveau que la page ia.aspx). Le paramètre "timeout" de la balise <SessionState> permet de préciser le délai au terme duquel une session inactive est stoppée côté serveur. Lorsque le serveur arrête une session, le programme Diva est automatiquement interrompu. Remarque : Lorsque le poste client est "actif", le client léger Harmony Web envoie régulièrement des messages au serveur pour assurer que ce dernier ne referme pas la session intempestivement (et ce, même si l'utilisateur reste lui totalement inactif sur cette session). Toutefois, ce dialogue peut être interrompu, par exemple si le poste client est mis en veille par l'utilisateur.


Voir aussi : Gestion des utilisateurs en client léger Web.

Compression des trames pour un client léger Web


Les clients légers Html et Wpf (en mode de connexion par service Web) permettent de dialoguer avec un serveur IIS sur lequel la compression des données a été mise en œuvre. La compression améliore sensiblement les temps d'affichage sur le poste client.
Pour activer la compression sur le serveur Web, il faut se positionner sur l'application concernée (en standard, LCWEB ou LCWEBSERVICE, respectivement pour les clients Html ou Wpf), sélectionner l'icône Compression (cadre IIS) et cocher la case "Activer la compression du contenu dynamique".
Si cette case est grisée, il est nécessaire d'installer le composant dans IIS. A partir du panneau de configuration :

  • Programmes et fonctionnalités.

  • Activer ou désactiver des fonctionnalités de Windows.

  • Internet Information Services.

  • Services World Wide Web.

  • Fonctionnalités de performances.

  • Compression du contenu dynamique.


Installation des images sur le serveur de clients légers Web


Tout site Web IIS est identifié par un alias pointant un répertoire physique du serveur. Pour des raisons de sécurité, les fichiers d'une application Web (pages html / aspx / ..., sources Java Script et CSS, images, sons, vidéos, ...) ne sont accessibles aux navigateurs que s'ils sont stockés dans une branche du disque incluse dans ce répertoire physique.
Nous avons vu précédemment comment installer un site Web IIS pour le client léger Html et le faire pointer le répertoire physique /Divalto/Internet/Lcweb (ou une copie de ce répertoire). Pour que les navigateurs aient accès aux fichiers images (et sons) référencés par les applications Harmony, il est donc impératif qu'ils soient placés sous ce répertoire physique.
Dans la suite de cette rubrique, nous prendrons comme exemple le répertoire physique "Lcweb".

Les applications Harmony référencent trois sortes d'images :

  • Les images fournies par Divalto. Ces images sont regroupées dans des fichiers "Sprites" livrés en standard dans le sous-répertoire /Lcweb/Styles/Images.

  • Les images variables. Ces images sont automatiquement recopiées dans un sous-répertoire temporaire de racine "/Lcweb/Tmp/Images". Remarque importante : Il s'agit ici uniquement des images référencées par un objet "Image variable" de Xwin et des images associées aux ressources et aux types de ressources de l'objet "Agenda".

  • Les images fixes. Ces images doivent être transférées manuellement dans le dossier /Lcweb/Styles/Images. Remarque importante : Il s'agit ici de toutes les images autres que les images variables citées ci-dessus (objets "Image" et "Bouton", images de menu ou de barre d'outil, choix des objets "Multi-choix Images", images propres aux tableaux et aux arbres, etc.).

Attention :
Les fichiers images (fixes et variables) doivent aussi être accessibles à XrtDiva.
Un chemin implicite doit donc pointer chaque dossier contenant ce type d'images. En pratique, c'est généralement le cas à partir du moment où l'on utilise également ces images en client lourd ou léger Wpf. Si un chemin implicite ne pointe pas directement le dossier "/Lcweb/Tmp/Images", il faudra donc stocker les images fixes à deux endroits : celui habituellement utilisé pour leur affichage en client lourd ou léger Wpf et le répertoire des images du serveur Web "/Lcweb/Tmp/Images".

Installation des aides sur le serveur de clients légers Web


Pour que le client léger Web ait accès aux fichiers d'aides, il faut configurer le serveur Web de la même manière qu'un serveur d'applications classique fonctionnant en accès distant avec les aides délivrées par un serveur Web (voir le livre Installation des fichiers d'aides).

Gestion des utilisateurs en client léger Web

  • En client léger Web, l'utilisateur doit se connecter en spécifiant son nom d'utilisateur et son mot de passe Windows. Le compte utilisateur "Divalto" est obligatoirement le compte Windows ayant servi à la connexion au serveur de clients légers Web. Il est donc nécessaire de créer des codes d'utilisateur "Divalto" identiques aux codes d'utilisateur Windows.

  • Lors de la connexion, un profil utilisateur est demandé. Il est donc nécessaire de créer des profils utilisateur sur le serveur, en appelant le choix "Gestion des profils utilisateur" de l'interface d'accueil (accessible depuis le piano). On y indiquera le nom et le mot de passe du compte Windows de l'utilisateur, ainsi que son environnement.


Configuration du navigateur pour le client léger Web


Le client léger Html s'exécutant dans un navigateur, aucune installation n'est requise côté client.
Toutefois, le navigateur utilisé :

  • Doit être compatible HTML5 et CSS3.

  • Doit autoriser l'affichage des fenêtres contextuelles (ou fenêtres Pop-up). En effet, tous les choix activés depuis l'interface d'accueil s'exécutent dans ce type de fenêtre. Remarque :

 

  •  

    • Le blocage des fenêtres contextuelles est une option dont le paramétrage dépend du navigateur. En général, il est possible de conserver le blocage de manière générale et de l'annuler pour certains sites particuliers.

    • La fenêtre d'identification affichée à la connexion rappelle que "Pour utiliser Divalto, vous devez autoriser les fenêtres popup pour ce site".

 

  • Dans Internet Explorer, il faut activer l'option "Autoriser les fenêtres initiées par des scripts sans contrainte de taille ou de position". Cette option est désactivée par défaut et se trouve dans les options Internet de Sécurité, zone "Sites de confiance" (bouton "Personnaliser le niveau").

Voir aussi : Enregistrement des paramètres de l'utilisateur.

 

Connexion au serveur de clients légers Web


Pour se connecter à un serveur de clients légers Web, l'utilisateur doit spécifier une url de la forme :
Http://nom_du_serveur/nom_du_site_web[/ia.aspx]

Pour lancer un autre programme que l’interface d’accueil ia.aspx, l’url doit être de la forme :

http://nom_du_serveur/nom_du_site_web/default.aspx?program=nom_du_programme

Exemple : http://localhost:8080/lcweb/default.aspx?program=xconsole.dhop


L'url demandée affiche la page d'identification de l'utilisateur :

L'utilisateur doit indiquer son code utilisateur Windows suivi, si nécessaire, du nom du domaine précédé du caractère @ (par exemple : utilisateur1@mondomaine.dmz) puis saisir son mot de passe. De plus :

  • S'il s'agit de la première connexion, l'utilisateur doit, AVANT de valider, récupérer la liste des profils utilisateur par le bouton Rafraîchir et choisir le profil correspondant à son compte d'utilisateur Windows.

  • Le profil de l'utilisateur est conservé sur le client. Pour les connexions suivantes, il n'est donc plus nécessaire de récupérer la liste des profils (sauf, bien entendu, en cas de modification côté serveur).

Après validation, l'interface d'accueil est affichée.
Rappelons qu'en client léger Web, le compte utilisateur "Divalto" est obligatoirement le compte Windows ayant servi à la connexion.

Enregistrement des paramètres de l'utilisateur


Les paramètres de l'utilisateur (profil, taille des fenêtres, liste, largeur et ordre d'affichage des colonnes des tableaux, état d'ouverture des volets et des accordéons, tailles des cellules de grilles, etc.) sont stockés côté client. Toutefois, ils ne sont pas enregistrés dans la base de registres locale au poste client (inaccessible depuis un navigateur) mais dans une entité de stockage local propre au Web nommée « Local Storage » (plus ou moins similaire aux cookies).
Attention :

  • Chaque navigateur dispose de sa propre entité de stockage. En cas de changement de navigateur, l'utilisateur ne retrouvera donc pas les paramètres qu'il a utilisés avec le premier navigateur.

  • Sous IE, l'enregistrement dans le Local Storage est invalidé si IE est configuré pour supprimer l'historique de navigation en quittant le navigateur.

  • Concernant les fenêtres principales, seule leur taille est enregistrée, leur position ne l'est pas (contrairement au client léger Wpf). L'utilisateur qui a par exemple déplacé et changé la taille de la fenêtre de son zoom Articles à l'écran ne retrouvera pas la nouvelle position en rouvrant ce même zoom ultérieurement (mais il retrouvera la nouvelle taille).


Effacement du Local Storage.
L'utilisateur peut effacer les données enregistrées dans le Local Storage de son navigateur en appelant, depuis ce même navigateur, la page LocalStorageClear.html.
L'accès à cette page se fait par l'url :
Http://nom_du_serveur/nom_du_site_web/LocalStorageClear.html
La signification des différents éléments composant cette url est donnée à la rubrique Connexion au serveur de clients légers Web.

Restrictions d'utilisation du client léger Web par rapport au client léger Wpf


Les clients légers Web et Wpf sont en grande partie iso-fonctionnels, aussi bien en ce qui concerne l'interface utilisateur que le développement d'applications. Toutefois, le client léger Web s'exécute dans un navigateur Web et certaines fonctionnalités, habituellement offertes par le système Windows et accessibles avec Xwpf, ne sont pas mises à disposition sur le Web (en particulier pour des raisons de sécurité). De plus, quelques autres fonctionnalités n'ont pas été implémentées ou sont utilisées différemment dans la version Web du client léger.
Cette rubrique présente les différences majeures entre les deux clients légers.
Les développeurs trouveront le détail des spécificités et des restrictions concernant la programmation des applications Harmony dans la documentation Xwin - Programmation.

  1. Grandes fonctionnalités indisponibles avec un navigateur

  • Interfaces OLE Automation et YOffice. Le publipostage avec un traitement de textes n'est plus disponible. L'export tableur fonctionne, mais uniquement en passant par l'interface OpenXml.

  • Interface CTI.

  • Interface MAPI. L'envoi de fax par MAPI depuis le poste client n'est plus disponible. Les autres fonctions de messagerie peuvent être mises en œuvre sur un site disposant d'un serveur Exchange, grâce aux fonctions d'interface avec Exchange Server. Le protocole standard MAILTO (schéma d'URI permettant de créer un lien hypertexte vers une adresse courriel) peut aussi être utilisé pour l'envoi de mails simplifiés (sans pièce jointe).

  • Drag & drop "Externe" (c'est-à-dire d'une fenêtre de navigateur à une autre).

  • Quasi-totalité des fonctions de gestion de fichiers Windows. Voir le paragraphe "Copie, exécution et gestion de fichiers Windows".

  • Exécution de programmes Windows sur le poste client (fonction LcExec).

  • Fonctions de gestion de la base de registres du client.

  • Fonctions de gestion du presse-papiers. Ces fonctions s'exécutent sur le serveur et ne lisent donc pas le presse-papiers du client Web.

  • Affichage de fenêtre en mode caché et fonction WindowShow. Il est impossible de cacher la fenêtre d'un navigateur Web. Le mode SW_HIDE (WindowShow, ProgramCall, …) ne peut donc pas fonctionner. La fonction WindowShow, qui permet de maximiser, minimiser ou cacher la fenêtre Harmony ne fonctionne pas en client léger Html.

  • La zone de notification (traybar) n'est pas disponible.

  • Formats d'image interdits. Tous les formats d'images ne sont pas reconnus sur le Web. C'est le cas en particulier du format WMF (et attention, ceci concerne aussi les images placées par l'utilisateur dans un texte riche).

  • Touches interceptées par les navigateurs. Certaines touches (dépendant du navigateur) ne sont pas disponibles. Un tableau des touches interdites est donné dans la documentation Xwin - Programmation.

  1. Fonctions non implémentées en Html

Citons en particulier :

  • Les objets graphiques :

  • Hog. Concerne l'objet "Graphique" proprement dit mais aussi l'impossibilité de placer un hog dans un objet "Texte" ou dans un en-tête de colonne de tableau.

  • Graphiques générés par les fonctions du module Ygraph.

  • Les fonctions Diva PlaySound et MessageBeep.

  • L'attribut dynamique AN_BITMAPS_ET_TITRE (objet "Bouton").

  • Le double clic droit.

  • La non prise en compte des images provenant d'un exécutable (fichier .exe ou .dll - hors icones de xrtDiva.exe), ainsi que celle du paramètre "Petite icone" des images de la feuille de styles.

  • La propriété "Prendre la couleur de la colonne 1" de l'objet tableau.

 

  1. Impressions

Les impressions génèrent des fichiers au format PDF qui sont téléchargés sur le poste client. Sauf si le paramétrage demande une impression sur le serveur (auquel cas, l'état est directement édité sur une imprimante du serveur), une impression génère toujours un fichier .dhvw, immédiatement converti au format PDF. Le fichier PDF est téléchargé par le navigateur Web.
Le client Web ne dispose pas de l'utilitaire DivaltoViewer (ni des commandes "Fermer tous les DivaltoViewer" et "Imprimer et fermer tous les DivaltoViewer"). L'assistant de personnalisation des masques d'impression n'est pas disponible en Html.

L’option ‘aperçu avant impression par défaut’ du menu principal disponible dans le client xWPF n’est pas disponible en client léger Web : l’aperçu avant impression par défaut est toujours à vrai.

  1. Exports vers un tableur

Les exports vers un tableur développés avec l'interface OpenXml (proposés par exemple par les zooms) fonctionnent avec le client léger Web (le fichier au format .xlsx est téléchargé sur le poste client).

  1. Messagerie

L'envoi de mail et la synchronisation avec le gestionnaire de messagerie du poste client (Outlook, …) par l'interface MAPI sont remplacés par des fonctions équivalentes de Microsoft Exchange Server (méthode également disponible avec le client léger Wpf). Bien entendu, ceci ne fonctionne que si le site est équipé d'un serveur Exchange.
En client léger Html, une autre méthode est possible pour l'envoi de mails simplifiés (sans pièce jointe). Elle utilise le protocole standard MAILTO (schéma d'URI permettant de créer un lien hypertexte vers une adresse courriel) et doit être activée dans DivaltoViewer.

  1. Copie, exécution et gestion de fichiers Windows

  • La fonction LCWinDownload (copie d'un fichier du serveur vers le client) télécharge le fichier sur le poste client et déclenche l'exécution de l'application associée (si elle est "connue" du navigateur). Par exemple, l'affichage d'une pièce jointe dans Divalto fonctionne.

  • La fonction LCWinUpload (copie d'un fichier du client vers le serveur) est utilisable dans deux cas précis :

 

  • Après un drag & drop de fichiers dans la fenêtre du navigateur.

  • Après appel à la fonction WinGetOpenFileName.


Les fichiers déposés ou sélectionnés sont placés dans un flux interne au navigateur, ce qui permet ensuite de les récupérer en appelant la fonction LCWinUpload. Attention : Ce flux n'est valide que 15 minutes. Un appel « direct » à cette fonction en spécifiant un fichier quelconque du poste client n'est pas possible.

  • La fonction LCWinShellExecute (exécution d'un programme associé à un fichier) peut être utilisée en particulier pour afficher une url Web ou un fichier .dhvw :

 

  • Une url Web est transmise au navigateur du client, qui affiche cette url dans une fenêtre à part.

  • Un fichier .dhvw est considéré comme situé sur le serveur, il est converti en PDF et le fichier PDF résultant est téléchargé sur le navigateur du client. Le poste client pourra lire ce fichier avec Acrobat Reader.

  • Avec d'autres types de fichier, la fonction est difficilement utilisable car elle nécessite de connaître le chemin du fichier sur le poste client.

 

  • La fonction WinGetOpenFileName ouvre la boîte de dialogue de sélection des fichiers de Windows (voir fonction LCWinUpload ci-dessus).

  • Les autres fonctions "Windows" soit ne sont pas fonctionnelles (LcWinGetFilesAttributes, LcWinSetFilesattributes, WinGetSaveFileName, WinShBrowseForFolder, …), soit attaquent le serveur (WinDirGetFile, FindExecutable, GetTempPath, WinCreateDirectory, LCWinShGetSpecialFolderLocation, …).

 

  1. Différences d'interface utilisateur

Ce paragraphe mentionne les différences entre les clients légers Wpf et Html concernant l'interface utilisateur :

  • Fermeture du navigateur. En cliquant sur la croix de fermeture de la fenêtre du navigateur (ou en tapant Alt+F4), l'utilisateur a toujours la possibilité de refermer le navigateur (alors qu'en client léger Wpf, cette même opération demande à l'application de se terminer et c'est elle qui décide en dernier ressort d'accéder ou non à la demande de l'utilisateur). Dans certains cas, une demande de confirmation est toutefois affichée. Il est alors conseillé de ne jamais confirmer la fermeture. De manière générale, plutôt que de refermer la fenêtre du navigateur, il est conseillé de quitter l'application en l'abandonnant (bouton Abandon, choix équivalent du menu, frappe de la touche Echap).

  • Touches indisponibles pour l'utilisateur.

 

  •  

    • Alt+F4 ne peut pas être utilisée pour refermer une sous-fenêtre Harmony. Contrairement à Wpf qui ouvre une nouvelle fenêtre Windows pour afficher une sous-fenêtre (par exemple, la fenêtre de choix d'un filtre dans les zooms), une sous-fenêtre s'affiche dans la fenêtre courante du navigateur. Alt+F4 refermera complètement le navigateur au lieu de simplement refermer la sous-fenêtre.

    • Ctrl+Tab et Maj+Ctrl+Tab permettent habituellement le passage à l'onglet suivant et précédent. Elles ne fonctionnent ni sous IE ni sous Chrome qui les interceptent. Les touches Ctrl+N restent disponibles pour activer directement l'onglet de rang N.

    • En dehors de l'interface d'accueil, F11 n'est pas disponible pour maximiser la fenêtre du navigateur (elle est utilisée par Divalto).

 

  • Signification des touches du clavier dans le calendrier (datepicker). Lors de la saisie d'une date, le calendrier peut être ouvert en cliquant sur l'icône qui le représente (hors saisie dans un tableau) ou en tapant la touche Alt+Flèche en bas. Pour se déplacer dans le calendrier au clavier, on utilisera les touches suivantes :

    (*) Le survol d'un jour à la souris est prioritaire par rapport à la pré-sélection d'un jour au clavier : dès qu'un jour est survolé à la souris, le jour pré-sélectionné au clavier n'est plus visualisé (et ce, même si on change de jour au clavier).

  • Sous-fenêtres. Une sous-fenêtre est une fenêtre popup complémentaire affichée par une application (par exemple, la sous-fenêtre proposée après la sélection du choix Filtrer / Trier d'un zoom) :

    • Contrairement à Wpf qui affiche une "vraie" fenêtre Windows, Html simule ce type de fenêtre à l'intérieur de la fenêtre courante du navigateur.

    • Wpf invalide complètement la fenêtre précédente, alors que Html grise simplement le fond de l'écran précédent.

    • En Html, les sous-fenêtres de taille variable ne proposent pas les icônes de minimisation et maximisation.

    • Alt+F4 ne peut pas être utilisée pour refermer une sous-fenêtre.

  • Division des tableaux en deux parties. Certains tableaux font l'objet d'une séparation entre partie gauche et partie droite. En Wpf, la largeur de la partie gauche ne peut pas être réduite en deçà d'une valeur limite. Le tableau Html le permet et, le cas échéant, positionne un second ascenseur horizontal permettant de scroller cette partie gauche indépendamment de la partie droite.

  • En-têtes de colonne de tableau. Contrairement à Wpf, un texte qui déborde dans un en-tête de colonne de tableau n'est pas centré mais cadré à gauche.

  • Texte riche. On notera quelques différences d'interface concernant la saisie des textes riches :

 

 

  • Barre d'outils et menu contextuel. La liste des boutons de la barre d'outils et des choix du menu contextuel est différente de celle proposée par Xwpf.

  • Choix des polices de caractères. Seul IE permet de récupérer la liste exhaustive des polices disponibles. Pour les autres navigateurs, le composant Rtf propose une liste réduite de quelques polices parmi les plus courantes.

  • Touches de tabulation. Les touches Tab et Maj+Tab restent sans effet. Utiliser les boutons de la barre d'outils pour indenter ou dés-indenter un paragraphe.

  • Tous les types d'image ne sont pas supportés par tous les navigateurs.

  • Gestion des lignes blanches. Une anomalie (connue mais non actuellement corrigée) du composant gérant les fichiers Rtf provoque une gestion erronée des lignes blanches. Les effets dépendent du navigateur (interlignes erronés, résultat erroné en cas de suppression, insertion d'un espace, etc.).

  • Le drag & drop d'une cellule de tableau vers un texte riche en saisie n'est pas disponible.

 

  • Onglets multi-ligne. Windows en général et Wpf en particulier placent toujours l'onglet actif sur la ligne du bas d'un groupe d'onglets affiché sur plusieurs lignes. Le cas échéant, il en résulte une inversion de l'ordre des lignes au changement d'onglet actif. Ce fonctionnement n'est pas reconduit en Html : l'ordre d'affichage des différentes lignes d'onglets reste inchangé, quel que soit l'onglet activé.

  • Images "Filtre" et "Tri". Contrairement à Wpf, les images "Filtre" et "Tri" affichées dans un en-tête de colonne de tableau ne prennent pas la couleur de la police de cette colonne.

  • Sous-menus et menus contextuels. Le composant utilisé pour la gestion des menus présente quelques différences par rapport aux menus "standard Windows" de Wpf :

 

  • De manière générale, les éléments affichés dans un navigateur ne peuvent pas déborder de la fenêtre du navigateur, contrairement à Wpf qui fait par exemple déborder un sous-menu, la fenêtre des choix d'un objet multi-choix, etc. De plus, les sous-menus ne disposent pas d'ascenseurs en Html. Il est donc possible, si le nombre de choix est suffisamment important, qu'un sous-menu ne soit pas visible en totalité. Dans ce cas, la seule possibilité pour sélectionner un choix non visible est d'agrandir la taille de la fenêtre du navigateur. Remarque : Pour limiter les cas d'occurrence de cet effet, l'interligne entre les choix d'un sous-menu a été diminué par rapport à Wpf.

  • Les raccourcis clavier ne sont pas traités.

  • Les déplacements au clavier ont un fonctionnement qui diffère du fonctionnement habituel sous Windows en plusieurs points. Citons par exemple : le curseur clavier s'arrête sur tous les choix, y compris les choix grisés et les séparateurs ; visuellement, la sélection au clavier est distincte de celle à la souris (deux choix peuvent se retrouver simultanément surlignés) ; la sélection d'une tête de sous-menu ne l'ouvre pas implicitement (il faut taper Flèche en bas ou à droite pour l'ouvrir), etc.

  • Un clic sur un choix non terminal referme le sous-menu s'il est déjà ouvert.



Différences entre les agendas Wpf et Html

Le composant logiciel de base de l'objet agenda Divalto nous est fourni par la société TELERIK. Il existe toutefois quelques différences notables entre le composant Html et le composant Wpf. Nous détaillons ici ces différences :

  • Regroupements en vue semaine et semaine de travail. Avec un regroupement par ressource, il existe, pour les vues semaine et semaine de travail, une différence majeure. Alors que l'agenda Wpf priorise la date par rapport aux ressources, l'objet Html fait le contraire et ne laisse aucune possibilité de modifier la hiérarchie de regroupement. Exemple : Nos ressources se composent de trois personnes. Lorsque nous regroupons par personne en vue semaine (ou semaine de travail), nous obtenons en Wpf, pour chaque jour, une colonne par personne. En Html, on obtient en revanche, pour chaque ressource, une colonne par jour.

  • Zoom. Cette fonctionnalité n'est pas disponible avec le client Html.

  • Orientation. Cette fonctionnalité n'est pas disponible avec le client Html.

  • Jours de la semaine Les jours de la semaine ne sont pas traités de la même manière en Html et en Wpf :

    • En Wpf, il est possible de définir les jours de la semaine de manière individuelle et l'on peut ainsi définir par exemple une semaine de travail contenant uniquement les lundis, mercredis et jeudis.

    • La version Html impose l'utilisation du début et de la fin de semaine de travail. Cela exclut la possibilité de visualiser des semaines "discontinues" comme dans l'exemple précédent. Les paramètres de la fenêtre de personnalisation ont été mis à jour pour tenir compte de ces différences.

  • Séparateurs majeurs / mineurs. Il existe une légère différence de traitement des séparateurs entre Html et Wpf : en Html, les séparateurs mineurs n'existent pas mais sont remplacés par un nombre de ticks mineurs par graduation principale. Au niveau utilisateur, rien ne change car un traitement automatique effectue les calculs et conversions nécessaires. Cependant, il peut y avoir dans certains cas une différence à l'affichage.

  • Vue Chronologie. La vue chronologie Html diffère aussi légèrement de sa version Wpf. Contrairement à l'objet Wpf, la vue chronologie Html prend en compte les paramétrages utilisateur qui concernent les heures du jour et les jours de la semaine (début et fin de semaine de travail). Ainsi, la vue chronologie version html permet nativement de ne pas afficher les heures de la nuit et les deux jours du week-end. Par ailleurs, l'occupation de l'espace est moins naturelle en Html. La hauteur des lignes est fixe alors qu'en Wpf, la hauteur des lignes s'ajuste de manière à occuper tout l'espace disponible.

  • Langue. L'objet agenda du client Wpf utilise la langue de l'utilisateur Windows pour l'affichage des dates. Pour l'objet agenda Html, c'est la langue du navigateur qui est utilisée. Ces deux langues peuvent ne pas être les mêmes.

  • Rendu. Le rendu peut différer de manière assez importante entre les deux clients, notamment au niveau des largeurs de colonnes, des hauteurs de lignes et de l'apparition des ascenseurs.