Wiki Home

Citrix Hints

(Updated: 2008.06.26 08:50:12 AM)
Namespace: SoftwareEng
Anyone have any hints to get a Citrix box running properly with Visual FoxPro applications?

Is there anything here that is really Citrix specific and not general Terminal Service (MS's) or any other flavor of multiple users sharing a box? (woa, what a cutting edge concept. the Unix guys should check this out.)
In a Terminal Server or Citrix environment it is possible to identify the unique station (PC, PC running Client, or Winterm) being used by combining the results of Sys(0) and the environment setting CLIENTNAME. The first portion of Sys(0) returns the computer name. Get Env('CLIENTNAME') will return the terminal name if running as a TS/Citrix client or an empty string if running as standard network connection. i.e., cUniqueStation = alltrim(left(sys(0),at('#',sys(0))-1)) + " # " + Get Env('CLIENTNAME'). This reliably unique to that station unless the server being accessed changes or the TS/Citrix client is renamed. -- Christopher Olson
Citrix And FP 26
Use GenMenu X to set fonts in your menus. I wasn't able to determine which fonts VFP's menus were using. So when I ran my app on Winframe on a Win NT 3.51 server, the menus bars appeared to overlap one another. That left about 1/3 of each menu pad visible. - Mike Yearwood -- Maybe your Citrix box didn't have the required fonts installed ?-- Steven Black
That's what I meant above. If you know which fonts are used in VFP's menu, let me know and we'll see. -- Mike Yearwood
Rightclick on the desktop, Properties, Appearance tab, and click on the menu area. MS Sans Serif 8, probably.-- Steven Black
It does apply to VFP6 only. On the same box VFP5 application is okay , but VFP6. Remedy to set Arial explicitly for popup menus , though not clear what can be done with shortcuts and something like 'Format' pad. -- Michael Mitiaguin

Visual Foxpro 5.0 and above will not function properly on Win Frame. It just won't. You'll need NT Terminal Server or Windows 2000 with or without Metaframe. I confess I don't know about VFP 3.0 on Win Frame. -- Christopher Olson
Meta Frame is the way to go regardless... I don't think anybody will recommend vanilla Win Frame for VFP...-- Steven Black
We have successfully run VFP5.0 with the latest service packs on our Win Frame servers. Data is kept on the Novell servers with the Win Frame used for processing power. In discussions with Citrix and Microsoft, it was noted the VFP does not follow the GDI(graphical device interface) specs. This results in the entire screen being redrawn because the Citrix algorthrim cannot calculate which specific areas of the screen to redraw. The refresh on a 56K line is acceptable even though faster is better for any remote site. Meta Frame is the recommended upgrade path, however the licensing is pricey because of the various Citrix and Microsoft pieces needed. -- Bill Colleary
There is a hotfix for Citrix to speed up screen refreshes with Citrix Metaframe or Winframe and FoxPro.
http://ctxex10.citrix.com/texpert.nsf/Hotfixes -- See ME180010, then click on the links containing 'Supercache', then look for ( F) 'Foxpro'.
Microsoft has noted a problem with Terminal Server (part of Citrix) where users may see Not Enough Files error messages. This problem is EXTREMELY prevalent with Citrix environments with many users.
See http://support.microsoft.com/support/kb/articles/q87/6/90.asp.
This is an NT limitation of 2048 shares per session. Thus if your application uses 200 files, you can have 10 users maximim. Solve this problem by putting Citrix on a Novell server, which has no such silly limitation. Novell is also much faster at dishing files.-- Steven Black
I thought Citrix was a hybrid OS, spun off from NT 3.51 (and therefore incompatible with Netware). If so, how can this be possible? - Del Lee -- Magic. To say Citrix is an OS I believe is incorrect. It runs on a Novell box like NT can run on a Novell box. Citrix runs on top of the network protocols, and you can use TCP/IP, IPX, SPX, NetBIOS, and even direct serial and modem connections. See Citrix ICA and compare with Microsoft RDP which is what Terminal Server uses.-- Steven Black
Steven, I am little confused by your comment. My clients who use Citrix v 3.51 (AND VFP6) are telling me that Citrix is a specially modified version of NT 3.51( Citrix purchased the source code from Microsoft, who did not sell or license the source code for Nt 4.0). The new Terminal server and Metaframe is based on NT 4.0. The people I'm working with have said they are not aware of any way this package or just the ICA protocol could run a Netware server. They are currently running a mixed Novell and Citrix environment. The Citrix servers are configured to run as virtual machines which provide greater processing power for the remote locations.-- Mike Yearwood
Citrix must run on NT - it is (as you heard), based on NT. The key is to keep your DBFs on a Netware server. You set up a Metaframe farm to run the apps, and connect all the farm servers to a single Netware server that is hosting the DBFs. Netware serves up the data quickly to the app which runs on the Metaframe farm. Very fast and clean. -- YAlan Griver
I question the issues around 2048 shares per session. Steven Black has commented to me that the issue may be solved in Windows2000. Further to this, a MCSE whom we discussed this with recently thought that shares may be shares set up against folders on the server and not file handles in use. In my experience, this would hold true, because we have an application that has about 100 DBF's open, each with a CDX ... therefore 200 file handles per user. They have 27 users on it every day. That's 5400 file handles in use just from our app, not to mention all the other stuff that they have open from time to time.-- Charles Waud
Issue a SYS(3050) really early in your application (like line 1) so that VFP won't seize all the available Citri X memory for long and others will also be able to log on :-).-- Steven Black
What would be a good setting for Citrix? - Andrew MacNeill
It's a fullblown VFP session. We've found 32MB works, 64MB is much better. :-)-- Steven Black
Is there a limit to how many users can successfully use a VFP app on a single Citrix server? I've heard the number of about 30 thrown around but Citrix says it doesn't matter if you have a powerful server. -- Andrew MacNeill
# of users = (Server memory)/(Desired user VFP memory + some overhead). Fifteen users per gygabyte of Citrix server RAM is about right.-- Steven Black

[2001.04.25 12:57:34 PM EST]
How much ?!!
Note that Terminal Server (and Citrix) make use of re-entrant code, and therefore f.e. VFP uses only the amount of memory it takes once. Add to that the work-memory per user, and calculate something like 8MB (of course depending on the app) per user.
30 x 8 = 240 MB or 128 MB per 15 users (hate to go against you Steven).
This still is too much, where the swap-mechanism is still active as normal, but depending on not everyone doing things at the same time.
Don't forget to start VFP from the exact same physical location, because otherwise the re-entrant stuff won't work.
Note : the how and why I'm not sure of, but I myself thought : re-entrant : well, how to know that ? so have the same physical location. Any real doc. on this I didn't find.
I never hear our users complaining on response-times, but bear in mind that a Citrix-environment can be setup very wrongly without noticing but performance problems. And no, don't put Fox on the network, which is ussually the first thing everyone does. -> very wrong.
-- Peter Stordiau
I've also read that bandwidth to the server can be as serious a limiting factor as server power. Any experience here? -- Randy Pearson
Correct. In a typical situation with well-tuned servers and a well-tuned network, the network is definitely your bottleneck. Nothing new there, Citrix or not.-- Steven Black
Here's what we use; and currently support... So far no problems and no one has complained about slowness.
vfp views dbc:
If a views dbc is shared, there is some dumb performance problem. I would assume that applies to TS too. not sure why it wouldn't
Even if the views dbc is in the EXE, if the exe is shared, then you still have the problem.
What is the problem with a shared temp dir?
Category Thin Client