What is Microsoft .NET?
Anyone who watches Microsoft won't have been able to avoid the proliferation of .NET related news. Just what is .NET all about?
Trying to get to grips with .NET can be tricky as it's not immediately obvious what .NET actually is. In reality it is an umbrella term that covers a whole host of initiatives, mindsets and technologies.
The Basics
.NET can be loosely summed up as a set of technologies that allow you to connect people, information and devices together with an unparalleled level of integration. Whilst this has been achieved previously, it has always been in discrete areas, Microsoft want .NET to be everywhere and running on everything.
Key to this vision is the use of XML and XML Web services. XML is now the hot technology with developers falling over themselves to incorporate XML in to their software. XML is a distant cousin of HTML and is a universal language that can be used to exchange data between systems that historically would never have been able to talk to each other without a lot of complex software "gluing" them together.
Web Services are small chunks of code that perform a discrete function. This could be anything from a service that gets stock market share price information to one which allows you to word process using a copy of Word hosted at Microsoft's offices rather than on your PC. This fits in with Microsoft's vision of software as a service not something you would buy and own outright.
There is no reason why you couldn't dispense with your PC, buy a small box consisting of a keyboard with a broadband connection built in and use that to do everything you do now. One firm would provide the word processing software, another the storage space, another your database software and yet another the data. This can all be done today with the technology that .NET provides.
For Developers
To go with the .NET initiative, Microsoft have updated their Visual Studio developer product to provide the tools that will be needed to make use of .NET. Unlike previous updates to Visual Studio, this is a major shift in direction.
Microsoft has introduced the Microsoft Common Language Runtime (CLR) which is not unlike the Java Virtual Machine in concept. Programs written to run within the .NET environment are not distributed as normal executables but as an intermediate code that adheres to the Common Intermediate Language (CIL) standard. This is then compiled on the fly as it runs on the host machine by the CLR.
The major shift here for Microsoft is that whilst the current CLR as distributed by Microsoft sits on top of Windows, there is no reason why a Unix, Apple Mac or mainframe OS CLR cannot be developed. Indeed, the hope is they will. Equally, anyone can develop languages that produce output code in CIL and have it run on any machine that supports the CLR without the programmer having to make any modifications. You could even have all this on your favourite PDA. Add in wireless networking and you'd have true power on the move. That's the theory anyway.
The CLR has the advantage of potentially faster execution as the code will be compiled with optimisations for whatever processor the machine is using. Normally, with software you would choose AMD, Intel or generic optimisation when compiling and if a target PC had a different CPU, it could run much slower than you would expect. With the Just in Time (JIT) compiler in the CLR, you can be sure the program will be running as best it can on your particular processor.
The CLR also contains a series of common classes which handle Input/Output, strings, security, collections and so on. All CLR aware languages will be able to use the classes for their basic functionality. The chief advantage here is that if you know how to handle strings in VB.NET, you then know how in C#, it will be exactly the same. Previously you had to learn different techniques for each language.
To kick things off, Visual Studio .NET allows you to develop in Managed C++, C#, VB.NET and ASP.NET. Managed C++ is C++ with .NET extensions that allow it to work in the .NET world. C# is a brand new language that combines the power of C++ with the ease of use and safety of Visual Basic and isn't unlike Java in that it is a powerful, object orientated and safe language to develop in. VB.NET will be a shock to existing Visual Basic programmers. It is very different and it would be fair to say that learning C# would provide the same learning curve as upgrading from VB6 to VB.NET. Finally, ASP.NET is a superior version of Active Server Pages for web development.
For Business
Initially, only businesses will see much take up of the .NET tools. The chief gains will be with interoperability. This can be internally where XML and SOAP can be used to share and exchange data between systems. More importantly, Web objects can be built to allow firms to communicate directly with suppliers and customers to allow seamless supply chains for products and data.
.NET also brings far more object orientation encouraging code re-use. Over time a firm can build a collection of Web Services that perform their most common business functions. New applications can tap in to these allowing developers to build new applications quickly and reliably.
The Web
ASP.NET brings improved performance to complex web pages. ASP.NET is compiled not interpreted like normal ASP. .NET also allows sites to be developed which use Web Services to personalise what you see. You would no longer have t o keep entering the same information on site after site to identify yourself. You would essentially "log on" to the Internet, not an individual site.
The .NET tools also allow developers to create web pages which look and act just like normal applications. You can make more use of services and applications delivered via the web to your desktop.
Conclusion
Microsoft has undoubtedly produced a bold and exciting set of products and tools with the .NET initiative. However many people have concerns with Microsoft's previous track record with security an area which is key to getting .NET working effectively. It would indeed be a worry to have one source being responsible for controlling access to your bank account, share dealings, personal documents and so on, only to find that source had been compromised by hackers.
Another cause for nervousness is the widespread take up of a computing infrastructure that discourages personal ownership of software and is reliant on users renting software on a usage basis. For some this could be cheaper. Why buy a £450 copy of Microsoft Office if you only use it to write the odd letter or to edit a few documents for work when you could simply rent it for £1 a day? However, once locked in to such a system, the vendors could crank up the prices and if off the shelf software is no longer available, what could the end user do? We are potentially looking at a totally new way of using computers and the change will be both interesting and challenging.

