Downloads
21935.zip

Convert HTML from IIS to any wireless device—automatically!

\[Author's Note: Each month, this column discusses various aspects of the advanced administration of e-business sites. This month, I show you how to install, configure, and use an Internet Server API (ISAPI) filter on your IIS sites that will immediately provide wireless capabilities.\]

Designing, developing, and implementing wireless Web applications is difficult and tedious. Software developers have difficulty maintaining a public Web site that's compatible with all the different Web browsers while still exploiting the unique features of each browser. To add to the complexity, the popularity of wireless Web applications has skyrocketed—along with the more than 1000 devices (all with slightly different capabilities and features) that have come with this explosion.

Developers wrote first-generation wireless Web applications to support one device: a particular Personal Digital Assistant (PDA) such as Compaq's iPAQ Pocket PC that runs Microsoft Pocket Internet Explorer on Windows CE or a cellular telephone that has Wireless Markup Language. WML, formerly called Handheld Device Markup Language (HDML), is the markup language designed for cellular telephones and PDA capabilities. WML is similar to HTML, but it's XML based, which gives it a more rigid structure. Developers write applications to support one device because maintaining multiple code bases to support more than one device is so difficult. Just keeping up with all the nuances in rendering capabilities for one device is an almost impossible task for software developers.

So, would you be surprised if I told you that there's a product for IIS that automatically converts the HTML that IIS sends from your Web applications into the proper wireless format of the device that's connected to your IIS server? Well, the product's name is Echo, and Wireless Knowledge (a Microsoft-QUALCOMM partnership) produces it. Echo is an ISAPI filter that determines the type and capability of the wireless Internet device that has connected to your IIS Web server. When IIS renders HTML, this outbound ISAPI filter intercepts it and converts it to the proper format of the connecting device. Put another way, when IIS receives a request for data from a Web-enabled mobile device, Echo determines what type of markup language the device requires and instantly translates the HTML output of your Web application into that markup language (e.g., HTML for Palm, HTML for Pocket PC, WML or HDML for cellular telephones).

The process is that simple. The burden on your Web applications is negligible because Echo simply converts HTML on its way out. Echo isn't like an Active Server Pages (ASP) engine with an interpreter or a compiler that requires significant CPU and disk time. By custom-rendering the data after your application has delivered the HTML and just before IIS sends the data to the mobile device, Echo stays out of the application itself. The best news is that Wireless Knowledge has a large team of engineers, testers, and quality-assurance people who keep current on the capabilities of new wireless Internet devices as they enter the market so that you don't have to keep up with every device.

Installing and Configuring Echo
Echo supports IIS 4.0 or later. You use an installation wizard in a Windows Installer (.msi) file to install Echo. When you run the wizard, Echo checks your system for compatibilities. If Echo doesn't find problems, the license agreement appears. If Echo finds problems (e.g., an old version of the Microsoft XML Parser—MSXML), it recommends solutions. (No compatibility problems exist in a default installation of IIS 5.0 on Windows 2000.)

Simply follow the wizard's prompts to complete the installation. The installation documentation and Wireless Knowledge support are excellent, so count on them if you have questions or trouble.

After you install Echo, putting it to use is simple. Open the Microsoft Management Console (MMC) Internet Information Services snap-in (or the MMC Internet Information Server snap-in in Windows NT 4.0). Navigate to the site on which you want to run Echo. Right-click that site, then select Properties. Notice that Echo installation has added a Mobility tab, which Figure 1 shows, to the Web server's Properties dialog box. To turn on wireless capability for the entire site, simply select the Enable mobility check box.

However, you don't have to enable mobility for your entire Web site. Like most properties in IIS, mobility is inherited. If you turn on mobility for the entire Web site, each virtual directory, folder, and file beneath that site inherits the mobility setting. You can also navigate to a virtual directory or folder, right-click it, and select Properties. In this way, you can enable mobility at a more granular level.

Taking Echo Out for a Test Drive
Before you get too excited about the power Echo gives you, you and your developers need to be aware of a roadblock. Chances are that some of the pages in your site contain a large amount of data. For example, you wouldn't want to send the entire contents of the MSN home page to a cellular telephone. Echo would render the pages, but even if the buffer on the cellular telephone could handle it, users wouldn't want to scroll through 100 three-line pages to get to the information they need. In addition, when you think about the design of your wireless applications, you most likely will eliminate the navigations on your site. (Top and left navigations are the most common, but many sites today use bottom and right navigations, too.) Navigations give too much data for a cellular telephone to use.

Now, here's a scenario to show you Echo in action. I installed the Retail Solution Site, a fully functional, ready-for-the-Internet, business-to-consumer (B2C) e-commerce site that ships with Microsoft Commerce Server 2000. I applied a look and feel to the site and installed it as a demonstration application at http://solutions.interknowlogy.net/retail. The site's functionality is typical of a retail e-commerce site on the Internet. The site displays products, and you can add products to your basket and make purchases. Figure 2 shows the site's home page from Microsoft Internet Explorer (IE) 5.5.

Notice the top and left navigations on the site (e.g., Home, Sign-in). In addition, Commerce Server catalogs appear as links on the home page. This home page shows too much data for a PDA or cellular telephone to display adequately. So, you and your developers must analyze design carefully.

One strategy is to retain one code base for the site and intelligently sniff (i.e., programmatically determine the capabilities of the browser connected to your site) the capabilities of the browser that has connected to the site. Within your .asp file, you would trim back the capabilities (and output) of the site with some type of If...Then...Else logic that handles rendering to browsers, such as those of wireless Internet devices. The drawbacks to this strategy are that

  • it adds a layer of complexity within each page
  • you need to determine the browser capabilities on each page of the site

Another design strategy, and the most popular for Echo sites, is called forking the code base. In this design strategy, you create a separate code base specifically tailored to the limited rendering capabilities of wireless Internet devices. This strategy is much cleaner and easier for the developers. The drawback is that you have two code bases to maintain. When you fork the code base, you intelligently sniff the capabilities of the browser that has connected to the site. If you need to downlevel the information to a browser, you send the user to the forked code base. I chose this strategy.

First, I determine the capabilities of the browser and send (i.e., redirect) mobile users to the forked code base. You probably also want to use DNS on your wireless site. If I determine that the user has a downleveled browser, I send the user down a different code base that doesn't have the top and left navigations. This code base simply carries the basket functionality (in which the user chooses a product), a place for the user to enter ship-to and bill-to information, a place for credit card details, and a place for purchases. This downleveled code base is simply a copy of the main code base without all the extraneous information.

Notice the limited UI that Figure 3 shows. This is the Retail site as viewed from a PDA running Windows CE. Windows CE 3.0 has Pocket IE with graphics capabilities. A version of Macromedia Flash is also available for Windows CE. Figure 4 shows the site as viewed from a cellular telephone emulator. (For speed, you need an emulator when you're testing your wireless applications.) These figures illustrate the most interesting and exciting thing about Echo: You can use it on one Web site without special coding that handles the different capabilities of the UIs. Echo determines the capabilities, converts the HTML on the way out, and sends the correct version of HTML to the device.

Echo also comes with a handful of simple HTML tags that give your developers even more power through more granular control within their wireless applications. Consider the code that Figure 5 shows from the home page of the http://solutions.interknowlogy.net/retail site. Listing 1 is the source for Figure 5. (You can download the code in Listing 1 from the Code Library on the IIS Administrator Web site at http://www.iisadministrator.com.) Notice the <echo-choose> tag. This tag acts as a case statement (i.e., a statement that lets programmers branch execution depending on the condition passed to it) based on the type of wireless device that Echo identifies. The purpose of this bit of code is to determine how and what to display on the home page. Several <echo-when markup=" "> parameters are also available (e.g., "html," "wml," "palm," "pocket"). In this case, the HTML version displays a Macromedia Flash 5.0 file. The otherwise condition handles a Macromedia Flash 4.x file for the Pocket PC. The "wml" case handles cellular telephones and displays a .bmp image file instead of a flash image. Of particular note is the lowsrc="iklogo.bmp" attribute. Echo automatically handles downleveling an image to the Wireless Bitmap (WBMP) format that a cellular telephone can handle.

Next Month
I've shown you how to install, configure, and implement Echo, a powerful product from Wireless Knowledge. Echo is an outbound ISAPI filter that seamlessly integrates with the Internet Information Services snap-in. Echo makes wireless device compatibility a nonissue. Echo renders the data on the fly for any Internet-ready mobile device—cellular telephones, PDAs, Pocket PCs, and many more devices. Mobilizing your corporate applications with Echo requires no specialized hardware, software, or skills. Echo doesn't require well-formed HTML, but it renders best when the HTML is well formed. (Echo can misinterpret ambiguities—e.g., missing tags, unterminated tags—which can lead to unexpected results.) For more information about Echo, visit http://www.wirelessknowledge.com/products/echo/echo.asp.

Next month, I'll give you a glimpse of the future. I'll take an in-depth look at IIS 6.0, which will ship as part of Windows .NET Server (formerly code-named Whistler). In particular, I'll give you a tour of the IIS 6.0 metabase, which is now in XML, and show you some of the metabase's administrative features.

Note: Echo starts and stops services during installation, so prepare your production servers before you install Echo.