1

状況は単純です。いくつかの異なる手法を使用する複雑な Delphi アプリケーションを作成しました。メイン アプリケーションは WIN32 モジュールですが、一部は .NET アセンブリとして開発されています。また、Web サービスと通信したり、特定の Web サイトからデータを取得したりします。レジストリ内のいくつかの追加設定を使用して、ほとんどのユーザー データを MS Access データベース内に保持します。メモリ内では、すべてのデータが XML ドキュメント内で変換され、システムがクラッシュした場合に備えてバックアップとしてディスクに保存されることがあります。(したがって、ユーザーは自分のデータを回復できます。) XML ファイルには、読み取り専用のデータもあります。アプリケーションは他のアプリケーションも実行し、それらを終了させたいと考えています。全体として、これはかなり複雑なアプリケーションです。

このアプリケーションでは Citrix をサポートしていませんが、少数のユーザーは Citrix サーバーでこのアプリケーションを使用しています。(基本的に、これらのユーザーはよりモバイルに対応できます。)しかし、私たちは Citrix をサポートしていないと言い続けていますが、それらの顧客は、時々発生する傾向があるいくつかの問題を解決するように私たちに圧力をかけようとしています。

主な問題は、Citrix システムで発生するランダムな例外のようです。同じ場所にあることはなく、多くの場合、メモリの問題に関連しているように見えます。すでに多くのエラー レポートが寄せられており、さまざまなエラーが多すぎます。したがって、これらすべてを解決するのは複雑になることはわかっています。

そこで、もう少し一般的な話をしたいと思います。Delphi (2007) を Citrix システムで実行した場合に発生する可能性のある問題について知りたいだけです。特に、このアプリケーションが Citrix に対応するように設計されていない場合はなおさらです。Citrix を公式にサポートするつもりはありませんが、それらの顧客を支援できれば幸いです。彼らが私たちにもっとお金を払うというわけではありませんが、それでも...

Delphi アプリケーションが Citrix システムで発生する可能性のある一般的な問題を知っている人はいますか? 一般的なCitrixの一般的な問題について知っている人はいますか? Citrix の問題に対する Silver Bullet または Golden Hammer ソリューションはありますか?

ところで。Citrix についての私の知識は、このウィキペディアのエントリとこの Web サイトに限られています...そして、少しGoogle で調べました...

4

4 に答える 4

7

過去に、Citrix で公開された Delphi アプリケーションのタスクバーにアイコンがないという問題がいくつかありました。これは MainFormOnTaskbar (D2007 以降で利用可能) によって解決されたと思います。Terminal Server と Citrix の間に (アプリケーションの観点から) 大きな違いはないことを除けば、考慮する必要がある最も重要なことは次のとおりです。

  • ユーザーは、ターミナルまたは Citrix サーバーの管理者になることは決してないため、レジストリのローカル マシン部分、C ドライブ、プログラム フォルダーなどに対する権限はありません。
  • 同じシステム上の複数のユーザーがアプリケーションを同時に開始できる必要があります。
  • Windows フォルダーなどの特定のフォルダーは、アプリケーションの問題を防ぐためにリダイレクトされます。これは、GetWindowsFolder などの API が実際の Windows フォルダーではなく、リダイレクトされたフォルダーを返すことも意味します。この動作は、PE ヘッダーに特定のフラグを設定することで無効にできることに注意してください ( delphi-and-terminal-server-aware を参照)。
  • ファームで複数のサーバーが使用される場合があります。これは、アプリケーションがこれらのサーバーのいずれかで実行できることを意味し、ユーザーはログイン時に最も負荷の低いサーバーにリダイレクトされます (負荷分散)。したがって、ローカルデータベースを使用して物を保存しないでください。
  • 外部データベース、ミドルウェア、またはアプリケーション サーバーを使用する場合は、複数のユーザーが同じコンピューター名と IP アドレスで接続することに注意してください (特定の Citrix バージョンでは、仮想 IP アドレスを使用してこれに対処できます)。
于 2009-09-20T05:51:02.917 に答える
3

お客様の多くは、Citrix 上で Delphi アプリケーションを使用しています。一般的に言えば、それはうまく機能します。古いバージョンの Delphi では印刷の問題がありましたが、これは新しいバージョンの Delphi で修正されました (確かに Delphi 2007 よりも新しいバージョンです)。ただし、現在ターミナル サービスで実行しているため、Citrix の有無にかかわらず、機能しないものがあります。たとえば、GLOBAL 修飾子のない名前付きパイプを使用する古いバージョンの InterBase にローカル接続を確立することはできません。DoubleBuffered を使用することも非常に悪い考えです。等々。私の提案は、特に Delphi と Citrix に関するアドバイスを探すよりも、Win32 アプリとターミナル サービスに関するアドバイスを探すことです。私が認識している Citrix 固有の問題の 1 つは、C ドライブが使用可能であるとは期待できないということです。

于 2009-09-18T14:47:45.520 に答える
1

セキュリティが問題になる可能性があります。機密性の高いフォルダーが「サンドボックス化」されていない場合(リダイレクトに関するRemkoの説明を参照)、ユーザーはアプリから抜け出し、実行すべきでないことを実行できます。アプリを精査して、アプリから「シェルアウト」したときに何が起こるかを確認する必要があります。一般的な攻撃ポイントは、CHMヘルプ、IEを使用してHTMLを表示するコンテンツ、および[ファイルを開く/保存]ダイアログです。
例:.chmヘルプを表示すると、ユーザーはヘルプトピック内の[ソースの表示]を右クリックできます。通常、メモ帳が開きます。そこから、ディレクトリ構造をナビゲートできます。それらが適切に封じ込められていない場合、彼らはいくつかのいたずらをすることができるかもしれません。例:通常、Internet Explorerを実行する方法がなく、アプリの[概要]ボックスにクリック可能なURLがある場合、または[ヘルプ]メニューの[ウェブサイトにアクセス]がある場合は、出来上がりです。彼らはウェブブラウザにアクセスできます。制限されていない場合は、Windowsディレクトリに移動してコマンドシェルを開くことができます。

于 2011-02-01T13:23:03.427 に答える
1

一般に、XenApp を使用するには、アプリケーションが MS ターミナル サービスと互換性がある必要があります。私の理解では、.NET アプリケーションはターミナル サービスと互換性があるため、ひいては Citrix 環境でも動作するはずです。もちろん、いくつかの問題を抱えているため、それほど単純ではありません。

http://community.citrix.com/citrixreadyから入手できるテストおよび検証キットがあり、役立つ場合があります。テスト キットとバーチャル ラボ ツールが最も役立つと思います。キットは無料で使用できますが、サインアップが必要です。

于 2009-09-18T14:23:56.713 に答える