The thing is also that Microsoft did not develop this technologies and frameworks just for fun only.
Microsoft actually uses this platform for writing applications. All latest big software packages
(Visual Studio, Office, Expression, ...) are written with .NET and it works very fine.
After Windows Forms, which was basically a wrapper for WinAPI GUI Controls, they developed
Windows Presentation Foundation (WPF), which is a graphics and GUI framwork completely
hardware accelerated on top of DirectX. Its all vector graphics internally, so resizing the GUI
does not pixelate it like when resizing bitmap graphics.
So if you want to run modern Microsoft software on an older OS where no .NET framework
is installed, you have to install it one time. For big software packages, the installer may already
include the framework install.
The .NET Framework 4.0 including WPF is the recommended development platform by MS
for writing windows applications today and has been so for some years already.
.NET is so good that developers on other platforms wanted it as well.
wikipedia::Mono:
The stated purpose of Mono is not only to be able to run Microsoft .NET applications cross-platform, but also to bring better development tools to Linux developers.[3] Mono can be run on Android, BSD, iOS, Linux, Mac OS X, Windows, Solaris, and Unix operating systems as well as some game console operating systems such as the ones for the PlayStation 3, Wii, and Xbox 360.
And here a multiplatform game engine on top of .NET:
DeltaEngine
The Delta Engine allows you to develop applications and especially games for all major AppStore platforms completely under Windows with .NET by using your favorite tools. It is free to use (on Windows, see Licensing), Open Source and written in 100% .NET.
The Delta Engine currently supports Windows, iPad, iPhone, Android, Android Tablets, Windows Phone 7, Xbox 360, Linux, MacOS, the Web as well as more platforms in the future.
.NET is supported by many programming languages, including Ruby and Python.
See
Wikipedia: List of CLI languages
For a very small general overview see
Wikipedia: .NET Framework
.NET is not only an OOP class library. It includes many modern technologies, including
support for dynamic languages that can not be compiled to a static executable.
It includes also classes for compiling at runtime, so you can generate, compile and run
code at runtime.
And as said before, it is not just a wrapper for WinAPI. It even does not include all
WinAPI functionality. But you can still use WinAPI and pointers with .NET, if you really
need it. Thats just not the default way you should code with .NET.
Another important new technology is XAML for writing GUIs. Instead of writing your
GUI with code (Button btn1 = new Button()), you write your GUI in XAML like this:
Code: Select all
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="480" Width="600">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Button Content="Button 1" />
<Button Content="Button 2" />
<Button Content="Button 3" />
</StackPanel>
<ListBox Grid.Column="1" />
<StackPanel Grid.Column="2">
<Button Content="Button 4" />
<Button Content="Button 5" />
<Button Content="Button 6" />
</StackPanel>
</Grid>
</Window>
So you can write your GUI with a very high level presentation and the
code for it gets generated automatically. And with Grid and StackPanel
your controls automatically fit to the window.
The resulting windows looks like this:
You can still write your GUI directly in code if you want. XAML has the advantage
that you can very easily and very fast change your GUI.
No need to change any code. If you want the buttons in another Container (StackPanel, Grid etc.),
you just move the button definitions there with cut&paste. In code you would need to change
many lines like stackpanel1.Add( btn1 ), stackpanel1.Add( btn2 ) etc. if you want to move a control
somewhere else.
The VisualStudio Designer has full support for XAML. So you can write XAML by hand
or just visually drag&drop your GUI stuff with the designer. The designer generates
the XAML for you. Its a good idea to learn to write XAML if you code for .NET and WPF.