So, what is .NET? .NET is the collective name for a whole bunch of things that Microsoft has been preparing the last few years. .NET is a software platform (I will get back to that later), it is an authentication system (it is now called .NET MyServices, Hailstorm/Passport are names used in the past), and it is also a standardized method by which applications can "talk" to each other via XML, regardless of the platform on which they run.
To recap the three points mentioned above in the simplest way possible: .NET is a new way of working things out when using your computer (both as a developer and user). "Do we need a new way?" I hear the skeptics ask. Microsoft, IBM and Sun agree for a change: Yes. I believe the same. I will come back to that later though. For now, I would like to explain .NET a bit more in depth (but still in simple words).
The first part of .NET is that it is a new software platform. If you are familiar with Java and what Java really is, the .NET development part should be easy to understand. .NET the Framework is a collection of new APIs, programming languages and development tools that serve this "new way" of doing things. The new APIs are highly object-oriented, and the objects used are accessible by any supported language (VB.NET, ASP.NET, C/C++/C# and recently, even Java). This is a pretty revolutionary feature, having objects accessible by any language. In the past, there was not a unified and universal way where a C++ program could access Java objects or Python objects. Applications had to use other means (OLE, COM, Corba etc) in order to be able to "talk" to other applications and exchange data. However, this exchange of data was still limited and not standardized enough. 99% of the applications for Windows or other platforms do not really use any of the ways that could enable them "talk" to other applications. Each application was a lonely villager, 'answering' only to the underlying OS. With .NET's new APIs and libraries, applications are just hosts for a series of objects. Now you can load a given functionality found in any object to any .NET application. For example, if you are writing a Microsoft Word document and you insert an image, you might want to apply a certain filter to that image before finishing your document. Word, however, is not really an image manipulation application. Well, with .NET-enabled applications you can load a certain functionality from another installed application (or more importantly, through the web!), perform the specific function and save down your Word document locally or remotely. The thing is, applications are not simple applications anymore. They are hosts of a larger database of functionalities that they can be loaded at any time (for a fee or for free) through the web or locally. Similar feature-set is possible through Corba or OLE, as I said, but they are not standardized, they are difficult to integrate (a real headache for programmers), and they are not cross-platform. So, except for MS Office, not many applications really used extensively these features in the past. But Visual Studio.NET is here to make your applications .NET-compliant as easy as say "cake". And that is the big difference with the solutions of the past.
Miguel deIcaza of the Ximian Mono project said recently:
"Evolution took us two years to develop and at its peak had 17 engineers working on the project. I want to be able to deliver four times as many free software applications with the same resources, and I believe that this is achievable with these new technologies. My experience so far [with .NET] has been positive, and I have first hands experience on the productivity benefits that these technologies bring to the table. For instance, our C# compiler is written in C#. A beautiful piece of code. [...] The .NET Framework stands on its own feet, and developers in the Windows world love it. Even if this was not the case, Microsoft is using these technologies and distributing to as many people as possible. We are witnessing the creation and deployment of a new standard. Sure, it has a lot of corporate support, but it will become a widely deployed technology."
.NET Framework also brings a lot of other goodies to the developers, like elimination of ".dll hell", cross-language interoperability, and more. Someone said that .NET Framework is a developer's heaven.
I mentioned above that the new Framework is cross-platform. This is because these applications are compiled to an intermediary byte code, just like Java. However, unlike Java, .NET code does not run in a "virtual machine". The code is actually JIT'd to the native code of the host platform at runtime. Of course Java has this capability too, but what .NET does differently is keep track of which modules have already been compiled to native code, and not bother re-compiling them from the intermediary language a second time. The runtime is smart enough to figure out when an intermediary language module has been modified, and re-JIT it at runtime only when that has occured. What does this mean? It means that .NET code runs just like Java running JIT'd the first time you run the code. The second time though, .NET code runs closer to the speed of C++ (with the added overhead of garbage collection). Your Java and .Net applications will be able to work -unchanged- on all operating systems that have support for their perspective runtimes. Currently, only Windows supports .NET, but some Linux efforts have begun to bring that functionality to UNIX too: Ximian's Mono and Gnu's DotGNU. Also, it is already known that Microsoft has paid Corel to port .NET to FreeBSD. Does that sound strange to you? Microsoft wants its .NET ported? You heard right. Microsoft loves to have its .NET ported everywhere. From mobile phones, PDAs, personal computers, servers and, of course, home digital hubs, as XBOX is destined to serve. Once again, I will come back to that later. Sorry to keep jumping subjects, but it is important to take things in the right order.
So, the second part is the authentication part. And it is the part that people hate most when they hear about ".NET". Exactly because most of the .NET software will be downloaded off the web (Microsoft encourages the subscription and renting software model instead of the traditional licensing), and because you may need to use that software only once (therefore it is better renting it, than licensing it), .NET MyServices will carry through the authentication and paying system. Think of it as a virtual counter, where every time you use some objects or programs that you bought or rent (renting software’s functionality is much cheaper than buying it, analysts say), money will be taken out of your bank account automatically. So, you want to buy an Amazon book or buy the latest NVIDIA card online or rent PaintShopPro's cropping capabilities or use Quicken.NET just for your tax calculation once a year? You will only need that one authentication system. Sun, Novell, AOL and other companies have worked together to create the Liberty Alliance organization whereby a similar authentication service can be used for all your needs with your computer. There is going to be a battle between .NET MyServices and Liberty Alliance. The thing is, no matter who wins, all of these companies agree that there should be such a universal authentication method. It is made to simplify people's lives as they enter the digital world. One password, one login - for everything. However News.com reports that despite growing partnerships devoted to creating a standard for online identity verification, Microsoft plans to launch its .Net My Services with key details still "not figured out."
Trouble is, can we trust these companies? One of my favorite teachers at college (our database teacher, to be exact) used to say: "The real ruler is he who has access and control over The Information". I would not mind too much if the driving force behind such functionality was the government or a big bank, but having software companies managing my bank account, sounds and is a bit disconcerting. I am not surprised though. This is the century where the big corporations govern a lot of things in this world. But we are getting into political grounds here, so I better stop my blurb, but I never said that my thoughts about lots of things are generally politically correct anyway...
The third part of .NET, and maybe the most important part, is the Web Services. Web Services describe the way computers of different platforms or different applications can exchange information in a standardized way. Microsoft has chosen XML as the power behind it. With XML, you can describe data. With HTML you could describe a document and then your browser would read that HTML and render the document on your screen. With XML, applications would be able to have access to a number of different types of data. For example, let's say that you want to load OSNews.com. What do you do today? You open your browser, point to osnews.com, our Apache server responds, PHP gets called and then mySQL is performing the SQL query and gives back to PHP the data requested. PHP gives back the HTML version of the data requested to Apache, and Apache gives your browser the HTML and images requested, and then the browser displays all that in your monitor. If OSNews was .NET and Web Services-enabled, you could read and/or participate on OSNews via any .NET application. OSNews would be an object and a collection of data, described in XML, and your .NET-enabled application would be able to deal with OSNews (or any other .NET app for that matter) accordingly, because they speak the same language. Another example: Think of a calculator .NET application that would be able to do the tax calculations for you. All you have to do is enter your data and get the result back. Quicken can do that too, but there is no Quicken for cell phones or PDAs or FreeBSD. From now on there will be one. Another (real-life this time) example is that an airplane company who can login to a car rental company and see immediately which cars are available for rental or not. Representatives of both companies said that the setup of the whole thing only took them 2 months, while with the "traditional" way of either using a database back-end link or via a dynamic web site, would take them to develop more than 8 months. Web Services eliminate the huge IT workload that needs to be carried out to make a company or a number of companies exchange data via databases. Services can be summed up as Remote Procedure Calls which can be invoked by posting a blob of XML over HTTP.
Yet another example is when a game is going to display the High Scores screen, with the names and scores of the people with the best high scores for the .NET game in question. The High Scores information would be taken off the internet and displayed to your screen, updated each time. Today, you can do that, but the programmers need to do lots of coding for it, with .NET Web Services, implementing such a feature is an easy process.
Additionally, with Web Services, you can not only subscribe or rent software (or even parts of software), but also have most of your saved data stored remotely.
So, .NET is all about exchanging information in a new way. And the way this exchange of information works, it can change the way you do your every day work or use the web. The web will now be executable, it will be a (sorted out, for once) information highway.
Enough with the introduction of .NET, let's see now what it really means for the future for all us people.
- "What .NET is"
- "The Implications of .NET"