Make a Deeper Web Connection
As of December 2011, this topic has been archived. As a result, it is no longer actively maintained. For more information, see Archived Content. For information, recommendations, and guidance regarding the current version of Internet Explorer, see Internet Explorer Developer Center.
August 9, 1999
Last month, we discussed some relatively straightforward ways an application could utilize connectivity to the Internet to enhance the user experience. For the most part, my suggestions were simple to implement, and should be considered as the minimum support your applications should adopt. But what if you want to take this a little further? What if you want to do more than just pretend that the Internet is a strategic part of your application?
The game is all about increased functionality and leveraging the tools at hand to get there. Today, the Internet has turned into an exciting tool that is underutilized by most non-browser applications. Just because your application has nothing to do with Web browsing or e-mail doesn't mean that an Internet connection is useless to you. This month, I'm going to propose a few features and capabilities that will expand the scope of your applications.
For an example of how an overachiever might try to add incidental support for both the Internet and the Web into their application, you need to look no further than Office 2000 (as described in Not Your Mother's Office). This product has embraced the services and capabilities of the Internet so much that users can use .html as their standard file format, and can interact seamlessly with Web-based documents and controls. I'm not saying that every developer needs to go this far, but you will if you want to be the teacher's pet.
To begin, I offer a cautionary note about getting too deep in providing Internet integration into your applications. People are, and should be, cautious about applications that are silently maintaining an Internet pipeline through which they transmit information back to some product-related Web site. It is similar to planting a listening device in someone's room. While I'm sure that all of my readers have only the best intentions when they write their applications, there are, unfortunately, people who don't share our morals.
Any and all Internet connectivity provided in your application should be plainly visible as such. Either you launch a browser window directly, or you present the user with a warning dialog that describes what communications you want to proceed with—or you do both. You should also provide a configuration option, where users can specify whether they want any Internet connectivity.
That said, let's get on with some brainstorming.
Users are quite familiar with patches, updates, and new versions of applications. In many cases, applications also provide for add-ons or modules that enable additional customization. Making these available via the Internet will help your users to meet their growing needs and experience. This approach fits in with the features we discussed last month—but instead of a "Web-based" model, you provide an interaction model that allows users to remain within your application as they learn about patches or additional modules that they can apply directly to their application. There are many ways to provide Internet connectivity from your application, more than could be detailed in this article, but documentation is available on MSDN to help get you started.
Many applications running on graphical operating systems provide some mechanism to insert graphics or other artwork. Most such applications also come with a pre-built library as well. Users love to build up clip art libraries containing their favorite pictures or drawings. By its very nature, clip art is a constantly expanding resource for users; they add to it as they create, or even purchase, additional pieces of artwork. If your application provides users with clip art resources, then I highly recommend providing some mechanism for distributing this clip art via the Internet. You could distribute the clip art for free, or you could employ various mechanisms to charge the user for individual pieces.
Even applications that aren't artwork-oriented can benefit from the notion of downloadable clip art. Many applications provide templates, samples, forms, reports, or other document structures on which the user depends. If a user runs across a need for a template that isn't originally supplied with the application, or wants to construct an original template, he or she might appreciate being able to connect to the Internet and browse through a template library.
Most users have only a single printer, but have an occasional need for printing in a format not provided by their current printer—perhaps a slide show presentation printed to 35mm slides, or JPEG images printed in normal 3x5 photographic pictures, or a CAD drawing printed onto very large format paper.
Depending on your application, there might be additional formats or processing to offer your users. It would make sense for the user to download an appropriate print provider driver for their system, which in turn would process and store a print job to a local file, and then send that to a print provider to be processed and returned.
Multi-user applications are probably most clearly appropriate for on-line games, in which multiple players interact across the Internet, but this capability can also be useful in non-game applications—in either a "simultaneous usage," as in a game like DOOM, or a "turn-based" approach, as in a game of chess. Programs that allow tech-support personnel to connect to a user's system and view, as well as manipulate, what is happening on the screen would be a fairly straightforward implementation of such a multi-user environment.
There are also times when multiple users want to operate on the same document, from different locations, at the same time. Or when one user finishes updating a document and needs to pass it on automatically to another user. These sorts of capabilities already exist in many applications, but, in most cases, they are designed to function within a corporate network environment, and do not work for the casual Internet user.
Providing this level of simultaneous interaction over the Internet comes close to issues regarding security and privacy. If you are looking to enable any level of support in your application, be sure to consider all of the surrounding issues—and provide the user with the ability to fully control how this functionality is exposed and provided. You should also ensure that measures are taken to prevent any abuse by outside individuals.
Sometimes users find themselves needing to work on multiple machines, often not directly networked together. This is the concept of a "roaming" user. Full Internet offerings, such as HotMail™, are perfect for e-mail access. It doesn't matter what computer you are on, or from where you are connecting. All you need is Internet access and a Web browser to check your e-mail. What about other documents and information, or applications that aren't strictly Web-based? It might be appropriate to include some type of storage service for your users. Certain files could be backed up (and encrypted) to your Web site in such a way that your users could access these files from anywhere in the world. This would be especially useful for files that are too big for a floppy disk (which, unfortunately, means they would take a while to up/download). Your users also wouldn't have to worry about copying files to disks, or remembering where those disks were.
Web browsers are great applications for displaying HTML documents, but have problems with documents and data of other formats. With the Web being a popular document-distribution medium, it is often useful to provide a "read-only" version of documents created by your applications. This makes it a lot easier for your users to distribute their documents on the Web. To do this, you provide a "viewer" version of your application, designed only for displaying the final document without allowing any of the editing or management features. Applications such as Adobe Acrobat and Microsoft PowerPoint already do this to provide their users with the maximum flexibility in presenting their documents in a native format.
I don't expect all of the above suggestions to directly apply to your application. But hopefully they will help you re-examine your application and how you can utilize Internet technologies, as well as the Web, to provide your users extra value and features.
Robert Hess is an evangelist in Microsoft's Developer Relations Group. Fortunately for all of us, his opinions are his own.