Microsoft .NET - Part 1

.NET (dot-net) is how Microsoft now describes its NGWS (Next Generation Windows Services) project. In this article we explore the future according to Microsoft, a future which places .NET at its heart. First we give a brief overview of the .NET vision. This is followed by a description of the technologies making up the infrastructure of .NET. Finally, we discuss how .NET is being realised in Microsoft's current activities.

Overview

If there is a single regulating idea behind Microsoft's vision of the future it is this: the notion of software provided as a service. The detail of the idea depends upon a number of different building blocks, of which the Internet, as a ubiquitous medium for service provision, is the keystone.

.NET Infrastructure

Web Services

Many websites provide some kind of useful service. For example: a tax calculation site might take in a number of details about a purchase - its basic price, the type of product, the country of the vendor, etc - and then output the tax payable on it.

Thinking of such a site as a 'black box' (illustrated by the diagram below), we can distinguish various aspects to its functioning.

black box

Firstly, we can note that the tax calculation functionality of such a site almost certainly wouldn't be able to understand a plain English request like

"please tell me the tax payable on a yellow duck sponge priced five dollars bought in the UK from Amazon.com."

Rather, each tax calculation request would have to be made in some structured format. Suppose, for instance, that the input to the site was via an online form. It might then receive a list of variables like these:

product_name = "yellow duck sponge"

product_price = "5.00"

buying_location = "UK"

Similarly, the site's output would have to be in some simple structured format, rather than an English sentence. Probably, the site would just return a figure representing the tax payable.

Now, it is easy enough to imagine this tax calculation site working by remote users filling in online forms. But the tax calculation site could also be used by programs running remotely, as long as they knew the appropriate input and output languages. We can imagine, for instance, a general accounts package using the tax calculation site as part of its general working. This accounts package would be described as a 'distributed application', as parts of its functionality would be physically remote.

In Microsoft's .NET project, a particular type of input and output language is defined for sites providing 'web services'. Or, more precisely, .NET provides a standard syntax for these languages, and Microsoft's hope is that this syntax will become universally accepted (by way of analogy: this would be like all businesses learning a common trade language - say Esperanto. This would improve international communication, although businesses would still have to get to grips with the different procedures and vocabularies of firms in other countries.). What makes it plausible that this web services syntax could be accepted is that it uses 'open standards' like HTTP, XML, and SOAP, rather than just being a proprietary language owned by Microsoft.

As an aid to web services, Microsoft and its partners have also produced the UDDI - the Universal Description, Discovery and Integration - specification. UDDI describes a language - built on the common syntax described above - for a web service whose job is just to describe the languages used by other web services. So, if I wanted to write a general accounts package making use of the tax calculation site described above, I could find out the right way to send queries to it by searching for its specification on a UDDI website.

.NET Framework

In order for the web services syntax to be easy to use for application developers, Microsoft has provided support for it in classes supplied with the .NET framework. The following overview of the .NET framework assumes some knowledge of the programming language Java.

The .NET framework is a programming environment which is in some ways similar to Java. Firstly, it contains a very large class library. Secondly, it contains a programming language - C# - with which one writes applications manipulating these classes (see *here* for our extensive C# tutorial). Thirdly, it contains a 'Common Language Runtime' (CLR). As the CLR is capable (at least in theory) of being implemented on non-Windows machines, and since programs compile in the first place to the CLR's Intermediate Language (IL), the CLR and IL can be mapped somewhat onto Java's Virtual Machine and bytecodes.

The .NET framework has features which appear to offer benefits compared with Java, however. Firstly, one isn't restricted to using C# to access the .NET class library. This library can be manipulated using a host of different programming languages, prompting one commentator to describe a preference for using a particular language as a 'lifestyle choice'. Secondly, C# has been submitted to independent standards agency ECMA for ratification, opening it up to a broad developer base. Thirdly, IL code is not interpreted but further compiled to the machine's native machine language, hopefully making it run quicker than interpreted Java bytecode.

As was mentioned at the start of the section, the .NET classes provide extensive support for protocols like XML and SOAP, which are the building blocks of web services. In a major change from previous versions of ASP, APS.NET does not run on interpreted script, but from compiled code, in the same way as any other .NET application. It has full access to the .NET class library.

.NET Servers

Various other applications and technologies are also described as part of Microsoft's .NET project. For instance, SQL Server 2000 is described as '.NET enabled'. It is important to note, however, that this does not mean that it is itself built on the .NET framework. Rather, it contributes towards the .NET vision by providing functions which are useful in relation to the technologies important to .NET (ie. those which we have described as forming the 'web services syntax').

next part

Link Building Information