> About MBLM Software > Overview of .NET
Developing .NET
Microsoft .NET is a software development framework, first announced by Microsoft in late 2000, followed by beta releases in 2001, and released to the market in 2002.
Microsoft .NET gives developers the ability to rapidly develop systems that are secure, fault tolerant, highly distributed and extensible.
I have been working with MS.NET since the start of 2001 with the release of the first VS.NET betas.
It's absolutely impossible to give anything other than a very broad overview of Microsoft.NET in a single page.
Last time I searched, Google found 25 million hits for Microsoft.NET.
Here are some links I can recommend:
- The most definitive reference out there for .NET is of course MSDN.
- For .NET Web development try the ASP.NET site.
- And for Windows development its counterpart the WindowsForms.NET site.
- If you get tired of reading I can particularly recommend watching the .NET show regularly.
Framework versions
In 2005 Microsoft released version 2.0 of the framework and launched MSDN2, which contains a reference for version 2.0 of the Framework.
Version 2.0 seems to be set for quite a short life span as version 3.0 is on the horizon.
Thank god (or Microsoft) for side-by-side execution, "What's that?" I hear you say.
Side-by-side execution allows different versions of the framework to sit along side of each other and run independently.
Consequently you can run applications built against different versions of the framework on the same machine.
So fear not!
Nothing you develop with the current version of the .NET Framework is going to break and stop working as a result of a subsequent release of a new version of the framework.
Now I'll briefly go through some of the fundamentals
CLR, CLI, MIL... and Security Security Security
CLR stands for Common Language Runtime. It is the commercial implementation of the Common Language Infrastructure (CLI) an ECMA standard for a virtual machine.
The CLR runs a form of byte code called Microsoft Intermediate Language (MIL).
The CLR is a virtual machine with an in-built security model called Code Access Security providing mechanisms that determine the level trust given to a .NET assembly.
This trust is based on evidence, such as digital signatures, and the physical location from which the assembly was loaded, e.g. off the hard disk, across a local area network, from the internet etc.
When code from .NET assembly is run it has a set of permissions that are based on the level of trust determined by the Code Access Security system in the CLR.
The administrator of the machine or the domain in which the machine is running determines the policy used by the CLR to determine the permissions granted to partially trusted assemblies.
When code executing in a .NET assembly attempts to make a call to an assembly with a higher level of trust, the result is a security exception.
These mechanisms make it possible to run rich .NET client applications from untrusted sources without having to worry about the malicious code in the application damaging or accessing data on the local system.
For example a partially trusted application may not have sufficient privileges to access the file system directly and can only read and write to files via the .NET Frameworks open and save file dialogs.
Cross platform
When Microsoft created the .NET Framework it always intended it to be an open specification that could be implemented across multiple platforms.
On Dec. 13, 2001 after collaborating with industry leaders such as Hewlett-Packard Co., IBM Corp., Intel Corp. and Netscape Communications Corp., Microsoft submitted its standard CLI to the standards body Ecma.
To date Microsoft supports implementations of its CLR for...
- Windows XP/Server 2003
- Windows XP x64/Server 2003 x64
- Windows CE
- Windows Mobile OS
- Windows Smartphone OS
- Windows Pocket PC
And an open source implementation of the CLI standard called Mono operates on...
- Mac OSX
- Sun Solaris
- FreeBSD, OpenBSD, NetBSD
- Linux
- x86
- s390, s390x (31 and 64 bits)
- x86-64: AMD64 and EM64T (64 bit)
- IA64 Itanium2 (64 bit)
- ARM: little and big endian
- Alpha
- SPARC(32)
As you can see, Microsoft's .NET initiative is truly cross platform, extending across 32 and 64 bit architectures as well as mobile device platforms.
Homogeneous development environment
One of the most often overlooked implications of using .NET within a company is the functionality it makes available to developers across many application types, from Windows technology such as Windows Forms Applications, and Windows Services to Web Forms and Web Services.
There are considerable productivity advances to be made for companies that would like to produce two or more of these types of applications as the .NET Framework lets developers utilise functionality and libraries between all these types of applications.
With .NET many of the skills developed by personnel in the Windows application development team could be just as valuable in a Web development team.
Traditionally development has been language centric; development was either in C++, Java or VB, factionalising development teams based on the language used within each team.
With .NET, Microsoft aims to make the choice of language an arbitrary decision and enables a team to work together easily using multiple languages.
Languages in .NET are just an interface between the programmer and CLR (Common Language Runtime).
C++ is the only exception to this.
In .NET C++ is still a natively compiled language and doesn't sit on the CLR.
Whilst .NET provides "Managed C++" it is unlike other .NET languages in that it is designed more with the idea of providing a gateway between C++ legacy systems and the .NET framework.
Web development - ASP.NET
With ASP.NET developers can use full OO methodologies to create content for the web.
The ASP.NET framework offers a class hierarchy for handling http requests, at each stage of ASP.NET's HTTP pipeline, developers can customise the way the server will respond to an HTTP request.
For example, developers can use IHttpHandlers and IHttpModules plug-ins to customise the way their web applications handle http requests.
This class hierarchy extends right down to the Page class which lies behind an ASP.NET Web Form.
The ASP.NET class hierarchy is designed to make the handling of most standard HTTP requests extremely simple.
Web services
Web services basically allow information to be requested remotely using SOAP XML across a network.
Microsoft .NET Web Services use much of the same architecture as ASP.NET web applications.
This architecture is extremely easy to use, developers can quickly create and expose Web Services within minutes.
A set of standards referred to as the WS-* protocols have been created to improve web services in areas such as security, authentication, reliability, messaging and management.
The Web Services Enhancements (WSE) library is provided in addition to the Microsoft .NET Framework by Microsoft implementing these standards.
The WSE works with the .NET Framework web services functionality as ASP.NET pipeline plug-ins.
Windows OS development
VS.NET isn't all about web development; you can develop rich Windows applications in minutes, which can be auto-deployed across networks securely with Code Access Security.
Developing Windows Services is also a trivial exercise.
Mobile device development
The .NET framework allows developers to create web pages specifically catered for Mobile Devices using a similiar API as used for normal ASP.NET Web Application development.
Similarly you can create client applications for a number of types of Microsoft Mobile devices such as Microsoft Pocket PC, Windows Smartphone and the Windows Mobile OS using the .NET compact framework.
The Microsoft .NET Compact Framework offers an API which is a cut down version of the Windows Forms .NET framework used to create Windows desktop applications.
To a large extent the target device for an application is transparent to the developer when developing with the .NET Framework.
The Visual Studio .NET IDE
The Visual Studio .NET IDE is packed with features that make programming pretty effortless such as dynamic help, intellisense, and a customisable interface.
I find the macro editor to be extremely powerful, allowing you to record a series of keystrokes and then play back this sequence, speeding or eliminating many repetitive tasks.
Once you have recorded a macro you can use the Macro editor to alter or supplement the recorded sequences.
Another of feature I really like in the IDE is the Server Explorer, which gives developers rapid programmatic access to resources on a server such as:
- SQL Server
- Event logs
- Performance counters
- Windows services
- Crystal services
- MSMQ
- And much much more...