C# 标准库
把跨 runtime 的玩意直接作对比 (ASP.NET MVC on .NET Framework runtime VS ASP.NET Core Razor Pages on .NET Core runtime ) 是没有意义的
先学 JavaSE 再学 JavaEE
https://www.zhihu.com/question/31455874/answer/62609703
聊一聊 2个 runtime 通用的 BCL 是很好的,现在就是不想去管 2个 runtime 的差异 (更不用去管 OpenJDK 提供的某个特殊的类,Oracle JDK 提供的某个特殊的类)
这就是 C# 标准库阿(对标 JavaSE),不需要聊 哪个 runtime (就像 不需要聊是 OpenJDK 还是 Oracle JDK)
各种 ASP.NET MVC 是对标 JavaEE
用类库,先看 它的 runtime 。如果是通用的 runtime ,那么 它就是 JavaSE (对标 .NET Standard 2.0)
位于 BCL 上层的应用特定的库(例如 ASP.NET)并不能在所有 .NET 实现中使用:OpenJDK 提供的某个函数 不并在 Oracle JDK 里使用。
https://docs.microsoft.com/zh-cn/dotnet/standard/framework-libraries
标准库
- C# BCL
- JavaSE
- python 标准库
- .NET Standard 2.0
第三方库
- 各种 Java 第三方库
- JavaEE
- C# FCL
- 各种 python 第三方库
编程语言的执行
标准库里的好玩的:
C# 标准库在2个runtime上通用
C# 标准库是 OOP 的形势,有很多类,也叫做类库
C# 标准库也就是通用性很大的类库
用 “适配了几个 runtime ” 来判断一个组件是 BCL 还是 FCL ,是错误的。有一些 FCL 仅仅是 已经适配完成了而已,它不会因 适配完成 而 从 FCL 变成 BCL 。
一般人先学的应该是 BCL ,然后是 已经适配了几个 runtime 的 FCL (通用性强的 FCL),最后是 某一个 runtime 的 FCL (通用性弱的 FCL)
有的 FCL 会适配几个 runtime ,比如:
Microsoft.Extensions.DependencyInjection 组件
有的 FCL 永远不会适配几个 runtime ,比如:
System.Web.Routing 组件
是典型的 通用性弱的 FCL
System.Web.Routing 组件 这就是仅仅适用于 .NET Framework runtime 的类库。
一些 C# 库在某些方面,无法抹杀2个runtime的差异,比如 FCL
一些 C# 库在某些方面,无法抹杀2个runtime的差异,比如 BCL
这样的说法是可以的:C# 标准库抹杀了2个runtime的差异的方面,也叫做 BCL 基础类库。System.Web.Routing 就是 FCL ,它仅能在 .NET Framework runtime 上使用,无法在 .NET Core runtime 上使用的。ASP.NET Core 它仅能在 .NET Core runtime 上使用的,无法在 .NET Framework 上使用。或者 WPF (作为一个 FCL) 能在 .NET Framework runtime 上使用、能在 .NET Core runtime on Windows 上使用,不能在 .NET Core runtime on linux 上使用
注意:
1 FCL 即使已在2个runtime上通用,它也是 FCL ,然后,这样的 FCL 在使用上,给人的感受,wow 就是 BCL 阿!
2 FCL 即使已被适配的 runtime 再多,它也是 FCL ,因为如果微软新出了一个 runtime ,FCL 被实现的优先级肯定是在 BCL 之后的。
3 其他编程语言的 “标准库” 应该是对标 C# BCL ,并不包括(通用性强或弱的) FCL
4 把跨 runtime 的玩意直接作对比 (ASP.NET MVC on .NET Framework runtime VS ASP.NET Core Razor Pages on .NET Core runtime ) 是没有意义的 ...
典型的 FCL
System.Web.Routing
WPF, WinForms
ADO.NET
ASP.NET
ASP.NET Core
EF
EF Core
参考
https://www.cnblogs.com/makesense/p/6237939.html
https://stackoverflow.com/questions/807880/bcl-base-class-library-vs-fcl-framework-class-library
At Microsoft, I believe the CLR team (of responsiblity of different runtime) owns the BCL, while many teams (of responsiblity of different runtime) own different parts of the FCL.
https://stackoverflow.com/questions/807880/bcl-base-class-library-vs-fcl-framework-class-library
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。