Any desktop application can be quickly turned into a secure Web server using standard, well-tested open-source components. While others have probably experimented with this technique, which requires only a conventional browser with no plugins, it apparently has never been documented publicly before. This article includes all the code you need for your own installation.
You have a crucial application that's quietly done its job for years. Maybe it’s a game, played by tens of thousands of people around the world. Or it’s an oven control that ensures the crackers in one specific factory are perfectly crispy. Now someone wants—needs—that desktop (or tractor-top or command-center-top) application to run on the Web. ASAP. You've got a problem.
You've also got a solution. From our company's experience, you can probably prototype a Web version of that application in 15 minutes.
Seriously: We've done this over and over, with more successes than we frankly expected. You can, too.
First, understand clearly where we're shining the spotlight. The original application might be on Windows NT, or even Windows 3.1; it could be '80s-vintage Unix, or OpenVMS, MPE/iX, green-screen 3270, curses-based, or any of several more modern operating systems (OSs). At some point, someone probably invented “remoting” software for that platform, and you can likely re-purpose that remoting protocol to display within a Web page.
The value of a Web-based replacement for a desktop or “client-server” application is outside the scope of this article. There are plenty of good reasons to prefer Web applications, and at least a few badly confused ones are popular, too. What we prefer to do is move an organization beyond cycles of meetings and analysis on whether a Web application is feasible. We make it real, then leave to them the longer-term, strategic questions about what to do with it. Meanwhile, they have a working web app.
A 15-minute "Webification" isn't necessarily ideal from an engineering standpoint. Expect it to lack polish in its security, coordination of concurrent users, or performance. To have some sort of Web-based application makes for a far better starting point, though, than just to speculate about whether a Web application is possible.
The Tools You Already Have
For common modern OSs—MacOS, all varieties of Linux, and any Windows from the last decade—a typical Webification demonstration involves the following:
- The original, unchanged desktop application
- A VNC server running on the desktop
- A small auxiliary web server, and
- A couple of pieces of web content served up by the latter.
The desktop application is what the organization has already. VNC (virtual network computing), for this purpose, is well-seasoned software that's available both in no-charge and fee-supported versions for all the platforms of interest. Any web server will do in the auxiliary role, including any that might have already been established as organizational standards. Most simply, some of the VNC servers also supply web service.
Finally, the Web content is just enough to display a "click here for the Web form of the OOO application" hyperlink to a Java-coded VNC viewer. Several of the latter are available at no charge, and we've also written our own variations.
At that point, you've hit your target! With the pieces properly configured, you can go to any network-connected web browser, point to the right page, and select the hyperlink. You'll see a copy of the original desktop, complete with a running copy of the application. Your remote mouse can control the application just as you normally would on a desktop, you can type characters where appropriate, and so on.
That's how it goes in principle, and, as already mentioned above, surprisingly often in practice.
[caption id="attachment_605" align="aligncenter" width="500" caption="Screen shot of a Freecell game. The game was executed on a slow, old Windows Vista system. The display was “Webified,” though, so that it was visible through a Web browser on an even older Mac OS 10.4, where the human player made clicks and drags to play the game. In practice, this kind of Webification is most valuable for more proprietary legacy applications, including management of locomotive switching yards, point-of-sale operations, seaport facilities, and so on."
There are limits to this approach, of course; the ones we most often encounter include:
- Passage through network translation, proxies, and firewalls might demand another 15 minutes of configuration, sometimes more. Firewalls have never defeated us in Webification, but sometimes they do require a little care and adjustment.
- Cut-and-paste might not work as expected in the first implementation.
- Performance sometimes is more-than-adequate, and sometimes unacceptable, at least initially. While we've always been able to configure our Webifications so that ultimate performance is good enough, it won't be a surprise when we run into an application that simply doesn't "remote" well.
We used to have issues with fonts and 3D applications, but those seem to have worked themselves out in recent years. It takes a little more effort to “productize” such a solution, often with attention to screen dimensions and how to restart the legacy application. The basic technology for this model of Webification is about 15 years old; it's only in the last decade, though, that browsers' JVMs (Java Virtual Machines) have been strong enough to make it practical.
You can do this! Start with an important legacy application, layer on a little VNC and Java, and enjoy what pops up in a Web browser. Help focus product meetings on real business issues rather than fantasies about what might or might not work. Show ‘em that Webification is real.