Microsoft .NET Framework

 .NET Framework - Vision

Microsoft’s .NET platform is more than just a development environment or an addition of some new innovative servers.   Microsoft’s vision is that .NET will shift the Internet’s focus from individual sites or devices to constellations of computers, devices, and services that work together to deliver broader, richer solutions, allowing people to have control over how, when, and what information is delivered to them.

Microsoft .NET framework has been designed with a goal of accomplishing many tasks in a simple, fast and efficient manner. There are quite a number of purpose-specific tools attached with this revolutionary framework. Also it can do things such as data access, windowing, connecting to the Internet, and much of the functionality of the Win32 API is now accessible through a very simple object model.

The .NET vision an be split into several different areas: 

In summary, the vision of .NET is globally distributed systems using XML as the universal glue to all functions running in different computing systems such as PCs, laptops, wireless /mobile devices, and other information and communication appliances to come together in a single application.

The .NET Framework - an Overview

.NET is a framework that covers all the layers of software development from the operating system up. It provides the richest level of integration among presentation technologies, component technologies, and data technologies. .NET architecture has been created to make it easy to develop Web-based applications. .NET actually wraps the operating system insulating software developed with .NET from most operating system specifics such as file handling and memory allocation. This helps .NET applications to run as many as operating environments. The framework starts at the memory  management and component loading level, and goes all the way up to multiple ways of rendering user and program interfaces. In between, there are layers that provide many system-level capabilities. 

At the base is the Common Language Runtime (CLR), the engine that drives key functionality and .NET applications that have been compiled to a common language referred to as Microsoft Intermediate Language (MSIL) are executed. It includes a common system of data types. These common types plus a standard interface convention facilitate cross-language inheritance. CLR allocates and manages memory automatically and as well as does reference counting for objects and handles garbage collection. 

CLR  facilitates simpler, and faster software development as the system itself provides a suite of functionality. The most ambitious aspect of the CLR is that it is designed to support multiple programming languages and easily provides unprecedented levels of integration among those languages through a common typo system. 

 

The middle layer includes the next generation of standard system services such as ADO.NET and security. These services are brought under the control of the framework, making them universally available and standardizing their usage across languages.

The top layer includes user and program interfaces such as  WinForms, Web Forms and Web Services that can be developed using ASP.NET, a section of .NET framework.

Background and Components 

Microsoft has come out with a suite of technologies for writing Windows desktop applications and Web-based applications such as VB / VC++  and ASP / COM / COM+.  This differentiation goes off as .NET promises to give us a consistent programming model irrespective of the type of the applications to be developed. .NET helps to create any sort of applications such as a Windows desktop, Web, database, DLL, enterprise, business,  wireless and distributed applications. .NET framework technology, though backward compatible, has been designed from the scratch. That means, the existing components and controls can be made operating in this .NET execution environment. On the other hand, it is also possible to create .NET-compliant components that can be accessed and used by the existing clients. 

.NET framework encompasses application execution environment that manages memory, addresses versioning issues and improves the reliability, scalability, and security of any application. Microsoft has upgraded all its existing languages to .NET-compliant. Also it has come out with a pure object-oriented, fully .NET-compliant  language referred to as C#. Coding using C# has become very easier, simpler, precise and clean.

There are two main components: .NET Framework Base Class Library (FCL) and Common Language Runtime (CLR).

The FCL is an extensive common class library that can be made use of by any .NET-compliant language programmer while applications development. These classes encapsulate a host of innovative and highly-applied functionalities. The library contains classes for creating and displaying look and feel Windows forms, Web-based forms, serialization, the network access, XML documents manipulation, database access etc.

CLR is the heart of the .NET framework as it manages the code during execution. The code running under CLR is called "managed code". The code that is executed under .NET runtime gets benefits such as cross-language inheritance, cross-language exception handling, enhanced security, versioning, and deployment support, a simplified model for component interaction, and debugging and profiling services. This is possible due to the conditions that all the objects, properties and methods are the same, no matter what language is being used.

The applications created in .NET compliant languages use the classes provided by the Base Class Library. These applications run under .NET runtime that manages  the lifetime of objects created by applications, throws up exceptions etc. The other important features of .NET framework are Common Type System (CTS) and Intermediate Language (IL). 

Language interoperability under .NET becomes possible if all the languages share a common data type system. CTS mandates that all the data types in C# is same as the data types in other Windows languages such as VC++. Under CTS, all the classes are derived from the System.Object class and all the primitive data types are mapped to the structures defined in base class library. CTS also specifies the visibility level for all the data types

A .NET-compliant programming language does not compile into executable code and instead it compiles into an intermediate language called Microsoft Intermediate Language (MSIL). IL is a CPU-independent language. The IL code is sent to the CLR that converts the code to machine language using the Just-In-Compiler (JIT), which is tehn run on the host machine. An important feature of the IL is that it provides the hardware abstraction layer.

JIT is  a crucial component of the .NET framework. The JIT compiler converts IL code into machine code, which is then executed. The JIT compiler does not compile the entire code at once because it could hamper the performance of the program. It compiles the code at runtime, at the time it is called. The code that is compiled gets stored until the execution comes to an end. This avoids recompilation of code. The reason why conversion from IL code to machine code takes place at run time is that the JIT first gets information on the processor type and appropriately converts the IL code so that it would run on that type of processor.

An assembly is a unit containing IL code of a program. Though much similar to a DLL file, an assembly is different from DDL that an assembly is self-describing. Assemblies contain assembly metadata that gives details of the assembly, type metadata describing the types, methods, etc. defined in the assembly and resources.

Garbage Collection (GC) is a program that is invoked by the CLR to free the memory that is not being used by the application. Because of this technique, the programmers no more need to take care of memory leakages, dangling pointers and clean up of memory

Benefits of .NET Framework

Microsoft .NET Framework technology represents a very significant shift in technology paradigms, allowing developers to build componentized, reusable and highly scalable functionality that is available across a network or the Internet regardless of platform. If suppose every .NET solution becoming a set of building blocks, then software developers can  easily reuse, rearrange, and integrate these blocks in a quick manner with each successive solution thereby reducing the time to take them to market or clients drastically. 

If we take .NET to the next level, it becomes even easier to develop integrated solutions with partners, customers, users and suppliers outside our enterprise. The very nature of the code and platform make it simpler and less costly.

Most new technologies go through an adoption curve that gives the opportunity to prepare slowly for their implementation. Microsoft .NET offers a complete, well-thought-out, stable, and robust platform that's ready for prime time. It shortens the development time, enables us to have bug-free, flexible and elegant software solutions

The changes .NET brings for developers are quite dramatic, and so is the learning curve for those developers who typically use Visual Basic COM applications. .NET languages such as C# and VisualBasic.NET will give the software developers enough opportunity to take forward their ambitions. 

We spend very less design, development, deployment time for .NET projects. This is because .NET includes a vast class of libraries and an Integrated Development Environment (IDE) that allows developers to build business logic and Web-based user interfaces significantly faster than ever before.

The real value of the .NET platform lies not in delivering pigeonholed projects better, faster, and cheaper (although it can do that quite well) but in building solutions that can be easily leveraged throughout the enterprise and beyond.

Features of .NET Framework
  1. The VB language has been hugely upgraded, so it now includes classes and most of the features previously accessible in C++.
  2. A new language, C#, has been introduced, which combines the efficiency of C++ with some of the ease of development of VB.
  3. Memory management for .NET applications is much more sophisticated, meaning that a badly behaved .NET component is extremely unlikely to crash other components running in the same process.
  4. ASP.NET, the replacement for ASP, offers compiled web pages (making processing of web requests much more efficient) and includes a large number of pre-written components that can generate commonly used HTML form and user-interface items
  5. The main programming languages have been moved far closer together, so code written in VB, C++ and C# can be intermixed
  6. Components are wrapped up in a new unit called an assembly, which is highly self-describing, making installation and use of components very easy.

Summary

.NET framework is a new broad and deep platform for the future. It encompasses a virtual machine that abstracts away much of the Windows API from development. It includes a class library with more functionality than any other created to data and a development environment that spans multiple languages. It has come out with an architecture that makes multiple language integration simple and straightforward. In short, .NET presents a radically new approach to software development and deployment. It is intended and designed for highly distributed software, and making Internet functionality and interoperability easier