When Microsoft formally introduced its .NET strategy in mid-2000, analysts were confused about how the company would pull off such a massive platform shift. Over two years later, they're still wondering. But .NET isn't vaporware, and it's not a pipe dream. In fact, .NET is happening today. If you've got a question about this exciting set of technologies, please ask me and I'll post the answer here.
UPDATE: This FAQ is now retired.
Q: What is .NET?
A: It's a dessert topping, it's a floor cleaner--it's a dessert topping and a floor cleaner! Actually, .NET is many things, but primarily it's a marketing term for a set of products and technologies that Microsoft is creating to move personal and enterprise computing beyond the PC desktop and into a distributed Internet-based environment. So .NET--which was originally called Next Generation Windows Services (NGWS)--is also a platform, one that Microsoft sees as the successor to Windows. The .NET platform is based on Web services which are, in turn, defined by a language called XML.
Q: What is XML?
A: XML--the eXtensible Markup Language--is a self-descriptive, data definition language. It's structure is similar to HTML, the language of the Web, but it's far more powerful because it's not limited to a static list of language constructs ("tags") that the language's authors supply. Instead, XML is extensible and dynamic: Programmers can define new types of data using XML and then describe that data so that others will know how to use it.
Q: What are Web services?
A: Web services are functions exposed by server-side applications. They areprogrammable units that other applications (and Web services) can access over the Internet.
Q. Does .NET require Windows?
A. Technically, no, but realistically, yes. It's possible the .NET platform could be ported to other operating systems, such as Linux, FreeBSD, the Macintosh, or whatever, and indeed, some work is being done now in this area. However, .NET very much requires Windows today, on both the server and the client. One might say that .NET and Windows have a symbiotic relationship going forward.
Q: Is .NET is being ported to Linux?
A. Yes. A company called Ximian is porting the standards-based parts of .NET to Linux as you read this, and the work is amazingly far along. Code-named Mono, this project seeks to bring the C# programming language, the Common Language Runtime (CLR, see below), and other .NET features to Linux.
On a related note, Microsoft has contracted Corel (makers of CorelDRAW and Word Perfect) to port .NET to FreeBSD at some undetermined date in the future. This project has not yet started.
Q: Which Windows versions support .NET?
A: You can run .NET client applications and services on Windows 98, 98 SE, Millennium Edition (Me), NT 4.0, 2000, and XP, as well Windows CE .NET-based products, such as the Pocket PC and Microsoft SmartPhone 2002.
On the server, you can use Windows NT 4.0, 2000, or Windows .NET Server 2003.
Q: Are there any .NET features in Windows XP?
A. Yes, but not much. Because Windows XP was designed and built before the .NET Framework was complete, it only includes bare-bones .NET functionality. The primary conduit for .NET in XP is Windows Messenger, which is used to expose .NET alert and rendezvous services. XP also includes integration with the .NET Passport service, so that you can optionally auto-logon to Passport when you logon to Windows.
In August 2002, Microsoft shipped Windows XP Service Pack 1 (SP1); this XP version does include the .NET Framework.
Q: Isn't .NET just another name for COM, COM+, Windows DNA, or some other previous Windows technology?
A: Actually, no. Microsoft spent considerable time and effort developing and promoting a set of Windows technologies that was at various times called OLE, COM, COM+, and Windows DNA (Distributed InterNet Architecture) but .NET is not the next iteration. Windows DNA, which was the final umbrella term for this set of technologies, was based around a concept where Windows-based software components could expose their services for other local and remote Windows software components. But though this sounds passingly similar to .NET, Windows DNA is very much based on proprietary Windows technologies. By comparison, .NET is based on open standards (XML and various related technologies), so it will be much easier for other vendors to adopt the platform and write compatible software. So we can eventually expect to see .NET clients and servers on platforms other than Windows.
Q: So are all older applications useless now? What about all those COM components I developed over the past several years?
A. Obviously, any existing applications, services, and components will continue to work with future Windows versions. However, Microsoft has also added interoperability features so that you can use this older code--now referred to as unmanaged code--with new .NET applications and services.
Q: So what technologies are part of .NET?
A: .NET is comprised of several related technologies, including:
.NET Framework - A runtime environment and set of standard services which .NET capable applications and services can utilize. Implemented as a code library, the .NET Framework includes the Common Language Runtime (CLR), the .NET run-time environment; ASP .NET, a Web applications platform; and ADO .NET, for data store access.
.NET Compact Framework - A subset of the .NET Framework designed for Pocket PCs, Microsoft Smart Phones, and other Windows CE .NET-based mobile devices.
MSN consumer services- Microsoft will use its consumer-oriented MSN online service to expose Web services to individuals. The current version, MSN 8, includes the .NET Passport's authentication services, email, address book, calendaring and tasks, and other similar services.
.NET Enterprise Servers - An extensive set of Microsoft server software that runs on Windows servers, including Application Server, BizTalk Server, Exchange Server, Host Integration Server, Internet Security and Acceleration Server, SQL Server, and many others. Microsoft is currently shipping many such server products, but they are all based on Windows DNA currently, not .NET. Future server products--beginning with Windows .NET Server 2003, due in April 2003--will actually be based on .NET technologies for the first time.
Visual Studio .NET - Microsoft's .NET development environment, with support for languages such as Visual Basic .NET, Visual C++ .NET, Visual C# .NET, and Visual J#, which all target the .NET Framework. Other vendors can add other language capabilities to Visual Studio .NET, and the suite can be used to target a wide range of applications and services, including .NET Web services, Windows applications, and Web applications. Note that Visual Studio .NET is not required to create .NET applications and services: Developers can download the .NET Framework for free; this download includes compilers for Visual Basic .NET, Visual C++ .NET and Visual C# .NET.
Q: Will I need to upgrade my Windows NT4/2000 servers to Windows .NET Server 2003 to serve .NET applications and services?
A. No, you can install the .NET Framework on Windows NT 4.0 or Windows 2000. However, Microsoft hopes that it's new .NET Enterprise Servers add enough value that you will want to upgrade to one or more of them.
Q: What does Windows .NET Server 2003 bring to the picture compared to Windows 2000 Server?
A. Windows .NET Server 2003 is an evolutionary upgrade to Windows 2000 Server, with hundreds of new features. For more information, please read my exhaustive review of Windows .NET Server 2003.
Q: Visual Studio .NET sounds nice, but what about other programming languages?
Q. What if I want to create standalone Windows applications that don't rely on the .NET Framework? Is this still possible?
A. You can still write Visual C++ applications and services that rely on technology such as the Win32 API, MFC, ATL, or COM/COM+. However, Visual Basic programmers will have to learn the new Windows Form model exposed by the .NET Framework.
Q: What's the future of Web-based scripting under .NET? If one wanted to write Web scripts that work with the widest variety of browsers?
A. You want to look into something called ASP .NET, which is a server-side scripting environment based on .NET. What this gives you is the ability to use any .NET compatible language, built-in browser detection features you won't need to hand-code, and compatibility with non-PC devices like Smart Phones and Pocket PCs. The future of Web scripting is server-side.
Q: When will the .NET Framework be shipped as part of Windows? Is it included in Windows 2000 SP3 or Windows XP SP1?
A. Windows .NET Server 2003 will be the first full Windows version to ship with the .NET Framework included as an integral component; this product is due in April 2003. However, Windows 2000 SP3 and Windows XP SP1 do include an optional install of the .NET Framework as well.
Q: Parts of .NET sounds a lot like Java. Is it just a Java rip-off?
A. Not exactly. Like Java, .NET includes a run-time environment that provides a number of important developer services, such as garbage protection. And yes, C#--an object oriented, C-like programming language similar to Java--is the preferred language for .NET development. But Java isn't the first object-oriented C-like language, and it certainly isn't the first developer tool to offer a run-time environment (indeed, Microsoft has used a run-time environment for Visual Basic for almost a decade, beginning well before Java was invented).
Also, .NET offers three critical advantages over Java: First, it allows the programmer to use any compatible programming language, compared to the one (Java) that the Java environment allows. Secondly, .NET applications and services are fully compiled, unlike Java applications and services, so they offer much better performance. And finally, critical portions of .NET--including the CLR and the C# programming language--have been opened as international standards. Despite promises, Java's inventor--Sun Microsystems--has constantly reneged on its Java standardization efforts. This standards-based approach will eventually see .NET ported to operating systems other than Windows.
Q: What about Windows? If .NET is successful, does that mean Windows goes away?
A: No. Windows is a crucial component of .NET, on both the server and the client (desktop). Server-side, Windows servers will be used to execute .NET code and provide .NET services to users. On the client, a future Windows version called Windows .NET will provide pervasive .NET integration and be what Microsoft calls the most complete .NET client. And on handheld and connected devices, Windows CE .NET offer a subset of the .NET Framework called the .NET Compact Framework, that enables .NET compatibility there as well. Even if .NET succeeds beyond Microsoft's wildest dreams, Windows doesn't go away. Instead, it becomes a key component of a far wider strategy that moves beyond the PC to include PC-like devices such as cell phones, PDAs, set-top boxes, and the like.
Q: What about 64-bit Windows versions? Will .NET applications and services have to be recoded or recompiled to run on this new platform?
A. Most .NET applications and services should run fine on 64-bit Windows platforms that are .NET Framework-enabled without having to be recoded or recompiled at all.
Q: .NET sounds like it requires a 24/7 Internet connection. What happens when that connection goes down, or if we have a dial-up Internet connection?
A. For .NET to be fully realized, bandwidth will have to be like electricity. That is, it will have to be always on, and very reliable. In the meantime, Microsoft realizes that many people will be accessing .NET services through an unreliable or slow connection, and for this reason, the technology is being built to deal gracefully with interruptions.
Q: How do we know .NET isn't just a passing fad?
A. I think the clearest way to understand this is to look at how they've architected .NET. Unlike many of Microsoft's previous technology initiatives, .NET is a brand new platform that's been done right. Just head into a Borders or Barnes and Nobles, and check out the wide variety of .NET related topics there are out there, everything from building mobile Web applications, to Windows Form applications, to pre-.NET application porting. Microsoft .NET is real, it's here to stay, and though the phrase "betting the company" is getting a bit tired, this time it's true: Microsoft's future is completely wrapped up in .NET.
Q. What companies and products does Microsoft's .NET product line compete with?
A. Honestly, there isn't a single company or product line out there that competes with the full .NET initiative. For Web services, the obvious competitor is Sun, with its J2EE (Java 2 Enterprise Edition). And Java is right there as a non-OS platform of sorts as well, though it has glaring performance and compatibility deficiencies. IBM has a Web services strategy, of sorts, as well. And of course various companies make developer tools that compete with Visual Studio .NET.
However, the biggest .NET competitor might ultimately be Linux. If the Linux community can successful port key .NET technologies and provide key .NET services via free server products, it could give Microsoft a run for its money.
Q. OK, so what's the point? How does this make my life better?
A. With apologies to Microsoft for stealing the term, .NET enables a better PC ecosystem. That is, by making life easier for everyone involved with PCs, the benefits are cross-pollinated. Here's how .NET makes life easier on various groups:
Programmers - Because developers now have a consistent, language-neutral programming environment, they can create better applications and services more quickly. And because .NET encompasses such a wider range of functionality, those applications and services can be connected to back-end services via the Internet, offering better, and more exciting functionality.
IT administrators - Because .NET applications and services do away with the "DLL Hell" found in previous Windows applications, they are amazingly easy to distribute and install.
End users - For the reasons listed above, and many others, a new generation of .NET applications and services will provide new types of connected functionality. Access your email from anywhere. Pay for products online without typing in your credit card information. Access weather, traffic, music, and other personal information from a variety of devices, from anywhere in the world. The future is all connected, and .NET will get us there.
Now, there are problems, of course. Some people concerned about privacy and security are up in arms over .NET, fearing that Microsoft isn't doing enough in these areas. The proof, of course, will be in the implementation, and given the emphasis that Microsoft has placed on .NET and security, I suspect they're going to get it right. Stay tuned!
Microsoft .NET rollout schedule
Longhorn revealed: June 24, 2001
Next Generation Windows Services announced: January 2000
Bill Gates steps down as Microsoft CEO to focus on next-generation software: January 12, 2000
Microsoft reveals .NET initiative, drops NGWS name: June 22, 2000
Sun unveils Sun Open Net Environment (Sun ONE), it's answer to .NET: February 2001
Hailstorm announced: March 19, 2001
Ximian announces Mono project: July 2001
Microsoft delivers first .NET Alerts: September 2001
Hailstorm renamed to .NET My Services: September 19, 2001
Sun announces Liberty Alliance, it's .NET Passport competitor: October 2001
ECMA ratifies C# and .NET CLI as open standards: December 2001
.NET Framework ships: January 2002
Visual Studio .NET ships: February 2002
.NET Framework Service Pack 1 released: March 2002