In "Real-Life .NET: Setting Up UDDI on a Windows 2003 Computer" (, I discussed how to add Universal Description, Discovery, and Integration (UDDI) Services (which lets you easily publish Web services on your intranet for individuals and applications) to Windows Server 2003. UDDI Services isn't a required part of applications running on the .NET architecture, but it does make certain tasks--such as creating new applications--easier. Now I'll look at a piece of the .NET architecture that's not required to use .NET applications but that broadens support for .NET applications: the .NET Framework, specifically the .NET Framework on the client side.

.NET applications have two possible interfaces: Web forms and Windows forms. You need the .NET Framework to support both, but where you need the .NET Framework depends on which interface your applications use. Web forms are for applications that run on an application server and are displayed in a browser connecting to that server, so the .NET Framework needs to be installed on the application server (and on the development computer). Windows forms, which run on the client computer, are much more flexible than Web forms. I'll save the comparisons for another article, but if you find the idea of selectively transparent or oddly shaped interfaces intriguing, you'll like Windows forms. Using Windows forms requires having the .NET Framework installed on the client computer where the application is running.

Using the .NET Framework has a catch, though: You need to install it, and the only OS that comes with the most recent version of the .NET Framework installed won't be released until next week. .NET Framework 1.0 has been out for a while, but applications developed with Visual Studio .NET 2003 will need version 1.1 to run. (Applications written for version 1.0 of the .NET Framework theoretically work on .NET Framework 1.1 in most cases, but some differences exist between the versions. For example, version 1.1 doesn't require applications to have a manifest to display the Windows XP default UI, as 1.0 does. For a complete list of all the changes that could potentially break applications originally developed for version 1.0, see . For a list of changes that will prevent applications developed for .NET Framework 1.1 from running on .NET Framework 1.0, see To develop applications for .NET Framework 1.1, you obviously need to install that version.

You can tell whether .NET Framework 1.1 is installed by opening the Control Panel Add/Remove Programs applet and looking for .NET Framework 1.1 in the list of installed programs. If it's not on the list and you're using one of the supported OSs (Windows Server 2003, Windows XP, Windows Me, Windows 2000, Windows 98, or Windows NT with Service Pack--SP--6.a), then you have several choices for getting it. If you develop .NET applications, you can download the Microsoft .NET Framework Version 1.1 Redistributable Package (dotnetfx.exe) from for inclusion with the applications you write. End users who need to install the .NET Framework can get the most recent version from Windows Update.

What are the compatibility problems for .NET Framework 1.0 and 1.1? Can you run both versions of the .NET Framework on the same computer? Some people might want to run both versions to avoid rewriting applications originally developed for 1.0. However, you can't run different versions of the .NET Framework on the same computer; Setup will tell you that the .NET Framework is already installed. And you don't necessarily need to support both versions of the .NET Framework. If you try to run a .NET Framework 1.0 application on a computer with .NET Framework 1.1 installed, the application will attempt to run. Only if .NET Framework 1.0 is installed will the application revert to the older version of the Framework. Applications written for 1.1 do require 1.1, however--they won't run on version 1.0 unless you explicitly edit their configuration files to enable them to use that version and unless they don't use any pieces found only in the 1.1 Framework.

What this discussion comes down to is that version dependence is not entirely a thing of the past; .NET Framework 1.1 and 1.0 aren't identical. However, the isolated nature of .NET applications lets different versions of applications--and the underlying framework supporting them--to coexist.