2. Learning Objectives Overview
Lecturer: Jareed Eve;2
.NET Languages
Different types of .NET frameworks architectures
Common Language Infrastructure (CLI),
Assemblies, Metadata, Security, Memory
Management, Class Library*
Framework Versions (4, 3.5, 3, 2, etc.)
Common Language Runtime*, .NET Class Libraries
.NET Framework Components
The Common Language Runtime
The Class Library
3. .NET Languages /1
Lecturer: Jareed Eve;3
A#
A# is a port of the Ada programming language. A# is freely distributed by the Department
of Computer Science at the United States Air Force Academy as a service to the Ada
community under the terms of the GNU General Public License.
Ada was originally designed by a team led by Jean Ichbiah of CII Honeywell Bull under
contract to the United States Department of Defense (DoD) from 1977 to 1983 to
supersede the hundreds of programming languages then used by the DoD.
C#
Developed by Microsoft, C# is intended to be a simple, modern, general-purpose, object-
oriented programming language.
It was developed by Microsoft within its .NET initiative and later approved as a standard
by Ecma and ISO.
F#
F# is developed by The F# Software Foundation and Microsoft
An open-source, strongly typed, multi-paradigm programming language. F# is most often
used as a cross-platform CLI language, but can also be used to generate JavaScript and
GPU code.
L#
The language was designed by Rob Blackwell, as was its first implementation.
L# .NET is a dynamic computer programming language intended to be compiled and
executed on the Ecma-334 and Ecma-335 Common Language Infrastructure (CLI). It is a
dialect of Lisp, adapted from Paul Graham's proposed Arc language.
4. .NET Languages /2
Lecturer: Jareed Eve;4
C++
C++/CLI (Common Language Infrastructure) is a language specification
created by Microsoft and intended to supersede Managed Extensions
for C++.
Boo
Developed by Rodrigo B. De Oliveira, Boo is an object-oriented,
statically typed, general-purpose programming language that seeks to
make use of the Common Language Infrastructure's support for Unicode,
internationalization, and web applications, while using a Python-inspired
syntax and a special focus on language and compiler extensibility.
Cobra
Cobra is an Object Oriented language designed by Charles Esterbrook
It is strongly influenced by Python,C#, Eiffel, Objective-C, and other
programming languages
Cobra is an open-source project; it was released under the MIT License
on February 29, 2008.
JScript .NET
Developed by Microsoft, JScript has a strong foundation in Microsoft's
ActiveX/COM technologies, and relies primarily on ActiveX components
to provide much of its functionality (including database access via ADO,
file handling, etc.), whereas JScript .NET uses the .NET Framework to
provide equivalent functionality.
5. .NET Languages /3
Lecturer: Jareed Eve;5
IronPython, IronRuby
IronPython is an implementation of the Python programming language
targeting the .NET Framework
Jim Hugunin created the project and actively contributed to it up until
Version 1.0 which was released on September 5, 2006. Thereafter, it was
maintained by a small team at Microsoft until the 2.7 Beta 1 release;
Microsoft abandoned IronPython (and its sister project IronRuby) in late
2010, after which event Hugunin left to work at Google. IronPython 2.0
was released on December 10, 2008.
IronRuby is an implementation of the Ruby programming language
targeting Microsoft .NET framework
Visual Basic.NET
Visual Basic .NET (VB.NET) (created by Microsoft) is an object-oriented
computer programming language that can be viewed as an evolution of
the classic Visual Basic (VB), implemented on the .NET Framework
IronLISP
IronLisp was an implementation of the Lisp programming language
targeting the Microsoft .NET framework. It was developed and
announced by Xacc.ide on July 23, 2007. No further development will
take place on IronLisp.
6. .NET Frameworks Architectures
/1
Lecturer: Jareed Eve;6
Common Language Infrastructure (CLI)
This is an open specification developed by
Microsoft and standardized by ISO and
ECMA.
It describes the executable code and runtime
environment that form the core of the
Microsoft .NET Framework and the free
and open source implementations Mono and
Portable.NET.
The specification defines an environment
that allows multiple high-level languages to
be used on different computer platforms
without being rewritten for specific
8. .NET Frameworks Architectures
/2
Lecturer: Jareed Eve;8
Common Language Infrastructure (CLI)
Metadata
Describes the high-level structure of the code.
Metadata describes all classes and class members
that are defined in the assembly, and the classes
and class members that the current assembly will
call from another assembly.
Common Language Specification (CLS)
A set of base rules to which any language targeting
the CLI should conform in order to interoperate with
other CLS-compliant languages. The CLS rules
define a subset of the Common Type System.
9. .NET Frameworks Architectures
/3
Lecturer: Jareed Eve;9
Common Language Infrastructure (CLI)
Common Type System (CTS)
A set of data types and operations that are shared
by all CTS-compliant programming languages.
Virtual Execution System (VES)
The VES loads and executes CLI-compatible
programs, using the metadata to combine
separately generated pieces of code at runtime.
10. .NET Frameworks Architectures
/4
Lecturer: Jareed Eve;10
Common Language Infrastructure (CLI)
Assembly
An assembly in the Common Language
Infrastructure (CLI) is a compiled code library used
for deployment, versioning, and security.
There are two types: process assemblies (EXE)
and
library assemblies (DLL).
A process assembly represents a process that will
use classes defined in library assemblies.
CLI assemblies contain code which is generated
from a CLI language, and then compiled into
machine language at run time by the just-in-time
compiler. In the .NET framework implementation,
this compiler is part of the Common Language
11. .NET Frameworks Architectures
/5
Lecturer: Jareed Eve;11
Common Language Infrastructure (CLI)
Security
.NET has its own security mechanism with 2 general
features:
Code Access Security (CAS), and
Validation and verification.
Code Access Security is based on evidence that is
associated with a specific assembly.
Typically the evidence is the source of the assembly.
Code Access Security uses evidence to determine
the permissions granted to the code. Other code can
demand that calling code is granted a specified
permission.
12. .NET Frameworks Architectures
/5
Lecturer: Jareed Eve;12
Common Language Infrastructure (CLI)
Memory Management
Automatic memory management is one of the
services that the common language runtime
provides. The garbage collector manages the
allocation and release of memory for an application.
Allocating Memory
When you initialize a new process, the runtime
reserves a contiguous region of address space for
the process.
Releasing Memory
The garbage collector's optimizing engine
determines the best time to perform a collection
based on the allocations being made. When the
garbage collector performs a collection, it releases
15. Class Library
Lecturer: Jareed Eve;15
The .NET Framework includes a set of standard class
libraries.
The class library is organized in a hierarchy of
namespaces. Most of the built-in APIs are part of
either System.* or Microsoft.* namespaces.
These class libraries implement a large number of
common functions, such as file reading and writing,
graphic rendering, database interaction, and XML
document manipulation, among others. The .NET
class libraries are available to all CLI compliant
languages.
The .NET Framework class library is divided into two
parts:
the Base Class Library and
the Framework Class Library
16. Common Language Runtime /1
Lecturer: Jareed Eve;16
The Common Language Runtime (CLR) is the
virtual machine component of Microsoft's .NET
framework and is responsible for managing the
execution of .NET programs.
In a process known as Just-in-time compilation, the
compiled code is converted into machine instructions
that, in turn, are executed by the computer's CPU.
The CLR provides additional services including
memory management, type safety and exception
handling. It provides exception handling, garbage
collection and thread management. CLR is common
to all versions of the .NET framework.
The CLR is Microsoft's implementation of the
Common Language Infrastructure (CLI) standard.
The Base Class Library (BCL) includes a small subset of the entire class library and is the core set of classes that serve as the basic API of the Common Language Runtime. The classes in mscorlib.dll and some of the classes in System.dll and System.core.dll are considered to be a part of the BCL. The BCL classes are available in both .NET Framework as well as its alternative implementations including .NET Compact Framework, Microsoft Silverlight and Mono.The Framework Class Library (FCL) is a superset of the BCL classes and refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation among others. The FCL is much larger in scope than standard libraries for languages like C++, and comparable in scope to the standard libraries of Java.
All programs written for the .NET framework, regardless of programming language, are executed by the CLR.
All programs written for the .NET framework, regardless of programming language, are executed by the CLR.