Migrating to ArcInfo on WindowsNT

This paper reviews the effort involved in migrating the client portion of an ArcInfo application from UNIX to WindowsNT. It covers the problems that were encountered and the solutions that were applied.

Overview

Southern Company, like many large corporations today, is looking everywhere to trim costs and operate more efficiently. To reduce the support costs for our applications, our company has chosen to standardize the desktop operating system and selected WindowsNT as that operating system. For the next two or three years, the middle tier of our environment will continue to be servers running UNIX.

When Esri indicated that it planned to port ArcInfo to the WindowsNT environment, we began working toward moving our current application to utilize a WindowsNT client. This paper discusses what we have learned through our effort to port this application. It covers the hardware/software required, the application changes that were completed, and things to consider when dealing with ArcStorm.

Application Overview

Our set of applications is known by the acronym SEGIS (Southern Electric Geographic Information System). SEGIS has three primary applications: Editor, Work Order Sketch, and Map Query/Production. The Map Query/Production component was developed by Miner and Miner based on their MMMap and MMView products, while the Editor was developed in-house. The Work Order Sketch application was developed with assistance from Miner and Miner, but is based and integrated with our Editor code. Most of the application is written using AML although Oracle stored procedures have been used as much as possible. Within the Editor and Work Order modules there are over 400 AML form menus and more than 60,000 lines of AML code.

Hardware

Since we had already been working with other applications in the WindowsNT environment, our area has a mix of different PC configurations running WindowsNT (we are not standard yet!). The low end machine in the area was a 486/66 with 32Mb of RAM. While this machine was capable of running ArcInfo and our application, it was slow and would not be a recommended configuration. While better performance was exhibited on Pentium P75's and P90's, the continuing improvement in price/performance in PC's makes our current standard a PentiumPro (200Mhz), 128Mb RAM, a 17" to 21" monitor, and 2Gb of disk space. For occasional users, the 17" monitor is fine, but for people whose full-time job is working with the application really need and deserve the larger monitor.

Software

Our original migration effort began using ArcInfo 7.1 for WindowsNT and ArcInfo 7.1 for UNIX. We moved to ArcInfo 7.1.1 when it became available. One unexpected event with the UNIX version of ArcInfo 7.1.x came because we have never fully upgraded our Sun workstations to Solaris 2.x. With ArcInfo 7.1.1 on Sun, you must either be running Solaris 2.x (which includes Motif libraries) or add the Motif libraries to SunOS. Although migrating from SunOS 4.1.x to Solaris 2.x is not done without significant effort, we chose to go ahead and upgrade the operating system on our workstations. We knew that SunOS was not really supported any more and that Solaris offered some nice features and better performance.

Our next problem to be solved was making the UNIX file systems available to the WindowsNT workstations. This requires software on both the UNIX and WindowsNT machines. For both environments, there is freeware available to solve the problem. For the Sun environment, we chose to download pcnfs from the Internet. This software's main function is to provide authentication for the user on WindowsNT so that file permissions, etc. work correctly. On the WindowsNT machines, we chose to purchase software, since our network experts felt that the free software available generated too much network traffic.

The last piece of software to be addressed was our RDBMS, Oracle. Prior to this effort, most of our databases were running Oracle version 7.1.4. For ArcInfo 7.1.x we needed to be running at least Oracle version 7.2 and the current version is 7.3.x. Since we did not want to upgrade Oracle to anything other than the current version, Oracle 7.3.x was installed. The catch with this upgrade is that in Oracle 7.3.x, SQL*Net version 1 is no longer supported. While this did not cause our application any significant problems, we have seen other applications where this was a major problem. One other note is that the WindowsNT machines must also have access to SQL*Net V2 to function properly.

Application Changes

One of the most obvious differences between UNIX and Windows are the pathnames. While UNIX uses a forward slash (/) as a delimiter between directory levels, WindowsNT uses the backward slash (\). In ArcInfo AML on NT, these delimiters are generally interchangeable below the root level. It results in some weird looking pathnames, but can help portability between UNIX and WindowsNT. In our work, however, the few places where this difference was not handled well prompted us to create a new global variable in our application that became the appropriate delimiter for the operating system of the client.

The other difference in path names between the two operating systems is the use of drive letters in WindowsNT. Although WindowsNT does support the use of a machine name in the path (\\) it is more common to use drive letter mapping (F:). This difference requires coding changes for the application to be sensitive to the environment in which processes are being executed. The area where this can be a particular problem is in the ArcStorm checkout or copyout process, since the client workstation setting up the checkout or copyout may be running on WindowsNT, but the actual execution of the checkout or copyout is running in the UNIX environment.

The area that required the most significant application changes were those places where system calls were being made (&sys). These calls fell into three general categories: 1) opening background processes, 2) execution of system commands (create/remove files and directories), and 3) executing scripts.

Opening background processes was not a significant problem since there is little difference between UNIX and WindowsNT in this area. However, we did look at each of these to determine if it were more appropriate for the process to execute on the server rather than on the client.

Likewise many of the UNIX system commands have an equivalent in WindowsNT. However, the command name is frequently different (rm versus del). At the very least, the location of the executable is different between UNIX and WindowsNT and in some cases the NT equivalent is not a standard part of the operating system. Rather than modify the application code to handle these differences, we chose to eliminate as many of these system calls as possible. While in some cases this had a small performance penalty, it had the advantage of improving the portability of the application and avoiding a lot of platform specific conditional statements. Much of what was being done with the system commands was directly achievable in AML. For example, rather than use a system call to create a new directory, the CREATEWORKSPACE command was used. In cases where the system call was used to create a "flag" file, it was necessary to open, write, and close the file in AML.

Execution of shell scripts proved to be the most difficult of the system calls to resolve. In a number of places in the application, system calls had been used to execute SQL*Plus, awk, and sed scripts. In many cases the SQL*Plus scripts were used to create temporary files with selected data from Oracle tables which were then used in scrolling windows within an AML form menu. This was an approach that was originally taken to get around the limit within an AML form menu that only INFO or flat files can be used to populate these scrolling lists. Another approach to getting around this problem is to create temporary INFO tables using the DBMSINFO function. This requires populating temporary tables in Oracle with the results of a query then creating the INFO table from the temporary table. This approach appears to have equivalent performance as the first approach as long as the selected set of records does not get excessively large.

ArcStorm Considerations

Since our application makes use of ArcStorm, there were several considerations specific to its use. Under ArcInfo release 7.1, the ArcStorm server must run under UNIX. The path naming problem discussed earlier is one of the obvious impacts of this client/server relationship. In the original application development, it was sufficient to write selection files for ASEXECUTE commands to an area in the user's home directory structure. Continuing to do this when the client moves to NT requires the UNIX machine to be able read directories on the NT machine's disk drive. This means that each user's workstation would have to have appropriate directories shared as a NFS directory on the network. This requires additional software to be installed on the NT machine. Rather than acquire additional software to accomplish this, we decided to place these files on the UNIX machine's disk drives.

A related problem exists with the destination of the resulting coverage from a copyout or checkout action. Like the selection files, the original application wrote these coverages into workspaces in the user's home directory structure. This process was modified to always write the coverage to the UNIX file system then, at the user's option, copy the workspace to the client machine or leave it on the server. This requires the application to keep track of where the "real" coverage exists. One problem with this approach is that ArcStorm always considers the "real" coverage to be located in the directory where it was checked out. This can cause problems when resuming an ArcStorm transaction if the "real" coverage is not where ArcStorm expects it to be. However, for performance reasons, our application is designed to perform edits on a local coverage and display library features as background on demand.

The checkin process has the same considerations as the checkout process, so little additional work was required here. The primary change was to make sure the coverage or coverages were located where ArcStorm expected them to be.

Other Considerations - Forms and Windows

One of the key points to keep in mind when moving an ArcInfo application from UNIX to WindowsNT is that ArcInfo on NT is not a Windows application. In other words, it will tend to look more like a UNIX application that is running on WindowsNT. It will not look or feel like other Windows applications that users may be accustomed to. Compounding the problem is that the difference in window handling between the two environments causes user interface differences that make the application more difficult to use.

In an application like ours, a user may have many AML Form menus displayed on the screen at the same time. Some of the menus are intentionally placed by the application to overlap other menus in order to maximize the space available for graphic operations. This was not a problem in the UNIX environment, since the active window did not have to be "on top" of the nested windows. Under WindowsNT, however, the general mode of operation is that the active window is always on top. While this can be overridden by specifying that a specific window is "always on top", this gets awkward and confusing when multiple windows overlap each other.

Another problem comes from the difference in sizing and appearance of the windows. Under WindowsNT, the ArcInfo menus always have a status bar area at the bottom of the menu. This can cause the menu or form to be significantly larger in relative terms when compared to its UNIX counterpart. Further, icon and button placement that looked fine in UNIX takes on a different look and spacing in WindowsNT. In some cases, form menus that work fine under UNIX would not even fit on the screen under WindowsNT.

The real solution to these problems under ArcInfo on NT is to redesign forms and menus to minimize or eliminate overlapping windows. Additional effort must also be expended to review the appearance of every menu in the application to make sure that its appearance is acceptable in both environments. For an application like ours that contains hundreds of form menus, this can be a significant effort.

A less significant difference between the UNIX and WindowsNT environment is the screen resolution. On our Sun workstations, the normal display resolution is 1152x900, while many of our NT workstations are running a screen resolution of 1024x768. The main place where this causes a problem is when the application specifies an absolute location or size for a form menu. The best solution here seems to be the addition of logic to place and size menus based on the screen resolution.

Summary

Esri has done a good job in porting ArcInfo to WindowsNT considering everything. It is functionally the same package on both platforms. AML is fully portable between the two platforms which means that a single set of application code can be maintained that works on both a UNIX client and a WindowsNT client.

While we did not perform any specific performance testing, we attributed the slower performance on WindowsNT to the difference between the performance of the processors and to our specific network configuration. We did notice improvements in performance as we moved more pieces of the application to the workstation (coverages, AML code).

It will be necessary to add NFS capability to the WindowsNT workstations. It may also be necessary to upgrade other software to more current releases in order to migrate an application.

Finally, any complex application will require time and money to migrate from UNIX to WindowsNT. The level of effort required will depend on UNIX specific code in the application, ArcStorm usage, and the number of form menus in the application.


Charles C. Davis
AM/FM/GIS Product Specialist
Southern Company Services, Inc.
64 Perimeter Center East
Atlanta, GA 30346
Telephone: (770) 821-2957