We take it for granted now, but it was ten years ago this week — July 7, 2000 — that Microsoft announced its brand-new application development initiative, the .NET Framework, at TechEd Amsterdam. The company then provided more detail at its Professional Developers Conference in Orlando, Florida, the following week.
It was Paul Maritz, now VMware's chief executive competing with Microsoft, but then Microsoft's platforms group vice president, who announced initial developer availability of the new .NET Framework and Visual Studio.NET for "building, integrating and running next-generation, XML-based web services."
The press release is still online.
It has become hard to imagine Microsoft's platform without .NET and the C# language. Even so, some things did not turn out as planned. Here are some hits and misses from the .NET story.
Miss: Code Access Security Policy
Code Access Security Policy was intended to secure Windows by giving administrators the power to control what permissions were assigned to .NET applications and libraries. Unfortunately, configuring the policy successfully was too complex for mere mortals to understand, as Microsoft has now admitted. It has mostly been removed from .NET Framework 4.0.
Hit: ASP.NET MVC
Microsoft's ASP.NET web forms seemed a brilliant advance at the time. You could code a web application almost like a desktop application, with state managed transparently by the framework. As time went on, ASP.NET has become less attractive, with its complex page lifecycle, inelegant hidden variables, and aversion to unit testing. First released in 2009, ASP.NET MVC provides an alternative that is cleaner, faster, more testable, and more in tune with the URL-oriented Representational State Transfer (REST).
JScript.Net - now a hidden feature of .NET Framework 4.0
Scripted boost for IE?
Speaking of browsers, this post from 2000 makes an intriguing comment concerning Visual Basic .NET: "We intend to add these features back into the Visual Basic .NET language in the next release, in time for our integration with Microsoft Internet Explorer (where the dynamic features of the language are more useful)."
The implication is that Microsoft intended the .NET runtime to be the script engine for IE. That never happened, unless you count Silverlight. If Microsoft had delivered this feature, maybe scripts in IE would not now be so slow compared to those in Firefox, Safari, and Chrome.
Jscript still exists in .NET Framework 4.0, though nobody talks about it.
Establishing a new language is not easy, but Microsoft's C# has been a success. Its lead architect is Anders Hejlsberg, who cut his teeth on Turbo Pascal and Delphi at Borland. C# rescued .NET from the verbosity of Visual Basic and the complications of Managed C++. C# skills are in high demand, and since the first release Microsoft has added strong language features including generics, Language Integrated Query (LINQ), implicit types, and dynamic types.
The XBAP is a XAML Browser Application, essentially a full Windows Presentation Foundation application but hosted in the browser like an applet. It was originally intended that Windows Forms applications would work like this, as well. Security concerns meant that the feature never really worked until the arrival of XBAPs in .NET Framework 3.0. The question is now: why do a Windows-only XBAP when cross-platform Silverlight has many of the same features and easier deployment?
First announced as "Windows Presentation Foundation Everywhere", Silverlight is a browser plug-in for Windows and Mac that implements a cut-down .NET Framework along with a multimedia player. Performance is good, and the latest version also supports desktop "out of browser" applications that can be sandboxed or run with full trust for access to local resources. Microsoft has finally delivered cross-platform .NET, but with Apple disallowing plug-ins on iPhone and iPad, and with Adobe Flash entrenched elsewhere, Silverlight looks unlikely to make it as a universal runtime.
Silverlight at last delivers lightweight, cross-platform .NET
Miss: Rotor — open-source .NET for Unix
In the early days of .NET Microsoft flirted with the idea of a cross-platform, standardised .NET that would out-do Sun Microsystems' Java. C# and the Common Language Infrastructure (CLI) was standardised by ECMA, but the standard does not cover the .NET Framework Library. Microsoft also released source code for Windows and BSD Linux, in a project called Rotor and then the Shared Source CLI. Microsoft ensured that Rotor was guarded by a license permitting only non-commercial use, and described the implementation as experimental. The last release was in 2006 for Windows only, and it has all gone quiet.
Code-named Monad, PowerShell was released in 2006. It is a .NET command-line shell and scripting language aimed at system administrators. PowerShell is particularly useful on Windows Server Core, which is Windows Server without a graphical user interface. Version 2.0, which came with Windows 7 and Server 2008 R2, includes the ability to open a PowerShell session on a remote machine. Microsoft's Exchange Server is now best managed using PowerShell, with PowerShell elegant and easy to extend. ®