.NET Core和.NET Framework在内部工作方面有何不同?

6
.NET Core在内部实现方面与.NET Framework在程序构建和运行方面有何不同之处?我知道普通的.NET Framework/C#项目基本上会被编译成CIL代码并分发,然后由JITer在运行时进行编译,最终按函数逐个将它们转换为机器代码(除非程序员指定了预编译选项)。对于.NET Core应用程序来说,这也都是真的吗?有什么重大的区别吗?
需要注意以下几点:
1. 是的,我知道这两个东西都很复杂,我不期望回答者详细解释每一个小组件。
2. 我听说过.NET Framework的CLR被称为虚拟机,但我知道这是有争议的,我在像这样的帖子中看到了此类争论,CIL与Java的字节码的比较也是如此。这些是无关紧要的争论,与问题无关。
3. 我发现有类似的问题,但这些问题似乎关注于.NET Core与我们作为客户端程序员在功能/可用性方面的差异。这个问题与此无关,而是询问.NET Core在内部实现方面与.NET Framework有何不同。
谢谢。

它们是.NET平台的两个不同实现。如果你想确切地知道它们的区别,那就比较困难了——.NET Core的源代码是免费提供,CLR的源代码则不是(公开了最新版本的.NET 2.0形式的SSCLI,但祝你好运能找到它)。 - Jeroen Mostert
1个回答

2
IL或JIT过程没有区别。我有旧的.NET代码,直接执行IL,在Core上运行良好。它们都完全实现了CLI ECMA标准,它们都具有相同的运行时组件。
在每个平台上,实现可能有非常细微的差异,就像Windows .NET和Mono之间一样,但我不知道有任何差异。
CLI步骤和框架实际上是不同的东西:您可以构建编译为有效IL的C#代码,而没有.NET或Core,但我不确定即使是原始类型也能做什么。
差异几乎完全在于支持的框架 - 虽然完整的.NET绑定到Windows,但.NET Standard库确实是真正的跨平台。
这个问题实在是太大了:已经有人在努力将.NET中的所有内容移植到.NET Standard 1.5上,但其中有很多内容。对于.NET Core来说,有一些地方采用了全新的范例(例如ASP.MVC和ASP Core MVC完全不同)。你最好将问题缩小到特定的领域和平台。
很快,所有.NET都将运行在.NET Standard 2.0库上,而.NET Framework 4/5/无论什么版本只会成为遗留的、仅限于Windows的组件(如WPF、WinForms等)运行在其之上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接