I have been vague about these two concepts since I came into contact with. net. I once thought they were one thing,
The full names of the two are as follows:
CLR = Common Language Runtime
CLI = Common Language infrastructure
In <Shared Source CLI> (This book is strongly recommendedCLI is a standardised specification for a virtual execution environment. Therefore, CLI is a standard for virtual execution environments. It was created by Microsoft, but we can also say it is ECMA cli. ECMA refers to European Computer Manufactures Association (European Computer Manufacturers Association ), they have passed the CLI as a standard, and ECMA has a lot to do with ISO. cli has passed the ISO approval as the standard of ISO/IEC 23271: 2003. (C # is also recognized by ISO as an international standard, ISO/IEC 23270: 2003)
We can say this:
ECMA is the basis of Shared Source CLI, while Shared Source CLI is the basis of commercial. Net frameworks.
CLR is defined on the Internet as follows:
-The Common Language Runtime (CLR) provides a solid foundation for developers to build various types of applications.
-The CLR is a multi-language execution environment.
I think the multi-language execution environment mentioned above refers to. net, such as C #, VB, VC ++, ASP, etc. Therefore, CLR also implements the ECMA standard. This is the same as CLI.
What are the differences between Clr and CLI? The teacher wrote the notes as follows:
-Jit and garbage collector replaced with more portable, more approachable, implementations.
-Customized windows-specific features not supported ded: COM InterOP, winforms, "it just works !, "And other integration
-Inclucial features not supported ded, such as ADO. net, Enterprise Services, ngen (JIT-ahead), and ASP. NET.
(The younger brother is not very good at English. Do not throw eggs if you are wrong)
-Replace JIT (stand for just in time) and garbage collection with easier and closer execution.
-Abandoned many windows features, such as com InterOP, forms, and "it just works! .
-Some commercial features do not include: Ado. net, Enterprise Services, ngen, and ASP. NET.
This is my current general understanding of CLI and CLR. If you have any better understanding, please tell me.