Est-ce que quelqu'un est au courant des problèmes entre les applications Citrix et Delphi 2007? (Et peut-être d'autres langages de développement?)

StackOverflow https://stackoverflow.com/questions/1444830

  •  22-07-2019
  •  | 
  •  

Question

La situation est simple. J'ai créé une application Delphi complexe qui utilise plusieurs techniques différentes. L'application principale est un module WIN32, mais quelques pièces sont développées sous forme d'assemblys .NET. Il communique également avec un service Web ou récupère les données d'un site Web spécifique. Il conserve la plupart de ses données utilisateur dans une base de données MS Access avec quelques paramètres supplémentaires dans le registre. En mémoire, toutes les données sont converties dans un document XML, qui est parfois sauvegardé sur le disque en tant que sauvegarde en cas de panne du système. (Permettant ainsi à l'utilisateur de récupérer ses données.) Il existe également des données dans des fichiers XML à des fins de lecture seule. L'application exécute également d'autres applications et veut que celles-ci se terminent. Dans l’ensemble, c’est une application assez complexe.

Nous ne prenons pas en charge Citrix avec cette application, bien que quelques utilisateurs l'utilisent sur un serveur Citrix. (En gros, cela permet à ces utilisateurs d’être plus mobiles.) Mais même si nous leur disons toujours que nous ne prenons pas en charge Citrix, ces clients essaient de nous pousser à les aider à résoudre certains problèmes occasionnels qu’ils ont tendance à rencontrer.

Le problème principal semble être une exception aléatoire occasionnelle qui semble apparaître sur les systèmes Citrix. Jamais au même endroit et il semble souvent lié à des problèmes de mémoire. Nous avons déjà beaucoup de rapports d'erreurs et il y a juste trop d'erreurs différentes. Je sais donc que résoudre tous ces problèmes sera complexe.

Je voudrais donc aller un peu plus générique et juste connaître les problèmes possibles qu'un Delphi (2007) peut rencontrer lorsqu'il s'exécute sur un système Citrix. Surtout lorsque cette application n'est pas conçue pour être compatible avec Citrix. Nous ne voulons pas soutenir officiellement Citrix, mais ce serait bien si nous pouvions aider ces clients. Non pas qu'ils vont nous payer plus, mais quand même ...

Quelqu'un connaît-il donc certains problèmes courants qu'une application Delphi peut rencontrer sur un système Citrix? Est-ce que quelqu'un est au courant des problèmes courants avec Citrix en général? Existe-t-il une solution Silver Bullet ou Golden Hammer quelque part pour les problèmes Citrix?

Btw. Mes connaissances sur Citrix se limitent à cette entrée Wikipedia et à ce site Web ... Et un peu, j'ai googlé ...

Était-ce utile?

La solution

Il y avait des problèmes dans le passé avec les applications Delphi publiées sur Citrix n'ayant pas d'icône dans la barre des tâches. Je pense que cela a été résolu par la MainFormOnTaskbar (disponible à partir de D2007). En dehors de cela, il n'y a pas beaucoup de différence entre Terminal Server et Citrix (du point de vue de l'application), les éléments les plus importants à prendre en compte sont les suivants:

  • Les utilisateurs ne sont JAMAIS administrateurs sur un terminal ou un serveur Citrix. Par conséquent, ils ne disposent d'aucun droit sur la partie ordinateur local du registre, le lecteur C, le dossier du programme, etc.
  • Plusieurs utilisateurs d'un même système doivent pouvoir démarrer votre application simultanément.
  • Certains dossiers, tels que le dossier Windows, sont redirigés pour éviter d'éventuels problèmes d'applications. Cela signifie également que des API telles que GetWindowsFolder ne renvoient pas le vrai dossier Windows, mais celui redirigé. Notez que ce comportement peut être désactivé en définissant un indicateur particulier dans l'en-tête PE (voir delphi-and-terminal-server-aware ).
  • Parfois, dans une batterie de serveurs, plusieurs serveurs sont utilisés, ce qui signifie que votre application peut être exécutée sur l'un de ces serveurs. L'utilisateur est alors redirigé sur le serveur le moins occupé à la connexion (équilibrage de la charge). Par conséquent, n’utilisez aucune base de données locale pour stocker des éléments.
  • Si vous utilisez une base de données externe, un middleware ou un serveur d'applications, notez que plusieurs utilisateurs se connecteront avec le même nom d'ordinateur et la même adresse IP (certaines versions de Citrix peuvent utiliser des adresses IP virtuelles pour y remédier).

Autres conseils

Beaucoup de nos clients utilisent nos applications Delphi sur Citrix. De manière générale, cela fonctionne bien. Nous avions des problèmes d'impression avec les anciennes versions de Delphi, mais cela a été corrigé dans une version plus récente de Delphi (certainement plus récente que Delphi 2007). Cependant, comme vous utilisez maintenant des services de terminal, certaines choses ne fonctionneront pas, avec ou sans Citrix. Par exemple, vous ne pouvez pas établir de connexion locale avec d'anciennes versions d'InterBase, qui utilisent un canal nommé sans le modificateur GLOBAL. Utiliser DoubleBuffered serait également une très mauvaise idée. Etc. Ma suggestion est de rechercher des conseils concernant les applications Win32 et les services Terminal Server, plutôt que de rechercher des conseils sur Delphi et Citrix en particulier. Le seul problème qui préoccupe Citrix, c'est que vous ne pouvez pas compter sur un lecteur C disponible. J'espère que vous n'avez codé en dur aucune lettre de lecteur dans votre code, mais si vous le faites, vous pouvez avoir des problèmes.

De manière générale, votre application doit être compatible avec MS Terminal Services pour fonctionner avec XenApp. Si j'ai bien compris, les applications .NET sont compatibles avec les services Terminal Server et devraient par conséquent également fonctionner dans un environnement Citrix. Évidemment, étant donné que vous souffrez de problèmes, ce n’est pas si simple.

Un kit de test et de vérification est disponible à l'adresse http://community.citrix.com/citrixready . que vous pouvez trouver utile. J'imagine que le kit de test et les outils de laboratoire virtuel vous seront très utiles. Le kit est gratuit, mais nécessite une inscription.

La sécurité peut être un problème. Si les dossiers sensibles ne sont pas "Sandboxed" (Voir la discussion de Remko sur la redirection), l'utilisateur peut sortir de votre application et exécuter des tâches qu'il ne devrait pas. Vous devez sonder votre application pour voir ce qui se passe quand ils " "shell out". de votre application. Les points d'attaque courants sont l'aide de CHM, tout contenu utilisant IE pour afficher du HTML et les boîtes de dialogue Ouvrir / Enregistrer des fichiers.
ex: si vous affichez l'aide .chm, l'utilisateur peut cliquer avec le bouton droit de la souris dans une rubrique d'aide, Afficher la source. Cela ouvre généralement le Bloc-notes. De là, ils peuvent naviguer dans la structure de répertoires. S'ils ne sont pas correctement contenus, ils peuvent peut-être faire un peu de mal. ex: s’ils n’ont normalement pas de moyen d’exécuter Internet Explorer et que votre application possède une URL cliquable dans la zone de dialogue ou un lien "visitez notre site Web". dans le menu Aide, le tour est joué! ils ont accès au navigateur Web. Si elles ne sont pas restreintes, elles peuvent ouvrir un interpréteur de commande en allant dans le répertoire windows.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top