Site News

Visi On
Win Shells
Misc GUIs

GUI Timeline
GUI Sites
Location: GUIs > Misc GUIs > Remote GUIs > Citrix Metaframe

Previous - Remote GUIs Index
Screen Shots

This section describes a number of remote GUI technologies including Citrix, Microsoft Terminal Services, X11, and web browsers. They are not in themselves GUIs, but rather methods of transporting a user interface from a server to a client computer. Unlike "remote control" programs such as PC Anywhere these tools provide multi-user ability to applications.

Please note that I am not an expert at these systems but have had some opportunity to use them and I find them interesting.

What is Citrix?

Citrix is a set of commercial server software from Citrix Systems that enables multiple users to launch applications on a remote server and view and interact with the application as if it were running on the user's own computer. Citrix brings the application's user interface, audio, and print jobs to the user's computer in a way that is completely transparent or "seamless".  Citrix is very popular in large business environments.

Why would you use something like this? Lets say, for example, you have a Windows-based data entry or reporting application that connects to a variety of databases and uses a number of application runtimes. This application is used by perhaps hundreds of people and installing and constantly updating this software on each computer happens to be a nightmare.

What do you do? You could spend years redesigning it as a "web" application that will never have the same functionality, require you to re-invent the wheel in some places, probably be buggier, and ultimately harder to maintain, or you could spend a bit of money and put it on a Citrix Server. (Depending on how seamless you need it, Microsoft Terminals Services as shown in the next section may also be an option. If your app happens to run under a unix-ish OS then X11 or VNC could also be an option)


Although remote computing solutions such as Citrix cost money it can save money in the long run.

It reduces the cost of deploying applications. All that needs to be installed on the client computer is the Citrix client. The Citrix client is a simple, small, well behaved application. This completely eliminates the myriad of compatibility issues that can crop up with installing complex client software on client computers. When applications are updated they only need to be updated on the server(s), there is no need for support personnel to re-visit hundreds or perhaps thousands of computers every time there is an update.

It enables you to use traditional, easy to use, mature development environments. Rather than having to spend years of man-hours writing and maintaining reports in HTML+CSS+JavaScirpt+Some other server side language, you can simply drag and drop reports together with such development environments as Crystal Reports, Oracle Forms Developer, Visual Basic, Power Builder, Delphi, Microsoft Access, or many, many others.

It frees up your clients to run whatever OS they need. Move that in-house Windows app to a server like this and *Poof* your Mac and Solaris users can now access it! If there were no other apps holding you back, you can now move your clients to Linux!

No need to perform expensive upgrades of clients. That old 486 running Windows 95 with a decent video card will work fine. All the number crunching in your application is done on the powerful servers.

Save on bandwidth. Citrix (and Terminal Server) can run decently over a 56k modem. Not only is number crunching done on the server, but also network operations to other servers such as database servers. Instead of downloading tons of information to the client and having them process it there, it is instead transferred to the application server, processed there, and all that is sent back to the client is the visual image with their results.

Connect to your application from anywhere. Generally in corporate environments this is limited to an internal network but Citrix can be used over the internet as well.

Screen shots:

This is the Citrix client. This client runs under Windows 9x/ME/NT/2000/XP and there are also versions for Windows 3.1, Macintosh OS X, classic PPC and 68k MacOS, DOS, OS/2, Java, Linux, Solaris, and other Unixes.

The Citrix client has the ability to connect to a Citrix server over a variety of protocols. It supports connecting over HTTP, HTTP with SSH, TCP/IP, IPX/SPX, and Netbui.

Applications available on the Citrix server are "published" to the client. This creates an icon for each available application in the "Program Neighborhood" that the user can use to launch each application.

On Windows these icons can be dragged to the desktop to make launching the application even easier.

When connecting to the server the user is prompted to log in. In this case it authenticates using the Windows NT/AD domain user ID and password.

Citrix can run just about any application that will run natively on the server. The server software, Citrix MetaFrame, is available for Microsoft Windows NT/2000/2003 Server (Terminal Server editions) and Sun Solaris.

In the case of a Windows server, the application must be able to handle a multi-user environment. Citrix and Terminal Services turn Windows in to a multi-user operating system. Traditionally Windows is a single user environment and some applications may become confused if more than one instance of the application is running.

In this example we are just running notepad, but Citrix is commonly used to serve up complex front end applications for large enterprise databases.

It is difficult to show the multi-userness of Citrix in these screen shots, but at the same time I was taking these screen shots there were numerous other users on the same server running some of the same applications, entering data, and printing reports. Whatever they were doing was completely invisible to my user session and vice versa. (although an administrator has "shadowing" ability to see what another user is doing)

The remote application, including the titlebar, uses the color scheme and appearance as set on the server. In these screen shots the remote applications are grey and the local ones have been set to use a brownish color scheme.

Multiple remote application windows can be running at once.

Notice that a taskbar icon appears on the local taskbar for each remote window. Although the remote applications are not running on the local computer, this helps provide a level of seamlessness and makes each window easy to work with.

The Citrix MetaFrame server software (for Windows) runs on top of Microsoft Terminal Server. Microsoft Terminal Server is kind of a subset of Citrix and some portions of Terminal Server were even written by Citrix for Microsoft.

On Windows, Citrix operates by intercepting GDI (Graphical Device Interface) calls from Windows application running on the server. These calls are then translated in to commands to send to the client to draw.

The bits of graphics to be drawn are captured and sent as "glyphs" or pieces of images that can be pieced together and can often be recycled and cached on the client computer. If the same image appears on the screen there is no need to resend the graphic. This gives viewing an application through Citrix about the same loading efficiency as a web page.

Multimedia system calls are apparently also intercepted, this enables sounds played by an application to be heard on the client computer.

Although it seems Citrix can use the HTTP protocol among others, it is not a "web" application or web based. In fact no web browser is required.

One of the greatest features of Citrix is that printing works just as if you were printing from an application running on your own computer.

When a Citrix client connects to a server it "auto creates" printers on the server for each of your local or locally mapped printers. When you print to one of these printers the server generates the print job using drivers on the server and then sends it to your computer to be spooled.

This may sound like it would be inefficient, but it is usually quite fast even over a slow connection.

In the event a printer driver is not installed on the server for your printer a generic printer driver can be used.

With this method of printing it is possible to print complicated, detailed forms and have them reliably print as designed.

There is no interpretation on the part of the client. The print job is printed precisely as the server says it should be printed. For example, you can use custom fonts in your reports. Since the print job is created on the server the fonts only need to be installed on the server. It does not matter how the clients are configured.

You also gain any exporting ability your application programming environment may have. In this example (Oracle Reports Runtime) you can export the report to a variety of formats.

One thing to note is that by running applications on a server, they will save data to the server instead of the users computer. This can be remedied by saving data to a home directory or network share.

Another example of an application running through Citrix. Acrobat Reader is known for being able to print the document exactly as it is intended to appear. This also works perfectly through Citrix.

Since the user interface behaves exactly the same as the host server it is possible to make complicated or detailed entry and display forms that are not possible in a web browser.

In fact, you can even run web browsers under Citrix.

If you made the dumb mistake of producing an IE only application, you can easily serve it up to your non-Windows clients, older Windows clients, or even new clients where IE is hosed, using Citrix or Terminal Services.

In a way, Citrix (And Terminal Services) blows the web out of the water compatibility wise.

Every time a new browser comes out, a web application must be re-written to work around the quirks of the new version, and it usually winds up not working on older browsers. With Citrix (And Terminal Services) the only requirement is that it runs on the server.

Finally, although applications are usually run seamlessly through Citrix, it is also possible for Citrix to run in full screen mode showing an instance of the desktop.

Normally you would only want to run your application and not the Windows desktop shell if it can be avoided. Each instance of the Windows desktop shell takes up memory and other resources (especially if it is the IE "integrated" shell).

Next - Terminal Services