21 February 2014

Common Language Infrastructure

     The Common Language Infrastructure (CLI) is an open specification developed by Microsoft and standardized by ISO] and ECMA that 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 architectures.

Among other things, the CLI specification describes the following four aspects:


     A set of data types and operations that are shared by all CTS-compliant programming languages.

    Metadata Information about program structure is language-agnostic, so that it can be referenced one's not using.

Common Language Specification (CLS) 

   A set of base rules to which any language targeting the CLI should conform in order to interoperate between languages and tools, making it easy to work with code written in a language with other CLS-compliant languages. The CLS rules define a subset of the Common Type System.

Virtual Execution System (VES) 

   The VES loads and executes CLI-compatible programs, using the metadata to combine separately generated pieces of code at runtime.

    All compatible languages compile to Common Intermediate Language (CIL), which is an intermediate language that is abstracted from the platform hardware. When the code is executed, the platform-specific VES will compile the CIL to the machine language according to the specific hardware and operating system.

Functions of the Common Type System 
  • To establish a framework that helps enable cross-language integration, type safety, and high performance code execution.
  • To provide an object-oriented model that supports the complete implementation of many programming languages.
  • To define rules that languages must follow, which helps ensure that objects written in different languages can interact with each other.
  • The CTS also defines the rules that ensures that the data types of objects written in various languages are able to interact with each other.
  • The CTS also specifies the rules for type visibility and access to the members of a type, i.e. the CTS establishes the rules by which assemblies form scope for a type, and the Common Language Runtime enforces the visibility rules.
  • The CTS defines the rules governing type inheritance, virtual methods and object lifetime.   Languages supported by .NET can implement all or some common data types…

When rounding fractional values, the halfway-to-even ("banker's") method is used by default, throughout the Framework. Since version 2, "Symmetric Arithmetic Rounding" (round halves away from zero) is also available by programmer's option.

     it is used to communicate with other languages

 Base Class Library:

       The Base Class Library (BCL) is a Common Language Infrastructure (CLI) standard library available to all CLI languages. CLI includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier. 

      It is much larger in scope than standard libraries for most other languages, including C++, and is comparable in scope and coverage to the standard libraries of Java.

      The .NET Framework, being the first implementation of CLI, is the origin of the BCL. It is sometimes incorrectly referred to as the Framework Class Library (FCL), but the FCL is actually a superset including Microsoft specific namespaces.

      The BCL is updated with each version of the .NET Framework.

Framework Class Library:

       The Framework Class Library (FCL) is a standard library and one of two core components of Microsoft .NET Framework. The FCL is a collection of reusable classes, interfaces and value types. The Base Class Library is a part of FCL and provides the most fundamental functionality, which includes classes in namespaces System, System.CodeDom, System. Collections, System. Diagnostics, System. Globalization, System.IO, System. Resources and System.Text.


No comments:

Post a Comment