Location: GUIs >
Misc GUIs >
Remote GUIs >
Previous - Remote GUIs Index
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
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
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.
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
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
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"
Next - Terminal Services