.Net Programming Introduction

.NET Framework

The .NET Framework is the infrastructure for the new Microsoft .NET Platform.

The .NET Framework is a common environment for building, deploying, and running Web Services and Web Applications.

The .NET Framework contains common class libraries - like ADO.NET, ASP.NET and Windows Forms - to provide advanced standard services that can be integrated into a variety of computer systems.

The .NET Framework is language neutral. Currently it supports C++, C#, Visual Basic, JScript (The Microsoft version of JavaScript) and COBOL. Third-party languages - like Eiffel, Perl, Python, Smalltalk, and others - will also be available for building future .NET Framework applications.

The new Visual Studio.NET is a common development environment for the new .NET Framework. It provides a feature-rich application execution environment, simplified development and easy integration between a number of different development languages.

.NET Internet Standards

.NET is built on the following Internet standards:

HTTP, the communication protocol between Internet Applications

XML, the format for exchanging data between Internet Applications

SOAP, the standard format for requesting Web Services

UDDI, the standard to search and discover Web Services

Major Components of .NET

The .NET framework can only be exploited by languages that are compliant with .NET. Most of Microsoft languages have been made to fully comply with .NET.

.NET also introduces
Web Forms, Web Services and Windows Forms, WPF,WCF,WF. The reason why they have been shown separately and not as a part of a particular language is that these technologies can be used by any .NET compliant language. For example Windows Forms is used by VC, VB.NET, C# all as a mode of providing GUI.

The next component of .NET is the
.NET Framework Base Classes. These are the common class libraries that can be used by any .NET compliant language. These classes provide the programmers with a high degree of functionality that they can use in their programs. For example their are classes to handle reading, writing and manipulating XML documents, enhanced ADOs etc.

The bottom most layer is the CLR - the common runtime language.

What is "Common Language Specification" (CLS)

One of the obvious themes of .NET is unification and interoperability between various programming languages. In order to achieve this; certain rules must be laid and all the languages must follow these rules. In other words we can not have languages running around creating their own extensions and their own fancy new data types. CLS is the collection of the rules and constraints that every language (that seeks to achieve .NET compatibility) must follow.

Microsoft have defined three level of CLS compatibility/compliance. The goals and objectives of each compliance level has been set aside.

What is "Common Language Runtime" (CLR)

CLR is .NET equivalent of Java Virtual Machine (JVM). It is the runtime that converts a MSIL code into the host machine language code, which is then executed appropriately.

What is "Microsoft Intermediate Language" (MSIL)

A .NET programming language (C#, VB.NET, J# etc.) does not compile into executable code; instead it compiles into an intermediate code called Microsoft Intermediate Language (MSIL). As a programmer one need not worry about the syntax of MSIL - since our source code in automatically converted to MSIL. Complete specifications of MSIL can be found at
http://msdn.microsoft.com/net/ecma/part_3_IL_inst_set.pdf .

The MSIL code is then send to the CLR (Common Language Runtime) that converts the code to machine language which is then run on the host machine[7]. MSIL is similar to Java Byte code. A Java program is compiled into Java Byte code (the .class file) by a Java compiler, the class file is then sent to JVM which converts it into the host machine language.

What is "Common Type System" (CTS)

All this time we have been talking about language interoperability, and .NET Class Framework. None of this is possible without all the language sharing the same data types. What this means is that an int should mean the same in VB, VC++, C# and all other .NET compliant languages. Same goes for all the other data types.

This is achieved through introduction of Common Type System (CTS). CTS, much like Java, defines every data type as a Class. Every .NET compliant language must stick to this definition. Since CTS defines every data type as a class; this means that only Object-Oriented (or Object-Based) languages can achieve .NET compliance.

The .NET Compilation Stages

The Code written in .NET isn't compiled directly to the executable, instead .NET uses two steps to compile the code.

First, the code is compiled to an Intermediate Language called Microsoft Intermediate Language (MSIL).

Second, the compiled code will be recompiled with the Common Language Runtime ( CLR ), which converts the code to the machine code.

The basic Idea of this two stages was to make the code language independence.


MSCOREE.DLL, MSCORWKS.DLL, MSCORSVR.DLL

They are regular DLL's that also expose some COM interfaces.The public COM interfaces are polished in the mscoree.idl, while the public C style interfaces are in the mscorree.h file in the framework SDK. The mscorwks.dll are not published, that means they are private and should
therefore not be used from user code.

This object is implemented in either the mscorwks.dll or mscorsvr.dll, depending on factors such as a how many processors the system has or environment variable settings. Either of these DLLs are loaded by mscoree.dll, which acts as a shim to load either of the modules mscorwks or mscorsvr.

.NET Interoperability

Use P/Invoke for calling Windows API (or) Legacy Applications API functions from Managed Code.Using the P/Invoke service in the .NET Compact Framework includes three primary steps:

1.declaration
2.invocation
3.error handling.

Unload Assemblies using Code

We can unload assemblies by using
AppDomain class. We can open make our own appDomain dynamically and ask a particular assembly to run in that appDomain. Also we can easily unload that appDomain.

AppDomain is a virtual location in memory where a process runs. Usually, each process runs in its own space and if first process making a call to second process, and if second process crashes, so first will also crash. So in .NET to solve this problem give us concept of AppDomains. The main process is created by the .NET CLR and then, each assembly runs in its own AppDomain. And many AppDomains can exist in a single process space. So,
if one AppDomain crashes, only its space is released and the process remains as is.

This reduces the chances of a system crash. Also, if an AppDomain does crash, the CLR throws back an exception which can be handled in the caller appDomain.AppDomain Class: The AppDomain class is the programmatic interface to application domains. This class includes methods to create and unload domains, to create instances of types in domains, and to register for various notifications such as application domain unloading.

Links:

Programming with the .NET Framework - http://msdn.microsoft.com/en-us/library/aa720433(VS.71).aspx

A Guided Tour of Windows Presentation Foundation - http://msdn.microsoft.com/en-us/library/aa480221.aspx

Introduction to .NET - http://homepages.com.pk/kashman/dotnet.htm

Introduction to .NET Framework - http://www.devhood.com/training_modules/dist-a/Intro.NET/?module_id=1

Introduction to Microsoft .NET -
http://www.w3schools.com/ngws/ngws_intro.asp

How to unload .NET Assemblies -
http://www.codeproject.com/KB/dotnet/dotnet.aspx

.NET Interoperability - -
http://msdn.microsoft.com/en-us/magazine/cc164123.aspx

Runtime Code Generation with JVM & CLR -
http://www.itu.dk/~sestoft/rtcg/rtcg.pdf

JVM vs CLR memory allocation -
http://benpryor.com/blog/2006/05/04/jvm-vs-clr-memory-allocation/

C# for C++ Developers -
http://msdn.microsoft.com/en-us/library/yyaad03b.aspx

C++ -> C#: What You Need to Know to Move from C++ to C# - http://msdn.microsoft.com/en-us/magazine/cc301520.aspx

Sharp New Language: C# Offers the Power of C++ and Simplicity of Visual Basic -
http://msdn.microsoft.com/en-us/magazine/bb984953.aspx

CLR Inside Out -
http://msdn.microsoft.com/en-us/magazine/dd148640.aspx

Sharp New Language: C# Offers the Power of C++ and Simplicity of Visual Basic -
http://msdn.microsoft.com/en-us/magazine/bb984953.aspx

Jeff Prosise on .NET –
http://www.codeproject.com/KB/interviews/jeffprosise17aug2000.aspx

Joshua Trupin of MSDN: What .NET means to developers -
http://www.codeproject.com/KB/interviews/interview_msdn_0103.aspx

The Future of Visual Basic: Web Forms, Web Services, and Language Enhancements Slated for Next Generation –
http://msdn.microsoft.com/en-us/magazine/bb985089.aspx

.NET StockTrader Sample Application(An End-to-End Sample Application Illustrating Windows Communication Foundation and .NET Enterprise Technologies) - http://msdn.microsoft.com/en-us/netframework/bb499684.aspx

.NET Getting Started -
http://msdn.microsoft.com/en-us/magazine/aa720108%28printer%29.aspx

PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke signatures, user-defined types, and any other information related to calling Win32 and other unmanaged APIs from managed code (written in languages such as C# or VB.NET).
http://www.pinvoke.net/

Miscellaneous URLs:

http://www.functionx.com/csharp/

http://www.csharpcorner.com/

http://www.programmersheaven.com/2/Les_CSharp_0

http://www.csharp-station.com/

http://w3schools.com/aspnet/default.asp

http://dotnetspider.com/tutorials/

http://www.asp.net/

http://free-ebooks-for-u.blogspot.com/

http://ebookee.com/