I'm a little confused on the structure of the .NET framework. Each website I've visited (and book I've read) has a different take on this. Not only that, but there are dozens of elements that start with the name "Common".
Let's see if I have this straight. The CLR and CLI are completely different entities. CLI is a set of standards (and submitted to the ECMA for standardization), and the CLR is a platform in which CLI compliant code can be managed and run.
If this is correct, where does the Base Class Library fit in? It is it's own separate entity, or a part of the CLR or CLI?
-
-
.NET: CLR, CLI, EIEIO
-
Looking over the ECMA specs, I think I may have this down.
The .NET framework is broken up into two components:
CLR
CLI
The CLI is a set of specifications for the .NET environment and the code it can execute. It includes specifications for types, metadata, IL, and the engine that checks and executes IL.
Microsoft's implementation of the CLI standards is called the CLR.
The BCL is not required (as far as I can see) by the ECMA/ISO standards, but is provided by Microsoft to aid development.
Am I on the right track?
-
Almost there.

The CLI is the standard, the CLR MS' implementation, you've got that right. However, the Base Class Library is part of the CLI. It is the absolute most basic set of libraries that every conforming implementation of the CLI must include. More specifically, every conforming implementation must implement what the standard calls the "kernel profile" (section IV.3.1) which includes the BCL (section IV.5.3) and the Runtime Infrastructure library (section IV.5.2). The CLI standard also defines several other libraries (section IV.5) which are optional. The complete contents of these libraries are defined not in the standard text but in the XML specification enclosed with it.
The .Net Framework Class Library is a superset of the libraries defined in the CLI (including the BCL); it includes those libraries as well as several that are not standardised, such as System.Windows.Forms and System.Web.
Mono has in their work of duplicating .Net been very careful to separate that which is standardised and that which is not, so that in case they receive a cease & decist on those portions of .Net that aren't standardised they can at least continue with those portions that are without any effort of removing the non-standard bits. -
Does Mono have an ongoing project to duplicate or make an alternative to the Windows Presentation Foundation classes?
-
WestPhilly wrote:Does Mono have an ongoing project to duplicate or make an alternative to the Windows Presentation Foundation classes?
Allegedly it will:p
Sheva
-
Sven Groot wrote:Almost there.

The CLI is the standard, the CLR MS' implementation, you've got that right. However, the Base Class Library is part of the CLI. It is the absolute most basic set of libraries that every conforming implementation of the CLI must include. More specifically, every conforming implementation must implement what the standard calls the "kernel profile" (section IV.3.1) which includes the BCL (section IV.5.3) and the Runtime Infrastructure library (section IV.5.2). The CLI standard also defines several other libraries (section IV.5) which are optional. The complete contents of these libraries are defined not in the standard text but in the XML specification enclosed with it.
The .Net Framework Class Library is a superset of the libraries defined in the CLI (including the BCL); it includes those libraries as well as several that are not standardised, such as System.Windows.Forms and System.Web.
Mono has in their work of duplicating .Net been very careful to separate that which is standardised and that which is not, so that in case they receive a cease & decist on those portions of .Net that aren't standardised they can at least continue with those portions that are without any effort of removing the non-standard bits.
When you talk about the "absolute most basic set of libraries", is that referring to the Common Type System specification? Is there a list of the types that every CLI implementation must support?
-
Section I.8.2.2 of the standard lists the built-in value and reference types of the CTS. This is not the same as the BCL; to quote the standard: "[The BCL] provides types to represent the built-in data types of the CLI, simple file access, custom attributes, security attributes, string manipulation, formatting, streams, collections, among other things."
The exact contents of the BCL and other libraries defined by the CLI are in the XML specification. It and the text of the standard are available here. -
Sven Groot wrote:Section I.8.2.2 of the standard lists the built-in value and reference types of the CTS. This is not the same as the BCL; to quote the standard: "[The BCL] provides types to represent the built-in data types of the CLI, simple file access, custom attributes, security attributes, string manipulation, formatting, streams, collections, among other things."
The exact contents of the BCL and other libraries defined by the CLI are in the XML specification. It and the text of the standard are available here.
Ah! Thank you. I didn't look at the specification long enough and didn't notice there was more text after Partition I (It was late last night when I started).
Anyway, thanks! This is definantly a huge help.
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.