Migrating to IIS 6.0

Migrating to Internet Information Services (IIS) 6.0 means focusing on two major migration activities: migrating Web sites and migrating applications. There are several ways to perform the first—you can upgrade a server running IIS 4.0 or 5.0 to IIS 6.0, which will automatically migrate the Web sites on the server. Or, you can use the IIS 6.0 Migration Tool (see Resources). Using the upgrade migration path is not recommended because of the legacy components that are left on servers when they are upgraded from either Windows NT or Windows 2000 to Windows Server 2003. The best installation for Windows Server 2003 is the clean installation—unless, of course, your installation of Windows 2000 Server was a clean installation; in this case, you can perform an upgrade because there are no legacy components.

In most cases, you'll want to use a new installation of IIS 6.0. This means you'll need to use the IIS 6.0 Migration Tool to migrate your Web sites to the new server. IIS 6.0 actually boasts two migration tools: the Apache to IIS 6.0 Migration Tool and the IIS 6.0 Migration Tool. The former can be used to migrate Web sites running on UNIX or Linux-based servers running either Apache or Netscape Web Servers. The latter can be used to migrate Web sites running on either IIS 4.0, 5.0, 5.1, or 6.0—Windows NT 4, Windows 2000, Windows XP, and Windows Server 2003, respectively. In fact, it is not only a migration tool but also a transportation tool that can be used to simply move multiple Web sites from one server to another.

Both migration tools are command-line tools that operate through simple instructions. For example, to move Web site number 1 from Server A to Server B, you would use the following command on Server B:

iismt "Server A" W3CSVC/1

This assumes you have appropriate credentials on both servers to perform the operation. The example listed here uses metabase notification for the Web site, but you can also use Web site descriptions such as "Default Web Site" to perform the migrations. By default, the migration tool will migrate all Web site content, copy all file access permissions for the site, copy the Web site's IIS metabase configuration, map application isolation settings from IIS 4.0 or 5.0 to the new application pools in IIS 6.0, and produce a log file of all operations. In addition, you can use the migration tool to change the root directory path on the target server, apply Front Page Extensions, change the Internet Protocol (IP) address, port number, site ID in the metabase, and host header information for the site. Because it is command-line based, this tool can be used to produce scripts or command files that can migrate all the Web sites from one server to another.

The second type of migration you can perform is more of a conversion than a migration because it applies to applications running as Active Server Pages (ASP). Because the .NET framework is directly integrated to IIS 6.0, you might want to convert your applications from ASP to ASP.NET format. Doing so manually can take a significant amount of time, especially for those new to .NET programming. Fortunately, Microsoft has commissioned partner ArtinSoft to write an ASP-to-ASP.NET conversion tool (see Resources). Currently in beta format, the tool is slated as a migration assistant rather than a complete conversion tool. It can be run either from the command line or from within the Visual Studio .NET Integrated Development Environment (IDE).

According to Rob Vonderhaar, ArtinSoft's vice president of marketing, the conversion assistant does not always work at 100 percent, but that is to be expected. "Our migration tools aim to handle about 80 percent or more of the conversion process," Vonderhaar says.

"This is one reason why familiarity with the .NET environment is an absolute must to both understand and complete the process," he says. The conversion assistant will usually manage the conversion of all files from .asp to .aspx extensions, automatically correct the references to original files, infer data types for variables based on source code, relocate subroutines and variables inside script tags—required for ASP.NET—and convert Visual Basic code to Visual Basic .NET. In most cases, this is all that is needed for the converted application to work properly. In others, programmers need to fine-tune the result. If this is the case, they can do so based on the conversion report, which is generated after each migration. This report serves to identify any issues encountered during the migration. Developers can use the instructions provided in the conversion report to resolve these issues.

ArtinSoft developed several migration products under contract to Microsoft. These include the Visual Basic 6 to VB.NET Upgrade Wizard and the Java Language Conversion Assistant (JLCA) that are now part of Visual Studio. ArtinSoft is developing the ASP-to-ASP.NET conversion assistant under a similar contract. Microsoft recently named ArtinSoft as its "preferred supplier of worldwide upgrade services for customers."

"In that capacity, we offer a series of premium programs to help customers streamline their migrations," Vonderhaar says. In the case of ASP, the conversion assistant will automatically migrate the majority of code, but depending on the size and the complexity of the application, finishing the conversion may require a nontrivial amount of work."

This is one reason why ArtinSoft offers professional services in support of ASP.NET migrations. ArtinSoft's strategy can best be described as "Anything-to-.NET." In addition to ASP, they also supply automation-assisted migrations for many other source languages into a .NET platform including Java, PHP, Informix 4GL, Report Program Generator, and soon, PowerBuilder and Lotus Notes. The PHP-to-ASP.NET Migration Assistant entered the beta stage at the same time as the ASP-to-ASP.NET migration assistant.

Given the availability of the code migration tools in the short term and the immediate availability of the Web site migration tool, it should be easier for organizations to migrate both Web sites and application code to a platform that is completely integrated with IIS 6.0 and take full advantage of its capabilities.