Detailed look of .NET FRAMEWORK
The
.NET Framework is a new and revolutionary platform created by Microsoft for
developing applications.
·
It
is a platform for application developers.
·
It
is a Framework that supports Multiple Language and Cross language integration.
·
IT
has IDE (Integrated Development Environment).
·
Framework
is a set of utilities or can say building blocks of your application system.
·
.NET
Framework provides GUI in a GUI manner.
·
.NET
is a platform independent but with help of Mono Compilation System (MCS). MCS
is a middle level interface.
·
.NET
Framework provides interoperability between languages i.e. Common Type System
(CTS) .
·
.NET
Framework also includes the .NET Common Language Runtime (CLR), which is
responsible for maintaining the execution of all applications developed using
the .NET library.
·
The
.NET Framework consists primarily of a gigantic library of code.
Definition: A programming
infrastructure created by Microsoft for building, deploying, and running
applications and services that use .NET technologies, such as desktop
applications and Web services.
Cross Language integration
You
can use a utility of a language in another language (It uses Class Language
Integration).
.NET
Framework includes no restriction on the type of applications that are
possible. The .NET Framework allows the creation of Windows applications, Web
applications, Web services, and lot more.
The
.NET Framework has been designed so that it can be used from any language,
including C#, C++, Visual Basic, JScript, and even older languages such as
COBOL.
Difference between Visual Studio and Visual Studio
.NET
Visual Studio
|
Visual Studio .NET
|
It
is object based
|
It
is object oriented
|
Internet
based application
- Web Application
- Web services
- Internet enable
application
- Third party API
- Peer to peer
Application
|
All
developing facilities in internet based application
|
Poor
error handling Exception/Error
|
Advance
error handler and debugger
|
Memory
Management System Level Task
|
Memory
Management Application Domain with help of GC (Garbage Collector)
|
DLL
HELL
|
VS
.NET has solved DLL HELL Problem
|
Web Application
All
websites are example of web application. They use a web server.
Internet Enabled Application
They
are desktop application. Yahoo messenger is an example of desktop application.
Peer to Peer
Communication
through computers through some system.
Web Services
It
doesn't use web-based server. Internet payment systems are example of web
services.
DLL Hell
"DLL
Hell" refers
to the set of problems caused when multiple applications attempt to share a
common component like a dynamic link library (DLL) or a Component Object Model
(COM) class.
The
reason for this issue was that the version information about the different
components of an application was not recorded by the system. (Windows Registry
cannot support the multiple versions of same COM component this is called the
dll hell problem.)
.Net
Framework provides operating systems with a Global
Assembly Cache (GAC). This Cache is a repository for all the .Net components
that are shared globally on a particular machine. When a .Net component is
installed onto the machine, the Global Assembly Cache looks at its version, its
public key, and its language information and creates a strong name for the
component. The component is then registered in the repository and indexed by
its strong name, so there is no confusion between different versions of the
same component, or DLL.
Architecture of CLR
CLS
(Common Language Specification)
It
is a subset of CTS. All instruction is in CLS i.e. instruction of CTS is
written in CLS.
Code Manager
Code
manager invokes class loader for execution.
.NET
supports two kind of coding
1)
Managed Code
2)
Unmanaged Code
Managed Code
The
resource, which is with in your application domain is, managed code. The
resources that are within domain are faster.
The
code, which is developed in .NET framework, is known as managed code. This code
is directly executed by CLR with help of managed code execution. Any language
that is written in .NET Framework is managed code.
Managed
code uses CLR which in turns looks after your applications by managing memory,
handling security, allowing cross - language debugging, and so on.
Unmanaged
Code
The
code, which is developed outside .NET, Framework is known as unmanaged code.
Applications
that do not run under the control of the CLR are said to be unmanaged, and
certain languages such as C++ can be used to write such applications, which,
for example, access low - level functions of the operating system. Background
compatibility with code of VB, ASP and COM are examples
of unmanaged code.
Unmanaged
code can be unmanaged source code and unmanaged compile code.
Unmanaged
code is executed with help of wrapper classes.
Wrapper
classes are of two types: CCW (COM callable wrapper) and RCW (Runtime Callable
Wrapper).
Wrapper
is used to cover difference with the help of CCW and RCW.
callable wrapper unmanaged code
Native Code
The
code to be executed must be converted into a language that the target operating
system understands, known as native code. This conversion is called compiling
code, an act that is performed by a compiler.
Under
the .NET Framework, however, this is a two - stage process. With help of MSIL
and JIT.
MSIL
(Microsoft Intermediate Language)
It
is language independent code. When you compile code that uses the .NET
Framework library, you don't immediately create operating system - specific
native code.
Instead,
you compile your code into Microsoft Intermediate Language (MSIL) code. The
MSIL code is not specific to any operating system or to any language.
JIT
(Just-in-Time)
Just
- in - Time (JIT) compiler, which compiles MSIL into native code that is
specific to the OS and machine architecture being targeted. Only at this point
can the OS execute the application. The just - in - time part of the name
reflects the fact that MSIL code is only compiled as, and when, it is needed.
In
the past, it was often necessary to compile your code into several
applications, each of which targeted a specific operating system and CPU
architecture. Often, this was a form of optimization.
This
is now unnecessary, because JIT compilers (as their name suggests) use MSIL
code, which is independent of the machine, operating system, and CPU. Several
JIT compilers exist, each targeting a different architecture, and the
appropriate one will be used to create the native code required.
The
beauty of all this is that it requires a lot less work on your part - in fact,
you can forget about system - dependent details and concentrate on the more
interesting functionality of your code.
JIT
are of three types:
- Pre JIT
- Econo JIT
- Normal JIT
Pre
JIT
It
converts all the code in executable code and it is slow
Econo JIT
It
will convert the called executable code only. But it will convert code every
time when a code is called again.
Normal JIT
It
will only convert the called code and will store in cache so that it will not
require converting code again. Normal JIT is fast.
Assemblies
When
you compile an application, the MSIL code created is stored in an assembly.
Assemblies include both executable application files that you can run directly
from Windows without the need for any other programs (these have a .exe file
extension), and libraries (which have a .dll extension) for use by other
applications.
In
addition to containing MSIL, assemblies also include meta information (that is,
information about the information contained in the assembly, also known as
metadata) and optional resources (additional data used by the MSIL, such as
sound files and pictures).
The
meta information enables assemblies to be fully self - descriptive. You need no
other information to use an assembly, meaning you avoid situations such as
failing to add required data to the system registry and so on, which was often
a problem when developing with other platforms.
This
means that deploying applications is often as simple as copying the files into
a directory on a remote computer. Because no additional information is required
on the target systems, you can just run an executable file from this directory
and (assuming the .NET CLR is installed) you're good to go.
Of
course, you won't necessarily want to include everything required to run an
application in one place. You might write some code that performs tasks
required by multiple applications. In situations like that, it is often useful
to place the reusable code in a place accessible to all applications. In the
.NET Framework, this is the Global Assembly Cache (GAC). Placing code in the
GAC is simple - you just place the assembly containing the code in the
directory containing this cache.
Garbage Collection (GC)
One
of the most important features of managed code is the concept of garbage
collection. This is the .NET method of making sure that the memory used by an
application is freed up completely when the application is no longer in use.
Prior
to .NET this was mostly the responsibility of programmers, and a few simple
errors in code could result in large blocks of memory mysteriously disappearing
as a result of being allocated to the wrong place in memory. That usually meant
a progressive slowdown of your computer followed by a system crash.
.NET
garbage collection works by inspecting the memory of your computer every so
often and removing anything from it that is no longer needed. There is no set
time frame for this; it might happen thousands of times a second, once every
few seconds, or whenever, but you can rest assured that it will happen.
explain the processing in terms of C# code which is written
using .NET Framework.
Step
1-
Application code is written using a .NET - compatible language C#.
Step 2 -
Code is compiled into MSIL, which is stored in an assembly
Step 3 - When this code is executed (either in its own right if it is an executable or when it is used from other code), it must first be compiled into native code using a JIT compiler.
Step 4 -
The native code is executed in the context of the managed CLR, along with any
other running applications or processes.
Note:
One
additional point concerning this process. The C# code that compiles into MSIL
in step 2 needn't be contained in a single file. It's possible to split
application code across multiple source code files, which are then compiled
together into a single assembly. This extremely useful process is known as
linking.
for more details pls visit Framework
0 comments:
Post a Comment