Кто-нибудь знает о проблемах между приложениями Citrix и Delphi 2007? (А может и другие языки разработки?) - PullRequest
1 голос
/ 18 сентября 2009

Ситуация проста. Я создал сложное приложение Delphi, которое использует несколько различных методов. Основное приложение - это модуль WIN32, но несколько частей разрабатываются как сборки .NET. Он также связывается с веб-службой или получает данные с определенного веб-сайта. Он хранит большую часть своих пользовательских данных в базе данных MS Access с некоторыми дополнительными настройками в реестре. В памяти все данные преобразуются в XML-документ, который иногда сохраняется на диск в качестве резервной копии на случай сбоя системы. (Таким образом, пользователь может восстановить свои данные.) В файлах XML также есть некоторые данные только для чтения. Приложение также выполняет другие приложения и хочет, чтобы те закончили работу. В общем, это довольно сложное приложение.

Мы не поддерживаем Citrix с этим приложением, хотя некоторые пользователи используют это приложение на сервере Citrix. (По сути, это позволяет этим пользователям быть более мобильными.) Но даже несмотря на то, что мы постоянно говорим им, что не поддерживаем Citrix, эти клиенты пытаются подтолкнуть нас к тому, чтобы они помогли им с некоторыми случайными проблемами, с которыми они обычно сталкиваются.

Основная проблема - случайное случайное исключение, которое появляется в системах Citrix. Никогда в том же месте, и часто это выглядит связано с некоторыми проблемами с памятью. Мы уже получили сообщения об ошибках, и слишком много разных ошибок. Так что я знаю, что решение всех этих проблем будет сложным.

Итак, я хотел бы пойти немного более обобщенно и просто хочу узнать о возможных проблемах, которые могут возникнуть у Delphi (2007) при работе в системе Citrix. Особенно, если это приложение не предназначено для Citrix. Мы не хотим официально поддерживать Citrix, но было бы хорошо, если бы мы могли помочь этим клиентам. Не то чтобы они заплатили нам больше, но все же ...

Так кто-нибудь знает некоторые распространенные проблемы, которые приложение Delphi может иметь в системе Citrix? Кто-нибудь знает об общих проблемах с Citrix в целом? Есть ли какое-нибудь решение Silver Bullet или Golden Hammer для решения проблем Citrix?

Btw. Мои знания о Citrix ограничены этой статьей в Википедии и этим сайтом ... И немного я прогуглил ...

Ответы [ 4 ]

7 голосов
/ 20 сентября 2009

В прошлом были некоторые проблемы с опубликованными приложениями Delphi на Citrix, которые не имели значков на панели задач. Я думаю, что это было решено MainFormOnTaskbar (доступно в D2007 и выше). Кроме того, между Terminal Server и Citrix (с точки зрения приложения) нет большой разницы, наиболее важные вещи, которые вам необходимо учитывать:

  • Пользователи НИКОГДА не администраторы на Терминале или Сервере Citrix, поэтому у них нет прав на часть реестра на локальном компьютере, диск C, папку программ и т. Д.
  • Несколько пользователей в одной системе должны иметь возможность одновременно запускать ваше приложение.
  • Некоторые папки, такие как папка Windows, перенаправляются для предотвращения возможных проблем с приложением, это также означает, что API, такие как GetWindowsFolder, не возвращают настоящую папку Windows, а перенаправленную. Обратите внимание, что это поведение можно отключить, установив определенный флаг в заголовке PE (см. delphi-and-Terminal-server -ware ).
  • Иногда в ферме используется несколько серверов, что означает, что ваше приложение может работать на любом из этих серверов, пользователь перенаправляется на наименее загруженный сервер при входе в систему (балансировка нагрузки). Выше не используйте локальную базу данных для хранения вещей.
  • Если вы используете внешнюю базу данных, промежуточное программное обеспечение или сервер приложений, обратите внимание, что несколько пользователей будут подключаться с одним и тем же именем компьютера и IP-адресом (некоторые версии Citrix могут использовать виртуальные IP-адреса для адресации).
3 голосов
/ 18 сентября 2009

Многие наши клиенты используют наши приложения Delphi на Citrix. Вообще говоря, работает нормально. У нас были проблемы с печатью на старых версиях Delphi, но это было исправлено в более поздней версии Delphi (конечно, более поздней, чем Delphi 2007) Однако, поскольку вы сейчас работаете под терминальными службами, есть определенные вещи, которые не будут работать, с Citrix или без него. Например, вы не можете установить локальное соединение со старыми версиями InterBase, которые используют именованный канал без модификатора GLOBAL. Использование DoubleBuffered также было бы очень плохой идеей. И так далее. Мое предложение состоит в том, чтобы искать советы, касающиеся приложений Win32 и служб терминалов, а не искать советы по Delphi и Citrix в частности. Единственная проблема, которая характерна для Citrix, о которой я знаю, это то, что вы не можете рассчитывать на наличие диска C. Надеюсь, вы не жестко закодировали буквы дисков в своем коде, но если у вас есть, у вас могут возникнуть проблемы.

1 голос
/ 01 февраля 2011

Безопасность может быть проблемой. Если конфиденциальные папки не находятся в «песочнице» (см. Обсуждение Ремко о перенаправлении), пользователь может вырваться из вашего приложения и запустить то, что ему не следует. Вы должны проверить свое приложение, чтобы увидеть, что происходит, когда они «выкладываются» из вашего приложения. Общими точками атаки являются справка CHM, любой контент, использующий IE для отображения HTML, и диалоги открытия и сохранения файлов.
Например: если вы показываете справку .chm, пользователь может щелкнуть правой кнопкой мыши в разделе справки, Просмотр источника. Это обычно открывает Блокнот. Оттуда они могут перемещаться по структуре каталогов. Если они не содержатся должным образом, они могут нанести вред. Например: если у них обычно нет способа запустить Internet Explorer, и у вашего приложения есть кликабельный URL в поле about или «посетить наш веб-сайт» в меню Help, вуаля! у них есть доступ к веб-браузеру. Если они не сдерживаются, они могут открыть командную оболочку, перейдя в каталог Windows.

1 голос
/ 18 сентября 2009

Вообще говоря, ваше приложение должно быть совместимо с MS Terminal Services для работы с XenApp. Насколько я понимаю, .NET-приложения совместимы с службами терминалов и поэтому должны также работать в среде Citrix. Очевидно, что, поскольку у вас есть некоторые проблемы, все не так просто.

На сайте http://community.citrix.com/citrixready имеется набор для тестирования и проверки, который может оказаться для вас полезным. Я предполагаю, что инструменты Test Kit и Virtual Lab будут вам наиболее полезны. Комплект можно использовать бесплатно, но требуется регистрация.

...